如何在CentOS上找到某些命令属于哪个软件包?


19

例如,我可以轻松地找到属于mlocate.i386包的locate命令。

yum search locate
mlocate.i386 : An utility for finding files by name
[mirror@home /]$ rpm -qa | grep locate
mlocate-0.15-1.el5.1

yum search updatedb
Loaded plugins: fastestmirror, protectbase
0 packages excluded due to repository protections
=========================================== Matched: updatedb ===========================================
mlocate.i386 : An utility for finding files by name

但是要找到哪个package free命令属于以下部分并不容易:

yum search free   // this command just returns too much informationy 
rpm -qa | grep free
freetype-2.2.1-31.el5_8.1   // obviously not the package by which free command is installed

那么,有什么可靠的方法可以知道特定命令在Linux上属于哪个软件包?例如CentOS或其他发行版

Answers:



24

Ubuntu / Debian示例检查free命令包:

dpkg -S $(which free)

这仅适用于已安装的软件包。我在这里找到一些适用于未安装的软件包的东西$ dpkg -S */free$*
bobrobbob

@bobrobbob恐怕是不正确的。我测试过,dpkg -S */firefox$*在安装了Firefox的服务器上,它给出了多个结果,而在没有Firefox的服务器上,没有结果。我认为这dpkg是行不通的,因为是在本地安装的软件包上运行的命令。为了找到非安装的软件包,你可以去packages.ubuntu.com/...
吉荣默朗- MageHost

天啊。您是正确的,对此表示抱歉
bobrobbob

1
如果您得到dpkg-query:找不到匹配模式的路径,请 尝试以下方法dpkg -S "$(readlink -fn "$(which free)")"
巴勃罗

7

对于CentOS,yum提供了什么?

采用

which free 

找出它在哪里

对我来说

/ usr / bin /免费

这样就可以运行

yum provides /usr/bin/free

它会告诉你哪个包裹


如果the command您的centos中尚未安装或可用,则可以使用yum provides <command>,因为which <command>它将返回not <command> in ...
欧阳巷

1

对于所有基于Red Hat的发行版,您可以使用yum软件包管理实用程序

yum provides `which free`

提供参数指定哪个包提供某些功能或文件。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.