centos - rpm查询安装包




如何找到哪个rpm包提供我正在查找的文件? (4)

你去http://www.rpmfind.net并搜索文件。

你会得到许多不同发行版和版本的结果,但很可能Fedora和/或CentOS也会弹出,你会知道要用yum安装的软件包名称

作为一个例子,我正在寻找一个mod_files.sh文件,这个文件可能与php-devel包一起提供。 我猜想yum会使用php-devel x86_64 5.1.6-23.2.el5_3软件包安装mod_files.sh文件,但该文件似乎并未安装在我的文件系统中。

如何找出哪个软件包安装了特定的文件? 我正在寻找我不一定已经在本地下载的软件包,其中可能包含我正在寻找的文件。

我正在使用CentOS 5。


当你连接到互联网(存储库)时,找到软件包很容易,但是只有在Redhat或Centos DVD中有权访问RPM软件包时(我经常需要恢复服务器并需要应用程序时,这种情况经常发生),我推荐使用以下完全独立于互联网和存储库的命令。 (假设你有很多在DVD中卸载的软件包)。 假设你已经在〜/ cent_os_dvd中加载了Package文件夹,并且你正在寻找一个提供“semanage”的软件包,那么你可以运行:

for file in `find ~/cent_os_dvd/ -iname '*.rpm'`;  do rpm -qlp $file |grep '.*bin/semanage';  if [ $? -eq 0 ]; then echo "is in";echo $file  ; fi;  done

要知道拥有(或提供)已安装文件的软件包:

rpm -qf myfilename

注意:这个命令不需要以root身份运行(相反, sudo yum whatprovides myfilename


这是一个老问题,但目前的答案是不正确的:)

使用yum whatprovides ,用你想要的文件的绝对路径(可能是通配符)。 例如:

yum whatprovides '*bin/grep'

返回

grep-2.5.1-55.el5.x86_64 : The GNU versions of grep pattern matching utilities.
Repo        : base
Matched from:
Filename    : /bin/grep

您可能更喜欢yum-utils软件包中提供的repoquery工具的输出和速度。

sudo yum install yum-utils
repoquery --whatprovides '*bin/grep'
grep-0:2.5.1-55.el5.x86_64
grep-0:2.5.1-55.el5.x86_64

repoquery可以执行其他查询,如列出包内容,依赖关系,反向依赖关系等。