Skip to content

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

RPM 工具使用指南示意图

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, --hash
bash
# 仅升级已安装的包(若未安装则报错,不执行安装)
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.rpm

2.4 卸载 ​

bash
# 卸载已安装的包
rpm -e package_name

# 强制卸载(忽略依赖检查,慎用)
rpm -e --nodeps package_name

2.5 校验与签名 ​

bash
# 校验已安装包的文件完整性
rpm -V package_name

# 检查 rpm 包签名
rpm --checksig package.rpm

3. rpm 与 yum 等价操作对照 ​

yum 是基于 RPM 的包管理器,能自动解决依赖。下表列出 rpm 常见操作与 yum 的等价命令。

操作rpm 命令yum 等价命令说明
安装本地 rpm 包rpm -ivh package.rpmyum localinstall package.rpm 或 yum install ./package.rpmyum 会自动解决依赖
升级本地 rpm 包rpm -Uvh package.rpmyum localupdate package.rpm 或 yum update ./package.rpmyum 会自动解决依赖
仅升级已安装包rpm -Fvh package.rpmyum update package_name(从仓库)对本地包无直接等价,可用 yum localupdate
安装仓库中的包不适用(需先下载)yum install package_name从配置的仓库安装
升级仓库中的包不适用yum update package_name从仓库升级
卸载包rpm -e package_nameyum remove package_nameyum 会处理依赖
查询已安装包信息rpm -q package_nameyum info installed package_name类似
查询包文件列表rpm -ql package_nameyum provides /path/to/file(反向)yum 无直接等价,可用 repoquery -l
查询文件所属包rpm -qf /path/to/fileyum provides /path/to/file类似
列出所有已安装包rpm -qayum 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.rpm

yum 会自动从仓库下载并安装缺失的依赖。

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.rpm

4.3 查询与校验 ​

bash
# 查询 nginx 是否安装
rpm -q nginx

# 列出 nginx 安装的文件
rpm -ql nginx

# 查看某个配置文件属于哪个包
rpm -qf /etc/nginx/nginx.conf

# 校验 nginx 包文件完整性
rpm -V nginx

4.4 卸载 ​

bash
# 使用 rpm 卸载
rpm -e nginx

# 使用 yum 卸载(推荐,会处理依赖)
yum remove nginx

5. 注意事项与最佳实践 ​

  1. 优先使用 yum/dnf:除非需要离线安装、脚本控制或排查问题,否则优先使用 yum,因为它能自动解决依赖。
  2. rpm -ivh 与 rpm -Uvh 的区别:-i 仅安装,包已存在会报错;-U 升级或安装;-F 仅升级已安装的包。
  3. 避免 --nodeps 和 --force:强制操作可能导致系统包管理状态混乱,仅在明确后果时使用。
  4. 导入 GPG 密钥:安装第三方 rpm 包前,确保导入可信 GPG 密钥,使用 rpm --import 导入。
  5. 离线环境:在无网络环境可使用 yumdownloader 或 repotrack 提前下载依赖,再用 yum localinstall 安装。
  6. 查询未安装包:使用 rpm -qpi、rpm -qlp 可在安装前查看包信息与文件列表。

6. 总结 ​

rpm 是 Linux 包管理的基石,掌握 rpm -ivh、rpm -Uvh、rpm -q、rpm -e 等命令,能帮助你在离线安装、故障排查时游刃有余。而 yum 作为上层工具,在依赖处理和仓库管理上更为便捷。理解两者的等价关系,可以根据场景灵活选择。

希望本文能帮助你更好地使用 RPM 与 YUM 工具。

最后更新2026/11/13 11:51
如果你觉得这篇文章有帮助,或者想聊聊技术、工作,欢迎通过下面方式联系我:
contact fishfinal
京ICP备2024063630号-1