简体中文
RPM 工具使用指南:从 rpm -ivh 到 yum 等价操作 | 安装、升级、查询与 yum 对照实践

1. 简介
RPM(Red Hat Package Manager)是 Red Hat 系 Linux 发行版(如 RHEL、CentOS、Fedora)中基础的包管理工具。它可以直接操作 .rpm 包文件,完成安装、升级、查询、卸载等操作。
虽然现代系统更推荐使用 yum(或 dnf)来管理软件包,但理解 rpm 命令及其与 yum 的对应关系,对于排查问题、离线安装、脚本编写仍然非常重要。
本文将从常用 rpm 命令入手,重点介绍 rpm -ivh、rpm -Uvh 等实践,并给出对应的 yum 等价操作方式。
2. rpm 常用命令速查
2.1 安装
bash
# 安装一个 rpm 包,显示详细信息和进度
rpm -ivh package.rpm
# 参数说明:
# -i, --install 安装
# -v, --verbose 显示详细信息
# -h, --hash 显示安装进度(# 号)注意:
rpm -ivh不会自动解决依赖。如果包有未满足的依赖,会报错并中止。
2.2 升级
bash
# 升级一个 rpm 包(若未安装则安装)
rpm -Uvh package.rpm
# 参数说明:
# -U, --upgrade 升级(若包未安装,则执行安装)
# -v, --verbose
# -h, --hashbash
# 仅升级已安装的包(若未安装则报错,不执行安装)
rpm -Fvh package.rpm
# 参数说明:
# -F, --freshen 仅升级已安装的包2.3 查询
bash
# 查询已安装包的信息
rpm -q package_name
# 查询已安装包的文件列表
rpm -ql package_name
# 查询某个文件属于哪个已安装包
rpm -qf /path/to/file
# 查询未安装的 rpm 包信息
rpm -qpi package.rpm
# 查询未安装的 rpm 包包含的文件
rpm -qlp package.rpm2.4 卸载
bash
# 卸载已安装的包
rpm -e package_name
# 强制卸载(忽略依赖检查,慎用)
rpm -e --nodeps package_name2.5 校验与签名
bash
# 校验已安装包的文件完整性
rpm -V package_name
# 检查 rpm 包签名
rpm --checksig package.rpm3. rpm 与 yum 等价操作对照
yum 是基于 RPM 的包管理器,能自动解决依赖。下表列出 rpm 常见操作与 yum 的等价命令。
| 操作 | rpm 命令 | yum 等价命令 | 说明 |
|---|---|---|---|
| 安装本地 rpm 包 | rpm -ivh package.rpm | yum localinstall package.rpm 或 yum install ./package.rpm | yum 会自动解决依赖 |
| 升级本地 rpm 包 | rpm -Uvh package.rpm | yum localupdate package.rpm 或 yum update ./package.rpm | yum 会自动解决依赖 |
| 仅升级已安装包 | rpm -Fvh package.rpm | yum update package_name(从仓库) | 对本地包无直接等价,可用 yum localupdate |
| 安装仓库中的包 | 不适用(需先下载) | yum install package_name | 从配置的仓库安装 |
| 升级仓库中的包 | 不适用 | yum update package_name | 从仓库升级 |
| 卸载包 | rpm -e package_name | yum remove package_name | yum 会处理依赖 |
| 查询已安装包信息 | rpm -q package_name | yum info installed package_name | 类似 |
| 查询包文件列表 | rpm -ql package_name | yum provides /path/to/file(反向) | yum 无直接等价,可用 repoquery -l |
| 查询文件所属包 | rpm -qf /path/to/file | yum provides /path/to/file | 类似 |
| 列出所有已安装包 | rpm -qa | yum list installed | 类似 |
| 清理缓存 | 不适用 | yum clean all | 仅 yum |
提示:
yum localinstall在较新版本中已统一为yum install ./package.rpm,直接指定本地路径即可。
4. 实践示例
4.1 使用 rpm 安装本地包
bash
# 下载一个 rpm 包(示例)
wget https://example.com/packages/nginx-1.20.1-1.el7.x86_64.rpm
# 使用 rpm 安装
rpm -ivh nginx-1.20.1-1.el7.x86_64.rpm如果出现依赖错误,例如:
error: Failed dependencies:
pcre >= 8.32 is needed by nginx-1.20.1-1.el7.x86_64此时应改用 yum 安装:
bash
yum install ./nginx-1.20.1-1.el7.x86_64.rpmyum 会自动从仓库下载并安装缺失的依赖。
4.2 使用 rpm 升级包
bash
# 升级(若未安装则安装)
rpm -Uvh nginx-1.22.0-1.el7.x86_64.rpm
# 仅升级已安装的 nginx
rpm -Fvh nginx-1.22.0-1.el7.x86_64.rpm对应的 yum 操作:
bash
# 升级本地包(自动解决依赖)
yum update ./nginx-1.22.0-1.el7.x86_64.rpm4.3 查询与校验
bash
# 查询 nginx 是否安装
rpm -q nginx
# 列出 nginx 安装的文件
rpm -ql nginx
# 查看某个配置文件属于哪个包
rpm -qf /etc/nginx/nginx.conf
# 校验 nginx 包文件完整性
rpm -V nginx4.4 卸载
bash
# 使用 rpm 卸载
rpm -e nginx
# 使用 yum 卸载(推荐,会处理依赖)
yum remove nginx5. 注意事项与最佳实践
- 优先使用 yum/dnf:除非需要离线安装、脚本控制或排查问题,否则优先使用
yum,因为它能自动解决依赖。 rpm -ivh与rpm -Uvh的区别:-i仅安装,包已存在会报错;-U升级或安装;-F仅升级已安装的包。- 避免
--nodeps和--force:强制操作可能导致系统包管理状态混乱,仅在明确后果时使用。 - 导入 GPG 密钥:安装第三方 rpm 包前,确保导入可信 GPG 密钥,使用
rpm --import导入。 - 离线环境:在无网络环境可使用
yumdownloader或repotrack提前下载依赖,再用yum localinstall安装。 - 查询未安装包:使用
rpm -qpi、rpm -qlp可在安装前查看包信息与文件列表。
6. 总结
rpm 是 Linux 包管理的基石,掌握 rpm -ivh、rpm -Uvh、rpm -q、rpm -e 等命令,能帮助你在离线安装、故障排查时游刃有余。而 yum 作为上层工具,在依赖处理和仓库管理上更为便捷。理解两者的等价关系,可以根据场景灵活选择。
希望本文能帮助你更好地使用 RPM 与 YUM 工具。
