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 参数细节有差异,跨发行版脚本要先做版本探测,或把查询封装成小函数统一处理,避免换台机器就报参数不识别。
评估前先确认启用了哪些仓库与本地源:只查一个源就下结论,可能漏掉实际会参与安装的包来源。