概述
本章,您将了解 RPM 包管理器。
RPM 简介
RPM 是 RedHat Package Manager 的简称,最初由 Red hat 公司发展而来,它是一个强大的命令行驱动的软件包管理系统,能够安装、卸载、验证、查询和更新计算机软件包(以一种数据库记录的方式)。每个软件包都包含一个文件存档以及有关该软件包的信息,例如其版本、描述等。RPM 还有相应的库 API,允许高级开发人员通过 C 或 Python 等编程语言管理软件包的事务。
RPM 是自由软件(free software),遵循 GNU GPL 开源许可证协议,目前已经发展为许多 GNU/Linux 发行版的核心组件,包括常见 Red Hat Enterprise Linux、Fedora Project、SUSE Linux Enterprise、openSUSE、CentOS、Tizen、Mageia、CBL-Mariner、RockyLinux 等。
截止本文发布前,RPM 的最新稳定版本为 4.20.1,详情参阅 这里。
RPM 文件结构版本
主要有三个:
-
RPM v3
– 在 RPM 2.1 至 3.x 早期版本中使用,使用的是较为传统的文件结构,主要包括 Lead(引导区)、Signature(签名区)、Header(头部信息区)和 Payload(负载区)四个逻辑部分。lead
:标识 RPM 包,固定为 96 字节长度,并以特定的 “magic number”(魔数)开头Signature
:包含数字签名,用于验证包的完整性Header
– 存储了包的元数据,如包名、版本、文件列表等Payload
– 压缩的文件归档,默认使用 gzip 压缩 cpio 归档
-
RPM v4
– 在 RPM 4.x 版本中使用,其在RPM v3
的基础上进行了拓展和优化,同样包含 Lead、Signature、Header 和 Payload 四个部分,虽然基本结构相似,但在元数据结构、依赖管理和兼容性方面有了显著提升。与RPM v3
的区别如下:Signature
和Header
引入了不可变区域(immutable header region),增强了数据结构的稳定性和安全性- 引入了更加多的依赖标签,如 BuildRequires、Recommends/Suggests 等,提高了依赖管理的灵活性
RPM v3
中,签名与元数据分离存储,但在RPM v4
中,签名被集成到文件头部,提高了校验效率和安全性- 新增 SHA1 和 SHA256 等更加强大的哈希算法
- 支持 RSA 和 DSA(包括EcDSA)等多种签名算法
- 引入 64 位整数支持(rpm >= 4.6),可处理大于 4GB 的软件包(rpm >= 4.6),可处理大于 4GB 的单个文件(rpm >= 4.12)
- 保持对
RPM v3
的兼容
-
RPM v6
– 在 RPM 6.x 版本中使用,未来会使用的文件结构,现处于 BETA 阶段。同样包含 Lead、Signature、Header 和 Payload 四个部分。与RPM v4
的区别如下:- 进一步升级加密标准,移除了过时的加密算法
- 简化了对大于 4GB 文件的处理方式
- 支持 OpenPGP 签名
- 签名标签不在与其他标签冲突
- 进一步增强 Header 部分的功能与灵活性
- 所有大小均使用 64 位整数存储,进一步提高了扩展性
- 字符串始终采用 UTF-8 编码,提高国际化和本地化支持
术语
-
构建(Build) – 指将源代码转换为可运行或可部署软件产物的全过程,强调从源码到最终产物的完整生命周期,这通常包括:
- 编译(源代码转为二进制代码)
- 链接(合并目标文件和库)
- 测试(验证可行性)
- 打包(整合资源和依赖生成软件包)以及最终的部署准备
- 打包(Package/Packaging) – 构建过程中的特定步骤,指将编译链接好的可执行文件/库、依赖库、配置文件、资源文件(如图片、文档)等整合(或组织)成一个便于分发(或部署)的单一文件包或容器镜像的过程。
- 软件包(Package,特定语境扩展为 Software Package) – 构建过程的直接产物之一,打包步骤的直接结果。
简单区分:
- 构建 = 做饭的全过程(买菜、洗菜、切菜、炒菜、装盘)
- 打包 = 装盘(将做好的菜放入盘中以便端上桌)
- 软件包 = 装好盘的菜
相关软件
RPM 常见前端
- YUM – 基于 Python 2.x 的 RPM 前端工具
- libzypp/zypper – 基于 C/C++ 的 RPM 前端工具,使用 SAT 求解器进行依赖解析,被 openSUSE、SLES 和 Ark Linux使用。
- DNF – 基于 Python 3.x 的 RPM 前端工具
- Urpmi – 基于 Perl 的 RPM 前端工具,被 Mageia 和 Mandriva 使用
- APT-RPM – Debian APT 包管理工具的 RPM 版本,基于 C++
RPM 常见打包工具
- rpmlint – 用于检查 RPM 软件包中常见错误的工具
- rpmdevtools – 帮助 RPM 打包的工具
- cpan2rpm – 从 Perl CPAN 模块生成 RPM 包的工具
- cpanspec – 另一个用于从 Perl CPAN 模块创建 RPM 包的工具
- rpmrebuild – 用于重新构建 RPM 包的工具,主要用于修改或更新现有 RPM 包的内容
- Specfile Editor – Eclipse 的 spec 文件编辑器插件
RPM 常见的构建工具
- Open Build Service – 通用的构建和分发系统
- Copr – 轻量级的构建和分发系统
- Iurt – 软件包构建系统
- Koji – 软件包构建和跟踪系统
- Mock – 简单的 chroot 构建环境管理器,用于构建 RPM
- Mach – 更通用的 chroot 环境管理器,也可用于构建 RPM
- Mezzanine – 一组简化软件包和软件包集合管理的工具
版权声明:「自由转载-保持署名-非商业性使用-禁止演绎 3.0 国际」(CC BY-NC-ND 3.0)

用一杯咖啡支持我们,我们的每一篇[文档]都经过实际操作和精心打磨,而不是简单地从网上复制粘贴。期间投入了大量心血,只为能够真正帮助到您。
暂无评论