RPM是CentOS等发行版的核心包管理工具,仅操作本地.rpm文件且不自动解决依赖,需配合dnf/yum使用;支持安装(-ivh)、升级(-Uvh)、卸载(-e)、查询(-qa/-ql/-qf)和校验(-V)等操作。

Linux中RPM(Red Hat Package Manager)是CentOS、RHEL、Fedora等发行版的核心包管理工具,直接操作.rpm文件进行安装、查询、校验和卸载。它不自动解决依赖,因此需配合yum或dnf使用才能高效处理依赖关系。
一、RPM基础安装与卸载命令
RPM命令本身不联网,仅对本地.rpm文件或已安装包操作,适合离线环境或精确控制:
-
安装软件包:
rpm -ivh package.rpm(-i=install, -v=verbose, -h=progress) -
升级软件包:
rpm -Uvh package.rpm(-U=upgrade,若未安装则等效于-i) -
强制安装(忽略冲突/依赖):
rpm -ivh --force --nodeps package.rpm(慎用,易破坏系统稳定性) -
卸载软件包:
rpm -e package-name(注意:此处是包名,非文件名,如httpd而非httpd-2.4.57-1.el9.x86_64.rpm) -
卸载时忽略依赖检查:
rpm -e --nodeps package-name(同样慎用,可能影响其他软件)
二、查询与验证:快速定位包信息
掌握查询能力可避免误装、重复安装或卸载关键组件:
-
查已安装包列表:
rpm -qa | grep keyword -
查某包含哪些文件:
rpm -ql package-name -
查某文件属于哪个包:
rpm -qf /path/to/file(例如rpm -qf /usr/bin/python3) -
查包的依赖需求:
rpm -qR package-name(显示Requires项) -
校验已安装包完整性:
rpm -V package-name(输出字符如S表示文件大小变更,M表示权限变更)
三、依赖问题的本质与应对策略
RPM本身不下载或安装依赖,所谓“依赖未满足”错误(如error: Failed dependencies)本质是当前系统缺少该包声明的.so库、二进制命令或特定版本的其他RPM包。
- 手动解决:用
rpm -qR查看缺失项 → 用rpm -qf或dnf provides反查提供该文件的包名 → 下载对应.rpm并安装 - 推荐方式:改用
dnf install package.rpm或yum localinstall package.rpm(旧版),它们会自动解析本地.rpm的依赖,并从仓库补全 - 临时规避:仅限测试环境,用
--nodeps跳过检查,但后续运行时仍可能因缺库而报symbol not found或No such file or directory
四、与DNF/YUM协同使用更稳妥
现代RHEL/CentOS/Fedora默认用dnf(yum的继任者)作为前端,它调用rpm完成实际安装,同时负责依赖计算、仓库同步和GPG校验:
-
从仓库安装(自动解决依赖):
dnf install nginx -
安装本地.rpm并自动补依赖:
dnf install ./myapp-1.0-1.el9.x86_64.rpm -
降级安装指定版本:
dnf downgrade package-name-1.2.3-1.el9 -
查看某包的依赖树:
dnf repoquery --requires --tree package-name -
列出所有可选依赖提供者:
dnf provides "libssl.so.1.1()(64bit)"
单纯依赖rpm命令适合审计、嵌入式部署或紧急修复;日常运维应优先通过dnf/yum操作,兼顾安全、完整与可维护性。










