首页/系统/Linux 运维命令速查/dnf/yum search 与 provides 反查

dnf/yum search 与 provides 反查

找包不靠猜:search 按名称/描述搜索、provides 按文件/能力反查(which 到的命令属于哪个包)、info 看详情。

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

dnf 搜索与反查

在 RPM 体系里找包有两个方向:想知道「有哪些包跟我说的关键词有关」,用 dnf search 在仓库元数据的包名与摘要里搜;想知道「这个命令或这个库文件到底由哪个包提供」,用 dnf provides 反查能力与文件路径。两条路都基于本地缓存的仓库元数据,所以结果准不准取决于缓存有多新——找不到东西时先怀疑缓存,而不是怀疑这个包不存在。

基本信息

用途搜索包、反查文件与能力归属、查看包详情
语法dnf search|provides|info|list|repoquery 关键词或路径
适用平台RHEL 8 及以上、CentOS Stream、Fedora、Rocky、Alma 用 dnf;CentOS 7 用 yum,底层同为 libdnf 前身
前提仓库元数据已下载到本地缓存,可用 dnf makecache 刷新

典型使用场景

  • 装软件前先看有什么:不清楚包名全称时先 search,再决定装哪一个
  • 命令缺失定位:ifconfig、netstat 这类命令没了,用 provides 反查装哪个包能补回来
  • 库文件缺失:应用报找不到某个 .so,用 provides 查它属于哪个包
  • 装机脚本校验:脚本里用 list 或 repoquery 确认目标包在仓库里可获取
  • 排查版本来源:同一个包在多个仓库都有,用 info 看它到底来自哪个源

常用的两个方向

常用的两个方向
dnf search -v nginx                  # 在包名与摘要里搜,-v 输出更详细
dnf provides '*/ifconfig'            # 反查:哪个包提供这个文件
dnf provides /usr/bin/python3        # 直接给绝对路径也行
dnf repoquery -l nginx               # 列出包内文件清单(需 dnf-plugins-core)
dnf list --installed | head          # 只看已安装的包
dnf info kernel-devel                # 看版本、仓库、大小、依赖

已安装文件的归属

已安装文件的归属
rpm -qf /usr/bin/rsync              # 已安装文件属于哪个包
rpm -qi nginx                        # 已安装包的详情
rpm -ql nginx | head                 # 已安装包的文件清单
rpm -q --whatprovides 'libcurl.so.4' # 反查提供某能力的已装包

查询子命令对照

子命令查什么注意
search包名与摘要中的关键词结果多时先看仓库来源
provides某个文件或能力由谁提供支持通配,如 */curl,模式要加引号
info包的版本、仓库、体积、依赖多个仓库有同名包时逐个看
repoquery -l包内的文件清单需要 dnf-plugins-core 支持
rpm -qf已安装文件的归属只对已安装内容有效
provides 搜不到东西时,先执行 dnf makecache 刷新元数据,再确认相关仓库是否启用(dnf repolist --all 能列出被禁用的仓库)。离线环境里则要检查本地仓库索引是否更新过。
同一个命令可能由多个包提供,例如 nc 在部分发行版里由 netcat 或 nmap-ncat 分别提供。装机前用 dnf repoquery -l 看清包里到底装了什么,避免引入一大串不想要的依赖。

易错点

  • provides 查不到就断定「没有这个包」:多数情况是元数据没缓存或仓库没启用,先 makecache 再复看
  • 通配模式不加引号:shell 会先展开,命令收到的参数与预期完全不同,模式里带 * 或 ? 时务必用引号包住
  • 把 rpm -qf 与 dnf provides 混用:前者只认已安装内容,后者查仓库中可获取的包,问错了命令会得到误导性结论
  • 忽略模块流(module):RHEL 8 之后同名包在不同流里版本不同,查询结果与启用状态有关,装前先看 dnf module list

数据来源与参考

  • man 8 dnf(provides/search)
  • man 8 rpm(-qf/-qi)

相关工具

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