rpm命令是Red Hat系列Linux发行版中核心的软件包管理工具,支持对.rpm格式的软件包进行安装、卸载、查询、验证、升级等多种操作,不同操作对应不同的参数组合,理解这些参数的用法能大幅提升软件管理效率。

rpm命令基础语法
rpm命令的基本语法格式如下:
rpm [选项] [软件包名称或路径]
其中选项就是各类功能参数,根据操作场景的不同选择对应的参数组合即可。
常用参数分类说明
安装相关参数
安装rpm包时常用以下参数:
- -i:表示安装软件包,是install的缩写
- -v:显示安装过程的详细信息,是verbose的缩写
- -h:安装过程中显示进度条,用#号表示进度
- --force:强制安装,即使软件包已经安装或者存在文件冲突也执行安装
- --nodeps:忽略依赖关系安装,不推荐常规使用,可能导致软件无法正常运行
实际安装软件包的示例代码如下:
# 安装本地的nginx rpm包,显示详细信息和进度条 rpm -ivh nginx-1.20.2-1.el7.ngx.x86_64.rpm # 强制安装已存在的软件包 rpm -ivh --force nginx-1.20.2-1.el7.ngx.x86_64.rpm
查询相关参数
查询已安装或本地rpm包的信息时常用以下参数:
- -q:查询指定的软件包是否已经安装
- -qa:查询系统中所有已安装的rpm包,a是all的缩写
- -qi:查询已安装软件包的详细信息,i是info的缩写
- -ql:查询已安装软件包的所有文件路径,l是list的缩写
- -qf:查询指定文件属于哪个已安装的rpm包,f是file的缩写
- -qp:查询未安装的本地rpm包的信息,需要搭配其他参数使用
查询操作的示例代码如下:
# 查询nginx软件包是否已安装 rpm -q nginx # 查询所有已安装的rpm包,过滤包含ssh的包 rpm -qa | grep ssh # 查询nginx软件包的详细信息 rpm -qi nginx # 查询nginx安装的所有文件路径 rpm -ql nginx # 查询/etc/nginx/nginx.conf文件属于哪个rpm包 rpm -qf /etc/nginx/nginx.conf # 查询本地未安装的rpm包的详细信息 rpm -qpi nginx-1.20.2-1.el7.ngx.x86_64.rpm
卸载相关参数
卸载已安装rpm包时常用以下参数:
- -e:卸载指定的软件包,是erase的缩写
- --nodeps:忽略依赖关系卸载,可能导致依赖该软件包的其他程序无法运行
卸载操作的示例代码如下:
# 正常卸载nginx软件包 rpm -e nginx # 忽略依赖卸载nginx rpm -e --nodeps nginx
升级相关参数
升级rpm包时常用以下参数:
- -U:升级软件包,如果软件包未安装则直接安装,是upgrade的缩写
- -F:升级软件包,仅当软件包已经安装时才执行升级,是freshen的缩写
- -v、-h:和安装参数含义一致,用于显示详细信息和进度条
升级操作的示例代码如下:
# 升级nginx软件包,如果未安装则直接安装 rpm -Uvh nginx-1.22.0-1.el7.ngx.x86_64.rpm # 仅升级已安装的nginx软件包 rpm -Fvh nginx-1.22.0-1.el7.ngx.x86_64.rpm
验证相关参数
验证rpm包完整性或文件是否被修改时常用-V参数,该参数会检查软件包安装的文件大小、权限、MD5值等是否和初始状态一致。
验证操作的示例代码如下:
# 验证nginx软件包的文件是否被修改 rpm -V nginx
如果输出为空,说明所有文件都未被修改,如果有输出则表示对应文件存在异常。
参数使用注意事项
使用rpm命令时需要注意以下几点:
- 安装、卸载、升级操作通常需要root权限,普通用户需要搭配sudo执行
- 尽量避免使用--nodeps和--force参数,除非明确知道操作的影响,否则容易导致系统软件依赖异常
- 查询本地未安装的rpm包时,需要指定rpm包的完整路径或者当前目录下的包名
rpm命令仅能管理本地的rpm包,无法自动解决依赖问题,如果需要自动处理依赖,建议使用yum或者dnf工具,它们底层也是基于rpm实现的。