首页/系统/Linux 运维命令速查/dnf repoquery 精确查询包元数据

dnf repoquery 精确查询包元数据

repoquery 面向脚本的查询子命令:可用版本、依赖树、文件清单、被谁依赖,比 list/search 更精确。

Linux 运维命令速查系统更新于 2026-10-13

repoquery 是什么

repoquery 是面向脚本的包查询子命令,与给人看的搜索和列表不同,它专门回答精确问题:某个包在仓库里有哪几个可用版本、它依赖什么、装了哪些文件、被谁依赖。做安全补丁评估(哪些软件依赖了有漏洞的库)、版本比对、变更影响面分析时,这是比翻文本输出更可靠的入口。查询本身只读,不会改动系统,可以放心在生产评估中使用。

基本信息

适用平台使用 dnf 的发行版(RHEL 8/9、CentOS Stream、Fedora)
语法dnf repoquery [选项] 包名
所属组件dnf 及 dnf-plugins-core 提供的子命令
常用选项--available 只看仓库、--installed 只看已装、--requires 依赖、--whatrequires 被依赖
输出控制-l 文件清单,--qf 自定义格式
版本差异dnf4 与 dnf5 的参数细节不同

典型使用场景

  • 升级前评估影响:查某个包被哪些已装包依赖,判断能否安全升级。
  • 安全补丁排查:确认某个库组件被哪些软件使用,圈定影响面。
  • 查看仓库中某个包的可用版本,做版本对齐规划。
  • 列出包安装的文件路径,定位配置模板与二进制位置。
  • 生成报表:用自定义格式输出名称与版本,交给下游统计。

常用写法

常用写法
dnf repoquery --available nginx | head               # 仓库里的可用版本
dnf repoquery --requires nginx | head                # 该包依赖哪些组件
dnf repoquery --whatrequires openssl-libs | head     # 谁依赖了 openssl-libs
dnf repoquery -l nginx | head                        # 包安装的文件清单
dnf repoquery --installed --qf '%{name} %{version}' | head   # 已装包版本报表
dnf repoquery --whatprovides '*/sbin/ip'             # 查文件由哪个包提供
dnf repoquery --available --qf '%{name}-%{version}-%{release}' nginx   # 生成版本号

选项读法

选项作用使用要点
--available只查仓库可用包规划安装与升级时使用
--installed只查已安装包盘点现状与生成报表
--requires查依赖列表评估安装与升级影响
--whatrequires查被依赖关系删除或升级前做影响面分析
-l列出包内文件定位二进制与配置文件路径
--qf自定义输出格式脚本解析时的首选做法
被依赖关系在大仓库上全量查询很慢:把范围收敛到具体包名,并配合输出条数限制,否则可能跑很久还刷满屏幕。
dnf4 与 dnf5 的 repoquery 参数细节有差异,跨发行版脚本要先做版本探测,或把查询封装成小函数统一处理,避免换台机器就报参数不识别。
评估前先确认启用了哪些仓库与本地源:只查一个源就下结论,可能漏掉实际会参与安装的包来源。

易错点

  • 在大仓库上无限制地查询被依赖关系,命令长时间不返回且输出巨大;目标包名要写具体并限制输出行数。
  • 把查询输出当成稳定格式解析:不同版本字段与顺序可能变化,脚本应使用自定义格式输出固定字段。
  • 只查一个仓库就下结论,忽略其他已启用的源,评估结果与实际情况不符。
  • 用新版本语法的参数在旧版本上执行(或反向),参数不被识别导致误判为「仓库里没有这个包」。

数据来源与参考

  • dnf repoquery 文档(dnf-plugins-core / dnf5)
  • man 8 dnf

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌