提供文件的 rpm

提供文件的 rpm

列出哪些 rpm 可以提供特定文件的命令是什么:提供已安装的文件的 rpm 还是可以提供未安装的文件的 rpm?

答案1

对于已安装的文件/包:

[jb@smokey ~]$ rpm -qf /etc/sudoers
sudo-1.6.9p13-8.fc9.x86_64

对于尚未安装的文件和包:

[jb@smokey ~]$ yum whatprovides “/etc/sudoers”
sudo-1.6.9p13-8.fc9.x86_64 :允许指定用户进行受限的 root 访问
仓库:updates-newkey
匹配自:
文件名:/etc/sudoers  

sudo-1.6.9p13-4.fc9.x86_64 :允许指定用户进行受限的 root 访问
仓库: fedora
匹配自:
文件名:/etc/sudoers

sudo-1.6.9p13-8.fc9.x86_64 :允许指定用户进行受限的 root 访问
仓库:已安装
匹配自:
其他:提供匹配:/etc/sudoers

请注意,“yum whatprovides”是一种模式匹配,因此如果您不确定所查找的文件在目录结构中的位置,只需用引号和星号将其括起来即可:

yum whatprovides“*foo*”

类似地,如果您确定要查找的是二进制文件,您可以执行以下操作:

yum whatprovides“*bin/foo”

答案2

我不知道尚未安装的文件,但对于已安装的文件,您可以使用 rpm -qif:

rpm -qif /bin/ls
名称:coreutils 重定位:(不可重定位)
版本:5.97 供应商:Red Hat, Inc.
发行版本:23.el5 构建日期:2009 年 7 月 13 日星期一 04:21:27 AM MDT
安装日期:2009 年 9 月 11 日星期五 04:46:01 AM MDT 构建主机:hs20-bc1-7.build.redhat.com
组:系统环境/基本源 RPM:coreutils-5.97-23.el5.src.rpm
大小:9053874 许可证:GPLv2+
签名:DSA/SHA1,2009 年 7 月 28 日星期二 03:42:40 AM MDT,密钥 ID 5326810137017186
包装商:Red Hat, Inc.
网址:
摘要:GNU 核心实用程序:一组常用的 shell 脚本工具
描述 :
这些是 GNU 核心实用程序。此软件包是
旧的 GNU fileutils、sh-utils 和 textutils 包。
如果你已经下载了 RPM,你可以查询以查看要安装的内容:
rpm -qilp ./服务器/jzlib-1.0.7-4jpp.1.i386.rpm
警告:./Server/jzlib-1.0.7-4jpp.1.i386.rpm:Header V3 DSA 签名:NOKEY,密钥 ID 37017186
名称:jzlib 重定位:(不可重定位)
版本:1.0.7 供应商:Red Hat, Inc.
发布:4jpp.1 构建日期:2006 年 8 月 8 日星期二下午 12:10:03 MDT
安装日期:(未安装)构建主机:hs20-bc1-6.build.redhat.com
组:开发/库/Java 源 RPM:jzlib-1.0.7-4jpp.1.src.rpm
大小:280436 许可证:BSD 风格
签名:DSA/SHA1,2007 年 1 月 18 日星期四上午 8:49:50 MST,密钥 ID 5326810137017186
包装商:Red Hat, Inc.
网址:
摘要:JZlib 用纯 Java 对 zlib 的重新实现
描述 :
zlib 的设计目标是免费、通用、不受法律约束
——也就是说,不受任何专利保护——无损数据压缩
适用于几乎任何计算机硬件和操作系统的库。
zlib 由 Jean-loup Gailly(压缩)和 Mark Adler 编写
(减压)。
/usr/lib/gcj/jzlib/jzlib-1.0.7.jar.db
/usr/lib/gcj/jzlib/jzlib-1.0.7.jar.so
/usr/share/doc/jzlib-1.0.7
/usr/share/doc/jzlib-1.0.7/LICENSE.txt
/usr/share/java/jzlib-1.0.7.jar
/usr/share/java/jzlib.jar
如果您不想查看有关 RPM 的所有信息,则可以从选项中省略“-i”。

答案3

在基于 yum 的存储库中,你可以尝试类似 yum provides */filename

答案4

如果你不想(或不能)使用 yum(例如在离线机器上),你可以搜索未安装的 RPM,方法是:

# rpm -qp --filesbypkg *rpms-to-search-in* | grep *file-to-search-for*

这可能需要一些时间,因此在大型存储库(例如安装 DVD)中搜索 *.rpm 时请耐心等待。但是,与“-qpl”不同,“-qp --filesbypkg”将列出文件及其所属的 RPM,例如:

# rpm -qpl p*.rpm|grep libpq.so.4
/usr/lib/libpq.so.4
/usr/lib64/libpq.so.4

# rpm -qp --filesbypkg p*.rpm|grep libpq.so.4
postgresql-libs          /usr/lib/libpq.so.4
postgresql-libs          /usr/lib64/libpq.so.4

在这种情况下,明显的重复是由于 i386 和 x86_64 包的存在(从“lib64”字符串可以明显看出)。

相关内容