rpm和deb的分裂有望被flatpak和snap替代
2016-07-03 21:55:38 阿炯

本站赞助商链接,请多关照。 Linux社区出现了两种新的应用打包格式,其一是Ubuntu力推的snap格式,另一种是Red Hat主导开发的Flatpak格式,两种包格式都利用了沙盒隔离应用,增强安全性。

Flatpak刚刚发布了第一个正式版本,首个支持Flatpak的发行版是Fedora 24,其它发行版Arch、Debian和Mageia和Ubuntu也可以安装。 Flatpak是Red Hat首席软件工程师Alexander Larsson提出的。Flatpak沙盒框架将应用与主机和其它应用隔离开来,不管应用是运行在X还是Wayland上。Flatpak应用无法访问沙 盒之外的主机文件和进程。

支持snap包的开源软件包括了Firefox、LibreOffice、Krita和Mycroft等,而提供了 Flatpak包的应用有LibreOffice、GIMP、InkScape、MyPaint和Darktable。

笔者认为这是用一种新的分裂取代旧的分裂,何况沙盒机制有自己的问题,是一个改进补充,不可能取代rpm和deb。更何况开源的精神是提供选项,而不是垄断。

软件的安装和管理通常依赖于软件包(Package),而 .deb 和 .rpm 是两种最主流的软件包格式。它们分别服务于不同的 Linux 发行版生态系统,不仅文件后缀不同,所使用的工具链、依赖管理方式、系统集成方式等方面也各有特点。

基础定义

格式    全称    主要用途
.deb    (Debian Binary Package)    用于Debian及其衍生系统
.rpm    (RPM Package Manager)    用于RedHat等及其衍生系统


软件包管理工具的不同

操作    .deb 系列    .rpm 系列
低层包管理器    dpkg    rpm
高层包管理器    apt、apt-get、gdebi    yum、dnf、zypper
自动解决依赖    apt系列具备强大的自动依赖解决能力    yum/dnf支持自动依赖解析


软件包内部结构差异

尽管 .deb 和 .rpm 都包含软件的可执行文件、元信息、安装脚本等,但它们的打包方式和控制文件结构并不相同:

.deb 软件包结构:
.deb 文件实际上是一个 ar 档案,包含:
├── control.tar.gz  → 控制信息(如版本、依赖、脚本)
├── data.tar.gz     → 软件内容(实际文件)
├── debian-binary   → 版本信息(固定为2.0)

.rpm 软件包结构:
.rpm 文件是经过 CPIO 和 RPM 格式封装的结构,包含:
├── 包描述信息(名称、版本、架构等)
├── 安装/卸载脚本(%pre、%post、%preun、%postun)
├── 文件列表及路径
├── 安装数据(通过 CPIO 解包)


平台兼容性

.deb 和 .rpm 是彼此不兼容的,不同包管理器和元数据结构使它们无法直接在非原生系统中使用。但可以通过跨格式转换工具实现临时兼容。

注意:转换后的包可能在目标系统中运行异常,特别是涉及依赖项或系统级服务时。


系统集成差异

.deb 系列操作系统默认使用 systemd 或 sysvinit 管理服务,依赖包也多以 .deb 分发。

.rpm 系统通常更加倾向于企业级应用部署,具备更强的 SELinux、Firewalld 集成与限制管理。

此外,.rpm 包更早支持数字签名验证(GPG 签名),而 .deb 也已在 apt 中引入类似机制。