Какая команда указывает, какие пакеты RPM могут предоставить конкретный файл: пакеты, которые предоставляют уже установленные файлы, или пакеты, которые могут предоставлять файлы, которые не установлены?
Для уже установленных файлов / пакетов:
[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 : Allows restricted root access for specified users Repo : updates-newkey Matched from: Filename : /etc/sudoers sudo-1.6.9p13-4.fc9.x86_64 : Allows restricted root access for specified users Repo : fedora Matched from: Filename : /etc/sudoers sudo-1.6.9p13-8.fc9.x86_64 : Allows restricted root access for specified users Repo : installed Matched from: Other : Provides-match: /etc/sudoers
Обратите внимание, что «yum whatprovides» соответствует шаблону, поэтому, если вы не уверены, где в структуре каталогов будет находиться искомый файл, просто заключите его в кавычки и звездочки:
yum whatprovides "*foo*"
Точно так же, если вы уверены, что ищете двоичный файл, вы можете:
yum whatprovides "*bin/foo"
Я не знаю о файлах, которые еще не установлены, но для уже установленного файла вы можете использовать rpm -qif:
rpm -qif /bin/ls Name : coreutils Relocations: (not relocatable) Version : 5.97 Vendor: Red Hat, Inc. Release : 23.el5 Build Date: Mon 13 Jul 2009 04:21:27 AM MDT Install Date: Fri 11 Sep 2009 04:46:01 AM MDT Build Host: hs20-bc1-7.build.redhat.com Group : System Environment/Base Source RPM: coreutils-5.97-23.el5.src.rpm Size : 9053874 License: GPLv2+ Signature : DSA/SHA1, Tue 28 Jul 2009 03:42:40 AM MDT, Key ID 5326810137017186 Packager : Red Hat, Inc. URL : Summary : The GNU core utilities: a set of tools commonly used in shell scripts Description : These are the GNU core utilities. This package is the combination of the old GNU fileutils, sh-utils, and textutils packages.Если у вас есть загруженный RPM, вы можете запросить, что вы хотите установить:
rpm -qilp ./Server/jzlib-1.0.7-4jpp.1.i386.rpm warning: ./Server/jzlib-1.0.7-4jpp.1.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186 Name : jzlib Relocations: (not relocatable) Version : 1.0.7 Vendor: Red Hat, Inc. Release : 4jpp.1 Build Date: Tue 08 Aug 2006 12:10:03 PM MDT Install Date: (not installed) Build Host: hs20-bc1-6.build.redhat.com Group : Development/Libraries/Java Source RPM: jzlib-1.0.7-4jpp.1.src.rpm Size : 280436 License: BSD-style Signature : DSA/SHA1, Thu 18 Jan 2007 08:49:50 AM MST, Key ID 5326810137017186 Packager : Red Hat, Inc. URL : Summary : JZlib re-implementation of zlib in pure Java Description : The zlib is designed to be a free, general-purpose, legally unencumbered -- that is, not covered by any patents -- lossless data-compression library for use on virtually any computer hardware and operating system. The zlib was written by Jean-loup Gailly (compression) and Mark Adler (decompression). /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.jaryou can omit the "-i" from options if you don't care to see all the info about the RPM.
В репозиториях на основе yum вы можете попробовать что-то вроде yum provides */filename
афаик, при чистых оборотах это невозможно. rpm предоставляет это только для установленных пакетов с опцией --whatprovides
.
когда вы можете использовать ням, попробуйте yum provides <filename>
искать в репозитории.
Если вы не хотите (или не можете) использовать yum (например, на автономном компьютере), вы можете выполнить поиск внутри неустановленных RPM, выполнив
# rpm -qp --filesbypkg *rpms-to-search-in* | grep *file-to-search-for*
Это может занять некоторое время, поэтому наберитесь терпения при поиске среди * .rpm в большом репозитории, например, на установочном DVD. Но, в отличие от «-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").
Боюсь, я не знаю, как это сделать с помощью RPMS, но с Debian и Ubuntu вы можете использовать программу apt-file