Как вывести список содержимого пакета с помощью YUM?

Я знаю, как использовать rpm для вывода содержимого пакета (rpm -qpil package.rpm). Однако для этого необходимо знать расположение файла .rpm в файловой системе. Более элегантным решением будет использование диспетчера пакетов, которым в моем случае является YUM. Как можно использовать YUM для этого?


person Lorin Hochstein    schedule 19.09.2008    source источник
comment
Без параметра -p (rpm -ql packageName) вам не нужно знать расположение файла rpm. Это в значительной степени самый простой способ получить все пути пакета. Пример вывода см. В моем ответе.   -  person Levite    schedule 09.02.2015
comment
К сожалению, это работает только с установленными пакетами   -  person WallStProg    schedule 10.05.2017


Ответы (6)


Существует пакет под названием yum-utils, который основан на YUM и содержит инструмент под названием repoquery, который может это сделать.

$ repoquery --help | grep -E "list\ files" 
  -l, --list            list files in this package/group

В одном примере:

$ repoquery -l time
/usr/bin/time
/usr/share/doc/time-1.7
/usr/share/doc/time-1.7/COPYING
/usr/share/doc/time-1.7/NEWS
/usr/share/doc/time-1.7/README
/usr/share/info/time.info.gz

По крайней мере в одной системе RH с rpm v4.8.0, yum v3.2.29 и repoquery v0.0.11 repoquery -l rpm ничего не печатает.

Если у вас возникла эта проблема, попробуйте добавить --installed флаг: repoquery --installed -l rpm.


DNF Обновление:

Чтобы использовать dnf вместо yum-utils, используйте следующую команду:

$ dnf repoquery -l time
/usr/bin/time
/usr/share/doc/time-1.7
/usr/share/doc/time-1.7/COPYING
/usr/share/doc/time-1.7/NEWS
/usr/share/doc/time-1.7/README
/usr/share/info/time.info.gz
person Thomas Vander Stichele    schedule 20.09.2008
comment
Обратите внимание, что эта команда автоматически завершится ошибкой, если указанный пакет на самом деле не существует. - person Joshua Hoblitt; 30.09.2012
comment
Чтобы быстрее искать установленные пакеты, включите параметр --installed. например $ repoquery -lq --installed time. - person Mohsenme; 05.03.2014
comment
Пожалуйста, обратите внимание, что имя пакета чувствительно к регистру - person Putnik; 09.10.2015
comment
Должен быть добавлен как функция yum, IMO. - person Lqueryvg; 01.11.2015
comment
Я просто быстро просмотрел страницу руководства, невозможно увидеть, что это за файл, а что за символическая ссылка, или это так? - person Andy; 12.05.2018
comment
Зачем устанавливать новый пакет, если можно использовать rpm -ql $PACKAGE_NAME? - person isapir; 08.04.2019

rpm -ql [packageName]

Пример

# rpm -ql php-fpm

/etc/php-fpm.conf
/etc/php-fpm.d
/etc/php-fpm.d/www.conf
/etc/sysconfig/php-fpm
...
/run/php-fpm
/usr/lib/systemd/system/php-fpm.service
/usr/sbin/php-fpm
/usr/share/doc/php-fpm-5.6.0
/usr/share/man/man8/php-fpm.8.gz
...
/var/lib/php/sessions
/var/log/php-fpm

Нет необходимости устанавливать yum-utils или знать расположение файла rpm.

person Levite    schedule 03.11.2014
comment
Кажется, это эквивалент dpkg -L для всех, кто не хочет устанавливать другой пакет только для того, чтобы вывести список файлов. - person Dmitry Minkovsky; 04.11.2014
comment
@dimadima: Вопрос был для yum (= системы на основе RHEL), который использует rpm в качестве собственного диспетчера пакетов (R ed Hat P acket М анагер). Если OP будет в системе debian / ubuntu / .., dpkg будет подходящим вариантом, поскольку это серверная часть для apt. - person Levite; 04.11.2014
comment
@Levit: Совершенно уверен, что dimadima пытается сказать, что это не отвечает строго на вопрос - вы не используете yum, но rpm, что имеет большое значение, что пакет должен быть установлен (который OP явно не говорят был его сценарий). Он просто проводил параллельное сравнение rpm == dpkg / yum == apt, чтобы объяснить это на случай, если кто-то был знаком с упаковкой на основе Debian, а не на основе RH. - person tne; 31.01.2015
comment
@Levit: Да, точно так же, как все, что делает apt, использует dpkg в фоновом режиме - по крайней мере, я думаю, что он использовал эту аналогию. В любом случае, независимо от того, что он пытался сказать, моя добавленная информация была просто тем фактом, что одна только rpm не будет запрашивать информацию об удаленных пакетах в репозиториях, поэтому в этом сценарии требуется yum (если вы не хотите устанавливать другой пакет только для вывода списка файлов; слова Димадимы). - person tne; 09.02.2015
comment
^ 1, потому что по какой-то причине это работает, и принятый ответ ничего не возвращает - person Izkata; 02.05.2016
comment
Это не будет работать с пакетами, которые не установлены. Yum может получать базы данных списка файлов для своих репозиториев, и это yum whatprovides {{filename}} работает. - person ; 19.04.2017
comment
Кажется, что нет yum эквивалента командам rpm -ql и repoquery -l (из пакета yum-utils) для вывода списка локальных и удаленных файлов соответственно. - person ; 12.06.2017
comment
Это применимо только к локально установленным rpms. Запрос содержимого удаленных, доступных, но не установленных пакетов не работает. Получается сообщение package <package name> is not installed. - person Hans Deragon; 29.03.2019

Я не думаю, что вы можете перечислить содержимое пакета с помощью yum, но если у вас есть файл .rpm в вашей локальной системе (что, скорее всего, будет иметь место для всех установленных пакетов), вы можете использовать команду rpm для вывода списка содержимое этого пакета выглядит так:

rpm -qlp /path/to/fileToList.rpm

Если у вас нет файла пакета (.rpm), но он установлен, попробуйте следующее:

rpm -ql packageName
person Thomi    schedule 19.09.2008
comment
если у вас нет файла пакета (.rpm), но пакет установлен, попробуйте rpm -ql имя_пакета - person Jared Updike; 10.05.2011
comment
если у вас нет пакета и он не установлен, вы можете найти URL-адрес пакета с помощью youdownload --urls. - person kamae; 30.06.2011
comment
Это должно быть yumdownloader --urls - person Evgeni Sergeev; 01.10.2013

Здесь есть несколько хороших ответов, поэтому позвольте мне дать ужасный:

: you can type in anything below, doesnt have to match anything

yum whatprovides "me with a life"

: result of the above (some liberties taken with spacing):

Loaded plugins: fastestmirror
base | 3.6 kB 00:00 
extras | 3.4 kB 00:00 
updates | 3.4 kB 00:00 
(1/4): extras/7/x86_64/primary_db | 166 kB 00:00 
(2/4): base/7/x86_64/group_gz | 155 kB 00:00 
(3/4): updates/7/x86_64/primary_db | 9.1 MB 00:04 
(4/4): base/7/x86_64/primary_db | 5.3 MB 00:05 
Determining fastest mirrors
 * base: mirrors.xmission.com
 * extras: mirrors.xmission.com
 * updates: mirrors.xmission.com
base/7/x86_64/filelists_db | 6.2 MB 00:02 
extras/7/x86_64/filelists_db | 468 kB 00:00 
updates/7/x86_64/filelists_db | 5.3 MB 00:01 
No matches found

: the key result above is that "primary_db" files were downloaded

: filelists are downloaded EVEN IF you have keepcache=0 in your yum.conf

: note you can limit this to "primary_db.sqlite" if you really want

find /var/cache/yum -name '*.sqlite'

: if you download/install a new repo, run the exact same command again
: to get the databases for the new repo

: if you know sqlite you can stop reading here

: if not heres a sample command to dump the contents

echo 'SELECT packages.name, GROUP_CONCAT(files.name, ", ") AS files FROM files JOIN packages ON (files.pkgKey = packages.pkgKey) GROUP BY packages.name LIMIT 10;' | sqlite3 -line /var/cache/yum/x86_64/7/base/gen/primary_db.sqlite 

: remove "LIMIT 10" above for the whole list

: format chosen for proof-of-concept purposes, probably can be improved a lot
person Community    schedule 01.12.2016

в настоящее время reopquery интегрирован в dnf и yum, поэтому введите:

dnf repoquery -l <pkg-name>

отобразит содержимое пакета из удаленного репозитория (даже для пакетов, которые еще не установлены)

это означает, что установка отдельного пакета dnf-utils или yum-utils больше не требуется для функциональности, поскольку теперь он поддерживается изначально.


для перечисления содержимого установленных или локальных (*.rpm файлов) пакетов есть rpm -ql

я не думаю, что это возможно с yum org dnf (не repoquery подкомандой)

пожалуйста, поправьте меня, если я ошибаюсь

person Community    schedule 13.08.2018

У Yum нет собственного типа пакета. Yum работает и помогает управлять RPM. Итак, вы можете использовать yum для вывода списка доступных RPM, а затем запустить команду rpm -qlp, чтобы увидеть содержимое этого пакета.

person Haabda    schedule 19.09.2008