在centos/rhel系统中,使用 yum provides 加命令名查找对应软件包,如 yum provides ifconfig 会显示 net-tools 包;2. 在debian/ubuntu系统中,先通过 which 或 command -v 找到命令完整路径,再用 dpkg -s 查找,如 dpkg -s /sbin/ifconfig 返回 net-tools;3. 注意不同系统机制差异:yum provides 可查未安装包,dpkg -s 仅能查已安装包,且路径错误会导致查询失败。

有时候你想知道某个Linux命令是哪个软件包安装的,特别是在系统上找不到命令或者想确认功能来源的时候。这时候可以用 yum provides(适用于CentOS/RHEL)或 dpkg -S(适用于Debian/Ubuntu)来查找。

1. 使用 yum provides 查找命令对应的RPM包
在基于Red Hat的系统中,比如 CentOS 或 RHEL,如果你不知道某个命令属于哪个软件包,可以使用 yum provides 命令加命令名来查找。

例如:
yum provides ifconfig
执行后会列出包含 ifconfig 的软件包名称,通常是 net-tools 包。

注意点:
如果你没有启用某些仓库,可能查不到结果。某些命令可能存在于多个包中,根据你的系统架构选择合适的版本。也可以用通配符模糊匹配,比如 yum provides */ifconfig。
2. 使用 dpkg -S 查找命令对应的Debian包
在基于Debian的系统中,比如 Ubuntu,可以使用 dpkg -S 加上命令路径来查找。
但问题来了:你怎么知道命令的完整路径?比如 ifconfig 可能在 /sbin/ifconfig,而 /sbin 通常不在普通用户的 PATH 中。
所以你可以先用 which 或 command -v 找到命令的完整路径:
which ifconfig# 或者command -v ifconfig
假设返回的是 /sbin/ifconfig,那么就可以这样查:
dpkg -S /sbin/ifconfig
输出结果类似:
net-tools: /sbin/ifconfig
说明这个命令来自 net-tools 软件包。
小技巧:
如果你不确定路径,可以直接试几个常见路径,比如 /usr/bin, /bin, /sbin。有些命令是 shell 内建命令,比如 cd、echo,这些不会对应到具体软件包。
3. 不同系统之间的小差异和注意事项
虽然 yum provides 和 dpkg -S 都能解决问题,但它们背后依赖的数据结构不同:
yum provides 实际上是在查询 RPM 数据库中的文件映射关系。dpkg -S 是直接搜索已安装包的文件列表。
这意味着:
在 Debian 系统上,如果没装某个包,dpkg -S 就查不到。在 Red Hat 系统上,即使没装包,只要启用了对应仓库,也能通过 yum provides 查到。
此外,有些现代发行版已经用 dnf 替代了 yum,但 yum provides 命令仍然可用。
基本上就这些方法了。遇到不认识的命令时,先找到它的路径,再用对应系统的工具查就行了。不复杂但容易忽略的一点是:路径写不对,查什么都白搭。
以上就是如何查询Linux命令所属软件包 yum provides和dpkg -S查找的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/14333.html
微信扫一扫
支付宝扫一扫