首页/系统/信创系统运维速查/rpm 查询包信息(-q 系列)
命令与包管理65 条

rpm 查询包信息(-q 系列)

已装世界的查询工具:-qa 全量、-qi 详情、-ql 文件、-qf 归属、-qR 依赖、-qc 配置,排障时首选。

信创系统运维速查系统更新于 2026-10-13

rpm 查询能做什么

rpm 命令的第一职责不是装包而是查询。dnf 解决的是「仓库里有什么」,rpm 解决的是「本机装了什么、文件属于谁、依赖来自哪里」,这也是排障时最有用的视角:服务起不来时先确认二进制有没有被替换、配置文件属于哪个包、库依赖是否齐全,都靠 -q 系列完成。麒麟 V10 服务器版、UOS 服务器版、openEuler 都预装 rpm,命令与 CentOS、RHEL 完全一致。

基本信息

所属rpm 包管理系统
适用平台Kylin V10 服务器版 / UOS 服务器版 / openEuler / RHEL
语法rpm -q[子选项] [包名|文件路径]
数据库位置/var/lib/rpm(记录已安装包与文件清单)
权限查询普通用户可用;-Va 全量校验建议 root
与 dnf 分工查询本机用 rpm,查询仓库与装包用 dnf

典型使用场景

  • 确认软件装没装、什么版本:升级前先 rpm -qa 摸清现状
  • 反查命令归属:看到一个陌生脚本或二进制,用 -qf 找出它属于哪个包
  • 确认配置文件清单:改配置前用 -qc 看清哪些文件属于这个包,避免改错同名文件
  • 依赖检查:用 -qR 看包声明的依赖,排查缺少库导致的启动失败
  • 完整性校验:用 -Va 比对文件的校验值与权限,发现被误改或被替换的系统文件
  • 审计离线包:对未安装的 rpm 文件用 -qp 系列看信息与脚本,再决定是否安装

常用查询

常用查询
rpm -qa | grep -i openssh        # 全量列表再过滤,注意大小写
rpm -qi openssh-server           # 包详情:版本、安装时间、描述
rpm -ql nginx | head             # 该包安装的所有文件
rpm -qf /usr/sbin/sshd           # 反查文件属于哪个包
rpm -qc openssh-server           # 只列配置文件
rpm -qR nginx                    # 列出依赖项
rpm -q --scripts openssh-server  # 看包自带的安装脚本
rpm -Va | grep -v '^........c'   # 校验文件完整性,排除正常被改的配置文件

查询选项对照

选项查询对象典型输出
-qa所有已安装包包名加版本,量大需过滤
-qi包的详细信息版本、体积、安装日期、厂商
-ql包内文件清单绝对路径列表
-qf指定文件属于哪个包包名与版本
-qc配置文件清单常用于备份与比对
-qR依赖声明用于排查缺库
-qp未安装的 rpm 文件配合 --scripts 看安装脚本
-Va全量完整性校验输出被改动的文件与权限差异
rpm -qf 只能查已经装到本机的文件。要查「某个还没装的文件属于哪个包」,用 dnf provides <绝对路径>;-qf 找不到时先确认文件真实路径,符号链接查到的往往是链接本身。
-Va 的输出里,配置文件的正常修改也会被标记出来,判断时要看第二列:c 表示配置文件,改过是常态;其它位置的文件出现校验差异才值得追查。文件量大时先用 grep 过滤出关心的目录。

易错点

  • rpm -qa 输出动辄上千行,不过滤直接看既慢又容易漏,习惯用 grep 收窄范围并注意大小写
  • 把 rpm 当装包工具用:直接 rpm -ivh 装包不会自动解决依赖,容易留下半装状态,优先用 dnf
  • 用 -qf 查未安装的文件找不到就以为文件有问题,实际该用 dnf provides 反查
  • 误把 -Va 输出里的配置文件差异当成入侵痕迹,白白消耗排障时间

数据来源与参考

  • rpm 手册(man rpm)
  • RPM 打包指南
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌