RPM 是一种用于 Linux 系统的软件包管理器,主要用于安装、升级、查询、验证、卸载和管理软件包。
1. RPM 的基本功能
1.1 软件包安装
- 安装新软件包。
- 安装时会自动检查依赖关系,提示需要的依赖。
- 命令:
rpm -ivh package.rpm
-i
:安装。-v
:显示详细信息。-h
:显示安装进度条。
1.2 软件包升级
- 升级已安装的软件包,支持覆盖旧版本。
- 如果当前版本不存在,会直接安装。
- 命令:
rpm -Uvh package.rpm
-U
:升级或安装。-v
、-h
:同上。
1.3 查询软件包
- 查询已安装的软件包或 RPM 文件的相关信息。
- 示例命令:
# 查询是否安装某个包 rpm -q package_name# 查询包提供的文件 rpm -ql package_name# 查询某个文件属于哪个包 rpm -qf /path/to/file# 查看包详细信息 rpm -qi package_name# 查询包依赖 rpm -qR package_name
1.4 验证软件包
- 检查文件的完整性或是否被修改。
- 命令:
rpm -V package_name
S
:大小被修改。M
:权限被修改。5
:校验和改变。T
:修改时间被改变。
1.5 卸载软件包
- 卸载已安装的软件包。
- 会检查其他包是否依赖于此包。
- 命令:
rpm -e package_name
2. RPM 的高级功能
2.1 依赖管理
- RPM 会检查依赖关系,但不会自动解决,需要手动安装依赖。
- 命令:
rpm -ivh package.rpm
error: Failed dependencies:dependency_name is needed by package_name
2.2 查询安装位置
- 查看软件包的安装文件及其路径。
- 命令:
rpm -ql package_name
2.3 自定义数据库路径
- 可以指定 RPM 数据库的路径,以便在非标准环境下管理包。
- 示例:
rpm --dbpath /custom/path/to/rpmdb -qa
2.4 生成 RPM 包
- 创建 RPM 包时,使用
rpmbuild
工具,RPM 规格文件(SPEC
文件)包含了包的构建过程。 - 示例生成命令:
rpmbuild -ba package.spec
2.5 验证依赖关系
- 验证安装的包是否缺少依赖:
rpm -Va
2.6 导出签名密钥
- 签名的 RPM 包需要使用密钥验证。
- 导出公钥以供验证:
rpm --export-key > key_file.gpg
3. 常见 RPM 管理任务
3.1 清理缓存
- 删除 RPM 产生的临时文件和未使用的软件包文件:
rpm --rebuilddb
3.2 强制安装/卸载
- 忽略依赖强制安装:
rpm -ivh --nodeps package.rpm
- 强制卸载:
rpm -e --nodeps package_name
3.3 转换格式
- 将 RPM 包转换为 CPIO 格式以提取文件:
rpm2cpio package.rpm | cpio -idmv
4. RPM 与 YUM 的关系
- RPM 是底层的包管理工具,用于直接操作软件包。
- YUM 是基于 RPM 的前端工具,可以自动解决依赖问题,并支持在线安装和更新。
- YUM 与 RPM 的区别:
- RPM 需要手动处理依赖,YUM 自动解决。
- YUM 支持远程仓库,RPM 主要用于本地包操作。
5. 小结
RPM 是 Linux 系统中强大的软件包管理工具,提供了从安装、查询、卸载到验证的全方位功能。在日常运维中,搭配 YUM 或 DNF 可以更高效地进行软件包管理。