Вопрос: rpm, который предоставляет файл


Какова команда для перечисления того, что rpms может предоставить конкретный файл: rpm, которые предоставляют файлы, уже установленные или rpms, которые могут предоставить файлы, которые не установлены?


9
2018-01-19 17:23


Источник




Ответы:


Для уже установленных файлов / пакетов:

[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: разрешает ограниченный доступ root для указанных пользователей
Repo: update-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"

8
2018-01-19 21:12





Я не знаю о файлах, которые уже не установлены, но для уже установленного файла вы можете использовать rpm -qif:

rpm -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 Build Host: hs20-bc1-7.build.redhat.com
Группа: Модераторы форума
Размер: 9053874 Лицензия: GPLv2 +
Подпись: DSA / SHA1, Вт 28 июл 2009 03:42:40 AM MDT, ID ключа 5326810137017186
Упаковщик: Red Hat, Inc.
URL:
Резюме: Основные утилиты GNU: набор инструментов, обычно используемых в сценариях оболочки
Описание :
Это основные утилиты 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 Дата сборки: Вт 08 авг. 2006 12:10:03 PM MDT
Дата установки: (не установлена) Build Host: hs20-bc1-6.build.redhat.com
Группа: Разработка / Библиотеки / Java Source RPM: jzlib-1.0.7-4jpp.1.src.rpm
Размер: 280436 Лицензия: BSD-стиль
Подпись: DSA / SHA1, чт 18 янв 2007 08:49:50 AM MST, ID ключа 5326810137017186
Упаковщик: Red Hat, Inc.
URL:
Резюме: JZlib повторная реализация zlib в чистой Java
Описание :
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
2018-01-19 20:55





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


2
2018-01-19 17:44





afaik, это невозможно с чистыми оборотами. rpm обеспечивает это только для установленных пакетов с опцией --whatprovides,

когда вы можете использовать yum, попробуйте yum provides <filename> для поиска в репозитории.


1
2018-01-19 17:51





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


1
2018-03-22 23:33





Боюсь, я не уверен, как это сделать с помощью RPMS, но с Debian и Ubuntu вы можете использовать программу apt-file


-3
2018-01-19 17:40