RPM 全称 Red Hat Package Manager(红帽软件包管理器),是一种用于 Linux 系统的软件包管理工具。它由 Red Hat 公司开发,最初用于 Red Hat Linux,现已成为众多 Linux 发行版的标准包管理格式
一、查询与信息
1. 基础查询
rpm -q <包名> # 查询包是否已安装
rpm -qa # 列出所有已安装的包
rpm -qa | grep <关键词> # 模糊查找
rpm -qf <文件路径> # 查询某个文件属于哪个包
rpm -qc <包名> # 列出包的配置文件
rpm -qd <包名> # 列出包的文档文件
rpm -ql <包名> # 列出包安装的所有文件
rpm -qi <包名> # 查看包的详细信息
rpm -qR <包名> # 查看包的依赖2. 未安装包信息查询
rpm -qip <rpm文件> # 查看未安装包的信息
rpm -qlp <rpm文件> # 列出未安装包将安装的文件
rpm -qcp <rpm文件> # 查看未安装包的配置文件
rpm -qRp <rpm文件> # 查看未安装包的依赖3. 包状态验证
rpm -V <包名> # 校验已安装包的文件(大小、权限、MD5等)
rpm -Va # 校验所有已安装包
rpm -K <rpm文件> # 检查包的签名和完整性二、安装与升级
rpm -ivh <包文件> # 安装新包(显示进度条)
# 参数组合:
# -i : install
# -v : verbose
# -h : hash 进度条
rpm -Uvh <包文件> # 升级包(存在则升级,不存在则安装)
rpm -Fvh <包文件> # 仅升级已安装的包,不存在则忽略
# 常用附加参数
rpm -ivh --nodeps <包> # 忽略依赖强制安装(不推荐)
rpm -ivh --force <包> # 强制安装(覆盖已存在文件等)
rpm -Uvh --oldpackage <包> # 降级安装
rpm -ivh --prefix <目录> # 安装到指定前缀目录
rpm -ivh --excludedocs # 不安装文档文件
rpm -ivh --test <包> # 测试安装,不实际操作三、卸载
rpm -e <包名> # 卸载(不检查依赖)
rpm -e --nodeps <包名> # 忽略依赖强制卸载(危险)
rpm -e --test <包名> # 模拟卸载,查看是否存在依赖问题四、RPM 包构建与重打包
1. 从源码构建
rpmbuild -ba <spec文件> # 构建源码包与二进制包
rpmbuild -bb <spec文件> # 仅构建二进制包
rpmbuild -bs <spec文件> # 仅构建源码包2. 重新打包
rpm2cpio <rpm文件> | cpio -idmv # 不解包直接提取文件
# 将已安装包重新打包
rpm -e --repackage <包名> # 卸载时自动保存为RPM(依赖插件)五、RPM 数据库维护
rpm --initdb # 初始化RPM数据库(无则创建)
rpm --rebuilddb # 重建损坏的RPM数据库
rpm --verifydb # 验证数据库完整性六、签名与安全
rpm --import <公钥文件> # 导入GPG公钥
rpm -q gpg-pubkey* # 列出所有已导入的密钥
rpm --resign <rpm文件> # 对包重新签名
rpm --addsign <rpm文件> # 对未签名的包添加签名七、实用组合
# 查询指定文件来自哪个包
rpm -qf /etc/ssh/sshd_config
# 查找并列出某个包的所有配置文件位置
rpm -qc openssh-server
# 查看最近安装的包(按时间排序)
rpm -qa --last | head
# 列出所有未正确安装或损坏的包
rpm -qa --state missing
# 查找占用磁盘空间最大的已安装包
rpm -qa --queryformat '%{size} %{name}\n' | sort -nr | head -10查询格式化输出 --queryformat 常用标签
示例:
rpm -qa --queryformat "%-30{name} %10{size} %{vendor}\n"