rpm提供一个文件

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

对于已经安装的文件/包:

 [jb @ smokey〜] $ rpm -qf / etc / sudoers
须藤-1.6.9p13-8.fc9.x86_64

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

 [jb @ smokey〜] $ yum whatprovides“/ etc / sudoers”
 sudo-1.6.9p13-8.fc9.x86_64:允许指定用户有限的访问权限
回购:更新 - 新密钥
匹配从:
文件名:/ etc / sudoers  

 sudo-1.6.9p13-4.fc9.x86_64:允许指定用户使用受限制的根访问权限
回购:fedora
匹配从:
文件名:/ etc / sudoers

 sudo-1.6.9p13-8.fc9.x86_64:允许指定用户有限的访问权限
回购:已安装
匹配从:
其他:提供匹配:/ etc / sudoers

请注意,“yum whatprovides”是模式匹配,所以如果您不确定您要查找的文件在目录结构中的位置,请使用引号和星号来包围它:

  yum whatprovides“* foo *” 

同样,如果你确定你正在寻找的是一个二进制文件,你可以这样做:

  yum whatprovides“* bin / foo” 

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

 rpm -qif / bin / ls
名称:coreutils重定位:(不可重定位)
版本:5.97销售商:Red Hat,Inc.
版本:23.el5版本date:Mon 13 Jul 2009 04:21:27 MDT
安装date:星期五2009年九月11日04:46:01 MDTbuild设主机:hs20-bc1-7.build.redhat.com
组:系统环境/基础源RPM:coreutils-5.97-23.el5.src.rpm
大小:9053874授权方式:GPLv2 +
签名:DSA / SHA1,2009年7月28日星期二03:42:40 MDT,密钥ID 5326810137017186
打包商:Red Hat,Inc. 
 URL:
简介:GNU核心实用程序:shell脚本中常用的一组工具
说明:
这些是GNU核心实用程序。 这个包是组合的
旧的GNU fileutils,sh-utils和textutils软件包。

如果您已经下载了RPM,则可以查询以查看要安装的内容:

 rpm -qilp ./Server/jzlib-1.0.7-4jpp.1.i386.rpm
警告:./Server/jzlib-1.0.7-4jpp.1.i386.rpm:标题V3 DSA签名:NOKEY,密钥ID 37017186
名称:jzlib重定位:(不可重定位)
版本:1.0.7销售商:Red Hat,Inc.
发布:4jpp.1构builddate:星期二08八月2006 12:10:03 PM MDT
安装date:(未安装)生成主机:hs20-bc1-6.build.redhat.com
组:开发/库/ Java源代码RPM:jzlib-1.0.7-4jpp.1.src.rpm
大小:280436许可证:BSD风格
签名:DSA / SHA1,星期四18一月08 08:49:50 MST,密钥ID 5326810137017186
打包商:Red Hat,Inc. 
 URL: 
简介: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”。

在基于yum的仓库中,你可以尝试像yum provides */filename这样的东西

afaik,纯转速是不可能的。 rpm只提供了这个选项 – --whatprovides安装的软件包。

当你可以使用yum时,尝试yum provides <filename>来在存储库中search。

如果您不想(或不能)使用yum(例如,在离线机器上),您可以通过执行内部search未安装的RPM

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

这可能需要一些时间,因此在大型存储库(例如安装DVD)中search* .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”string中显而易见)。

恐怕我不知道如何用RPMS来做,但是在Debian和Ubuntu中,你可以使用apt-file程序