使用yum whatprovides可查询文件所属软件包,如yum whatprovides /usr/bin/ls显示coreutils提供该文件,支持通配符模糊查找,新系统可用dnf替代,已安装文件可用rpm -qf查询。

在Linux中,当你需要知道某个文件是由哪个软件包提供的,可以使用包管理器的相关功能来查询。在基于RPM 的系统(如CentOS、RHEL、Fedora早期版本)中,yum whatprovides 是一个非常实用的命令。
使用 yum whatprovides 查找文件所属包
该命令用于查找提供特定文件的软件包,即使该文件尚未安装在系统中也能查询。
基本语法如下:
yum whatprovides "文件名或路径"例如,你想查找 /usr/bin/ls 是由哪个包提供的:
yum whatprovides /usr/bin/ls系统会返回类似结果:
coreutils-8.30-10.el8.x86_64 : The GNU core utilitiesRepo : base
Matched from:
Filename : /usr/bin/ls
这说明 /usr/bin/ls 文件由 coreutils 包提供。
支持通配符查询
如果不确定完整路径,可以使用通配符 * 进行模糊匹配。
比如查找所有可能提供 python3 可执行文件的包:
yum whatprovides "*bin/python3*"这个命令会列出所有包含匹配路径的软件包,帮助你找到正确的安装源。
未安装 yum?使用 dnf 替代(Fedora/CentOS 8+)
在较新的系统中,如CentOS 8、RHEL 8 或 Fedora,yum 已被 dnf 取代,但用法几乎一致:
dnf whatprovides /path/to/file例如:
dnf whatprovides /usr/sbin/httpd它会显示提供 Apache 服务器可执行文件的包,通常是 httpd。
补充:已安装文件可用 rpm -qf 查询
如果文件已经存在于系统中,可以直接使用 rpm 命令反向查询:
rpm -qf /usr/bin/ls输出结果为:
coreutils-8.30-10.el8.x86_64注意:此方法仅适用于已安装的文件。
基本上就这些。根据系统使用 yum 或 dnf 的 whatprovides 功能,能快速定位文件来源,对排查依赖或安装缺失命令非常有帮助。










