Вопрос по linux – Как составить список содержимого пакета, используя YUM?

294

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

К сожалению, это работает только с установленными пакетами WallStProg
Без-p парам (rpm -ql packageName) вам не нужно знать местоположение файла rpm. Это в значительной степени самый простой способ получить "все" пути пакета. Для некоторых примеров вывода см.my answer. Levit

Ваш Ответ

7   ответов
74
$ yum install -y yum-utils

$ repoquery -l packagename
144
rpm -ql [packageName]
Example
# 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

ла rpm.

Похоже нетyum эквивалентноrpm -ql а такжеrepoquery -l (отyum-utils package) команды для вывода списка локальных и удаленных файлов соответственно.
@dimadima: вопрос был дляyum (= Системы на основе RHEL), которая используетrpm как нативный менеджер пакетов (REd HatPacketManager). Если OP будет в системе Debian / Ubuntu / ..,dpkg будет путь, так как это бэкэндapt.
^ 1 потому что по какой-то причине это работает и принятый ответ ничего не возвращает
@ Левит: Я уверен, что Димадима пытается сказать, что это не дает точного ответа на вопрос - вы не используетеyum ноrpm что имеет основное значение, что пакет должен быть установлен (который OP явно не сказал, был его сценарий). Он просто проводил параллельное сравнение rpm == dpkg / yum == apt, чтобы объяснить это на тот случай, если кто-то знаком с упаковкой на основе Debian, а не с упаковкой на основе RH.
Это похоже на эквивалентdpkg -L для всех, кто не хочет устанавливать другой пакет только для того, чтобы вывести список файлов.
0

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

417

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 Update:

Использовать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
Я просто быстро отсканировал справочную страницу, невозможно увидеть, что такое файл и что такое символическая ссылка, или это так?
Пожалуйста, обратите внимание, имя пакета чувствительно к регистру
Чтобы быстрее искать установленные пакеты, включите опцию --installed. например$ repoquery -lq --installed time.
Должен быть добавлен в качестве функции Yum, IMO.
Обратите внимание, что эта команда не будет выполнена автоматически, если указанный пакет на самом деле не существует.
3

поэтому позвольте мне дать ужасный:

: 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
28

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

rpm -qlp /path/to/fileToList.rpm

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

rpm -ql packageName
если у вас нет файла пакета (.rpm), но у вас установлен пакет, попробуйте rpm -ql packageName
если у вас нет пакета, и он не установлен, вы можете найти URL пакета с помощьюyoudownload --urls.
Которые должны бытьyumdownloader --urls
0

В настоящее времяreopquery интегрирован вdnf а такжеyum, так что набрав:

dnf repoquery -l <pkg-name>

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

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

для листингаinstalled или жеlocal (*.rpm файлы) пакеты & apos; содержание тамrpm -ql

я не думаю, что это возможно сyum организацияdnf (неrepoquery субкоманда)

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

Похожие вопросы