yum - Как показать двоичные файлы, включенные в пакет? [Дубликат]

Указатель NULL - это тот, который указывает на никуда. Когда вы разыскиваете указатель p, вы говорите «дайте мне данные в месте, хранящемся в« p ». Когда p является нулевым указателем, местоположение, хранящееся в p, является nowhere, вы говорите «Дайте мне данные в месте« нигде ». Очевидно, он не может этого сделать, поэтому он выбрасывает NULL pointer exception.

В общем, это потому, что что-то не было правильно инициализировано.

276
задан Lorin Hochstein 3 November 2014 в 17:14
поделиться

7 ответов

Существует пакет под названием 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
392
ответ дан Katie Sissons 17 August 2018 в 14:24
поделиться
  • 1
    Обратите внимание, что эта команда будет терпеть неудачу, если именованный пакет фактически не существует. – Joshua Hoblitt 30 September 2012 в 19:22
  • 2
    Чтобы быстрее искать установленные пакеты, включите опцию --installed. например $ repoquery -lq --installed time. – Mohsenme 5 March 2014 в 10:06
  • 3
    Имя пакета пакета примечания учитывает регистр – Putnik 9 October 2015 в 18:30
  • 4
    Следует добавить как функцию yum, IMO. – Lqueryvg 1 November 2015 в 00:19
  • 5
    Я просто быстро просмотрел справочную страницу, не видно, что такое файл и что такое symllink, или не так ли? – Andy 11 May 2018 в 21:09
$ yum install -y yum-utils

$ repoquery -l packagename
73
ответ дан Barry 17 August 2018 в 14:24
поделиться

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

: 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
3
ответ дан barrycarter 17 August 2018 в 14:24
поделиться

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

0
ответ дан Haabda 17 August 2018 в 14:24
поделиться
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.

130
ответ дан Levit 17 August 2018 в 14:24
поделиться
  • 1
    Кажется, это эквивалент dpkg -L для всех ya'll, которые не хотят устанавливать другой пакет только для отображения файлов. – Dmitry Minkovsky 4 November 2014 в 02:08
  • 2
    @dimadima: вопрос был о yum (= RHEL-системах), который использует rpm как собственный менеджер пакетов ( R ed Hat P acket М anager). Если OP будет находиться в системе debian / ubuntu / .., dpkg будет способ, потому что это бэкенд apt . – Levit 4 November 2014 в 08:15
  • 3
    @Levit: Довольно уверен в том, что dimadima пытается сказать, что это не строго отвечает на вопрос - вы не используете yum, а rpm, который имеет основное значение, что пакет необходимо установить (который OP явно не сказал, был его сценарий). Он просто делал параллельное сравнение rpm == dpkg / yum == apt, чтобы объяснить это, если кто-то был знаком с упаковкой на базе Debian, а не с упаковкой на основе RH. – tne 31 January 2015 в 15:16
  • 4
    ^ 1, потому что по какой-то причине это работает, и принятый ответ ничего не возвращает – Izkata 2 May 2016 в 19:30
  • 5
    Кажется, что нет yum, эквивалентного командам rpm -ql и repoquery -l (из yum-utils) для отображения локальных и удаленных файлов соответственно. – w17t 12 June 2017 в 14:37

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

rpm -qlp /path/to/fileToList.rpm

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

rpm -ql packageName
27
ответ дан Vadim Kotov 17 August 2018 в 14:24
поделиться
  • 1
    если у вас нет файла пакета (. rpm), но у вас установлен пакет, попробуйте rpm -ql packageName – Jared Updike 10 May 2011 в 02:24
  • 2
    если у вас нет пакета, и он не установлен, вы можете найти URL-адрес пакета с youdownload --urls. – kamae 30 June 2011 в 09:43
  • 3
    Это должно быть yumdownloader --urls – Evgeni Sergeev 1 October 2013 в 07:43

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

dnf repoquery -l <pkg-name>

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

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


для листинга установлена или local (*.rpm files) есть rpm -ql

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

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

0
ответ дан w17t 17 August 2018 в 14:24
поделиться
Другие вопросы по тегам:

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