举例来说,我正在寻找一个mod_files.sh
可能随php-devel
包装一起提供的文件。我猜想这yum
将mod_files.sh
与php-devel x86_64 5.1.6-23.2.el5_3
软件包一起安装文件,但是该文件似乎没有安装在我的文件系统上。
如何找出哪个软件包安装了特定文件?我正在寻找我不一定已经在本地下载该软件包的地方,其中可能包括我要寻找的文件。
我正在使用CentOS 5。
rpm
,需要使用yum
。
举例来说,我正在寻找一个mod_files.sh
可能随php-devel
包装一起提供的文件。我猜想这yum
将mod_files.sh
与php-devel x86_64 5.1.6-23.2.el5_3
软件包一起安装文件,但是该文件似乎没有安装在我的文件系统上。
如何找出哪个软件包安装了特定文件?我正在寻找我不一定已经在本地下载该软件包的地方,其中可能包括我要寻找的文件。
我正在使用CentOS 5。
rpm
,需要使用yum
。
Answers:
这是一个老问题,但是当前答案不正确:)
使用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
您可能更喜欢软件包中repoquery
提供的工具的输出和速度yum-utils
。
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
可以执行其他查询,例如列出程序包内容,依赖性,反向依赖性等。
要了解拥有(或提供)已安装文件的软件包:
rpm -qf myfilename
rpm -qf <filename>
最适合确定哪个软件包提供了已安装的应用程序(因为它可能与当前yum存储库缓存中的软件包有所不同),并且yum whatprovides <filename>
最适合确定哪个软件包提供了尚未安装的软件包应用。每个人都有自己的目的。
yum whatprovides ...
仅当应用程序是根软件包(即,驻留在中/sbin
)时才需要root 。但是,rpm -qf ...
还需要root才能从读取rpm /sbin
。因此,我建议这两种方法的根本要求在功能上是等效的。
当您连接到互联网(存储库)时,找到软件包很容易,但是当您只能访问Redhat或Centos DVD中的RPM软件包时(当我必须恢复服务器并且需要一个应用程序时,这种情况经常发生在我身上)使用以下完全独立于Internet和存储库的命令。(可能您的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实用程序,该方法即可在具有rpm的任何操作系统中使用:
rpm -q --whatprovides [file name]
您可以在此处使用您的软件包,同样地进行操作。就我而言,lsb_release
跑: yum whatprovides lsb_release
响应:
redhat-lsb-core-4.1-24.el7.i686 : LSB Core module support
Repo : rhel-7-server-rpms
Matched from:
Filename : /usr/bin/lsb_release
redhat-lsb-core-4.1-24.el7.x86_64 : LSB Core module support
Repo : rhel-7-server-rpms
Matched from:
Filename : /usr/bin/lsb_release
redhat-lsb-core-4.1-27.el7.i686 : LSB Core module support
Repo : rhel-7-server-rpms
Matched from:
Filename : /usr/bin/lsb_release
redhat-lsb-core-4.1-27.el7.x86_64 : LSB Core module support
Repo : rhel-7-server-rpms
Matched from:
Filename : /usr/bin/lsb_release`
运行安装: yum install redhat-lsb-core
软件包名称应该没有数字和系统类型,以便yum打包程序可以选择最适合他的软件包。