Назад | Перейти на главную страницу

Как узнать, из какого репозитория yum был установлен пакет?

После того, как я установил пакет с помощью yum (с несколькими настроенными репозиториями), как я могу узнать, из какого репозитория он был установлен?

Если я сбегу yum info package-name (или yum list package-name) Я вижу только то, что пакет "установлен".

После установки yum-utils репозиторий предоставит информацию, которую вы ищете (здесь «epel» - репозиторий).

└─[$]> repoquery -i cherokee

Name        : cherokee
Version     : 0.99.49
Release     : 1.el5
Architecture: i386
Size        : 8495964
Packager    : Fedora Project
Group       : Applications/Internet
URL         : http://www.cherokee-project.com/
Repository  : epel
Summary     : Flexible and Fast Webserver
Description :
Cherokee is a very fast, flexible and easy to configure Web Server. It supports
the widespread technologies nowadays: FastCGI, SCGI, PHP, CGI, TLS and SSL
encrypted connections, Virtual hosts, Authentication, on the fly encoding,
Apache compatible log files, and much more.

Какая версия yum?

В текущей версии, если установленный пакет имеет ту же версию, что и самый последний доступный, отображается репо, из которого он был установлен.

$ yum info irssi
Installed Packages
Name       : irssi
Arch       : i586
Version    : 0.8.14
Release    : 1.fc11
Size       : 2.3 M
Repo       : installed
From repo  : updates
Summary    : Modular text mode IRC client with Perl scripting
URL        : http://irssi.org/
License    : GPLv2+
Description: Irssi is a modular IRC client with Perl scripting. Only text-mode
           : frontend is currently supported. The GTK/GNOME frontend is no
           : longer being maintained.

$ yum --version
3.2.23

Если доступен более новый пакет, он будет показан отдельно, а в новой версии будет показано репо, из которого он доступен.

Уже поздно, но (по крайней мере, в Fedora 15) можно использовать yumdb для подобных запросов:

yumdb info 'python*'

И что мне действительно нужно для перечисления пакетов из данного репо (ов):

yumdb search from_repo 'my-*-repo'

Если ничего не помогает, вы можете проверить yumdb вручную. Он расположен в /var/lib/yum/yumdb и содержит подробную информацию о каждом установленном пакете. Вам будет особенно интересно from_repo. Например, для bind-utils пакет:

# for i in /var/lib/yum/yumdb/b/*bind-utils*/*; do echo $i: `cat $i`; done
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/checksum_data: 39f7840f93d3d76825a9e8da79cfe0366f7fad68f018a273477aee62cccfa3f4
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/checksum_type: sha256
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/command_line: install bind-utils
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/from_repo: updates
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/from_repo_revision: 1397654451
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/from_repo_timestamp: 1397654759
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/installed_by: 0
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/reason: user
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/releasever: 6

Чтобы получить именно ту информацию, которую вы хотите:

# cat /var/lib/yum/yumdb/b/*bind-utils*/from_repo
updates

Более поздние версии предоставят еще больше данных; например, в EL 7 здесь хранится точное зеркало и URL-адрес, с которого был загружен пакет.

rpm -qi packagename

Подскажет продавец и упаковщик

Чтобы увидеть, что установлено из репо epel: (Должно работать под Centos 5.5) обратите внимание, если у вас нет репо с именем epel, он будет выплевывать все, что установлено.

repoquery --repoid = epel -a | список xargs yum установлен

Если пакет был установлен недавно, вы можете посмотреть / var / cache / yum.

В этом каталоге есть каталог для каждого репо, и в нем каталог пакетов. Итак, вы бы сделали что-то вроде:

find /var/cache/yum -name [package-name]*

Однако в вашем файле /etc/yum.conf необходимо включить кеш:

cachedir=/var/cache/yum
keepcache=1

Обратите внимание, что yum clean [packages|all] очистит каталог кеша.

Если каталог кеша пуст, есть альтернативный способ. Информация, которую читает yum info [package] происходит из /var/cache/yum/[repo provided/primary.xml.gz

Вы можете просмотреть файл, введя:

gunzip -d -c /var/cache/yum/[repo]/primary.xml.gz | grep '<name>[package]'

Однако на машинах, где yum info [package] не отображает «Из репо:», как указано «theotherreceive», это потому, что его нет в файле primary.xml, поэтому получить эту информацию будет невозможно. Следовательно, если пакет находится в двух или более файлах primary.xml, вам нужно будет определить приоритет репо в вашей системе.

На основании и ответ Swoogan
В RedHat и CentOS можно делать

sudo grep -ir PACKAGE_NAME /var/cache/yum/

Результат должен выглядеть примерно так

Binary file /var/cache/yum/REPOSITORY_NAME/primary.xml.gz.sqlite matches

куда repository_name - это репозиторий, в котором можно найти ваш пакет, и, вероятно, он был установлен из первого в списке (см. yum repolist)

Самый простой и понятный подход без установки каких-либо дополнительных инструментов, поиска или вывода посторонней информации - это просто:

yum list installed [package name]

В третьем столбце будет указан идентификатор репозитория, из которого был установлен пакет.

Это было упомянуто в комментарии к исходному вопросу с использованием grep, но это не обязательно. Вы можете просто передать имя пакета прямо в yum фильтровать.

Эта информация собрана где-нибудь? В пакете нет этой информации, и yum все равно, когда он найдет пакет. Вероятно, вы могли бы собрать все вместе, выяснив, какие репозитории имеют пакет, а затем определить, какой из них имеет приоритет.

Не лучшее решение, но я обнаружил, что доступный список yum покажет вам, где доступна самая последняя версия каждого пакета, например:

список вкусняшек | grep gstreamer

PackageKit-gstreamer-plugin.x86_64 0.3.16-1.fc10          updates               

bluez-gstreamer.i386 4.30-2.fc10 обновления
gstreamer.i386 0.10.21-2.fc10 шляпа-федора
федора gstreamer-devel.i386 0.10.21-2.fc10
gstreamer-devel.x86_64 0.10.21-2.fc10 Fedora
gstreamer-plugins-bad-devel.i386 0.10.9-1.fc10 без rpmfusion
gstreamer-plugins-bad-devel.x86_64 0.10.9-1.fc10 без rpmfusion

Таким образом, вы можете создать список yum, доступный в вашем пакете, затем сравнить установленную версию с помощью установленного списка yum и иметь хорошее представление о том, из какого репо он был получен, если версии совпадают.

Вы можете добавить подробный флаг к "yum info":

yum info -v <package_name>

Репозиторий установки будет под выходом «Из репо».

Итак, я знаю, что это несколько старый вопрос, но он появляется в поиске в Google того, что я искал.

Также существует способ получить уникальный список используемых репозиториев:

# repoquery -ai | grep 'Repository  : ' | sort | uniq

В нем будут перечислены репозитории, из которых были установлены пакеты.

Ни одна из вышеперечисленных команд у меня не сработала. Это то, что мне пришлось сделать.

yum provides "*compat-libstdc*"

Хорошая ссылка здесь.

https://access.redhat.com/sites/default/files/attachments/rh_yum_cheatsheet_1214_jcs_print-1.pdf

Самый простой способ:

rpm -qa --qf '%{NAME} %{VENDOR}\n'

Дополнительные советы и рекомендации доступны здесь: http://wiki.centos.org/TipsAndTricks/YumAndRPM