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 для указанных пользователей
Репозиторий: обновления-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:

об/мин -qif /bin/ls
Имя: coreutils Перемещения: (неперемещаемые)
Версия: 5.97 Поставщик: Red Hat, Inc.
Выпуск: 23.el5 Дата сборки: Пн 13 Июл 2009 04:21:27 AM MDT
Дата установки: пт 11 сент 2009 04:46:01 AM MDT Хост сборки: hs20-bc1-7.build.redhat.com
Группа: Системная среда/Базовый исходный RPM: coreutils-5.97-23.el5.src.rpm
Размер: 9053874 Лицензия: GPLv2+
Подпись: DSA/SHA1, Вт 28 июля 2009 г. 03:42:40 AM MDT, идентификатор ключа 5326810137017186
Упаковщик: Red Hat, Inc.
URL-адрес:
Резюме: Основные утилиты GNU: набор инструментов, обычно используемых в скриптах оболочки.
Описание :
Это основные утилиты GNU. Этот пакет представляет собой комбинацию
старые пакеты GNU fileutils, sh-utils и textutils.
Если у вас загружен RPM, вы можете выполнить запрос, чтобы узнать, что будет установлено:
об/мин -qilp ./Server/jzlib-1.0.7-4jpp.1.i386.rpm
предупреждение: ./Server/jzlib-1.0.7-4jpp.1.i386.rpm: Подпись DSA заголовка V3: NOKEY, идентификатор ключа 37017186
Имя: jzlib Перемещения: (неперемещаемые)
Версия: 1.0.7 Поставщик: Red Hat, Inc.
Выпуск: 4jpp.1 Дата сборки: Вт 08 авг 2006 12:10:03 PM MDT
Дата установки: (не установлено) Хост сборки: hs20-bc1-6.build.redhat.com
Группа: Разработка/Библиотеки/Исходный RPM Java: jzlib-1.0.7-4jpp.1.src.rpm
Размер: 280436 Лицензия: BSD-style
Подпись: DSA/SHA1, четверг, 18 января 2007 г., 08:49:50 по Гринвичу, идентификатор ключа 5326810137017186
Упаковщик: Red Hat, Inc.
URL-адрес:
Резюме: JZlib — повторная реализация zlib на чистом Java
Описание :
Zlib разработан как бесплатная, универсальная, юридически не обремененная библиотека.
-- то есть, не защищенное никакими патентами -- сжатие данных без потерь
библиотека для использования практически на любом компьютерном оборудовании и операционной системе.
Zlib был написан Жаном-Лу Гайи (сжатие) и Марком Адлером.
(декомпрессия).
/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
Вы можете опустить «-i» в параметрах, если вас не интересует вся информация о RPM.

решение3

В репозиториях на основе yum можно попробовать что-то вроде yum provides */filename

решение4

Если вы не хотите (или не можете) использовать 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»).

Связанный контент