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


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

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


130
2017-09-03 15:15


Источник


Отличный вопрос! Я установил yum-utils и попробовал один из них utils, называемый repoquery, но не повезло. - Sean Staats
смотрите также serverfault.com/questions/90409/... :) - warren
@warren ваша ссылка не полезна, потому что в вашей ссылке есть вопрос о том, «какое репо - это rpm, хранящееся», но этот вопрос спрашивает «какой РЕПО является УСТАНОВЛЕНЫ rpm from». разные вопросы. - Trevor Boyd Smith
если вы привыкли делать rpm -qa|grep NAME тогда ты можешь делать yum list installed|grep NAME найти то, что репо, - Trevor Boyd Smith
@TrevorBoydSmith - 7 лет назад, это было близко. Сегодня это все еще аналогичный. Никогда не говорил, что это одна и та же, Просто это было связано. - warren


Ответы:


Если yum-utils установлен, repoquery предоставит запрашиваемую информацию (здесь «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.

73
2018-06-21 19:16



repoquery, похоже, не работает правильно, я получаю разные версии пакетов, тогда yum info package_name, он, похоже, не запрашивает репозитории в том же порядке, что и yum. - Mike Miller
То же самое и на нескольких серверах. yum info package_name возвращает больше результатов, чем, по-видимому, repoquery. Вот почему обмен стеками не должен блокировать голоса. - reflexiv
Я нашел ответ Сюн Хяминова неправдой. repoquery -i $pkg дает репо, из которого $pkg , а не репо, из которого $pkg был установлен. Я сделал эту команду и rpm -qi $pkg и получили разные номера версий. rpm привели к более раннему номеру версии, чем к repoquery,
Возможно, ваша локальная копия устарела или она была установлена ​​с дополнительными командами yum (например, --use-mirror). Я не думаю, что можно всегда получите правильный ответ. - Xiong Chiamiov


Какая версия 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

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


35
2017-09-03 16:25



Я использую yum 3.2.19 на CentOs 5.3 и строка «From repo» не существует. - lg.
Да ... Я тестировал его на 3.2.21, который не имеет этой информации нигде. Когда я сделал это на моей коробке, которая имеет 3.2.23, она сработала. - Alex
Теперь это лучшее решение, но не применимо для RHEL / Centos 5.3. Я принимаю это решение, но я готов выбрать другой ответ, если он применим и для RHEL / Centos 5.3. - lg.
Это тоже не работает в CentOS 5.5. - Mike Miller
«От репутации» недоступно даже в centos 5.8 - sepehr


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

yumdb info 'python*'

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

yumdb search from_repo 'my-*-repo'

17
2017-10-26 09:01



Он также работает на Fedora 14 - lg.
работает на RHEL 6.2 - pixelbeat


Если все остальное не удается, вы можете вручную проверить 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-адрес, с которого был загружен пакет.


8
2018-05-25 04:19



+1. Но еще лучше сделать что-то вроде: for i in /var/lib/yum/yumdb/b/*bind-utils*/*; do echo $i: `cat $i` | grep -oP 'from_repo:\ \K.*'; done, который в приведенном выше примере возвращает: updates - гораздо читабельнее! - Greg Dubicki
@GregDubicki Точкой команды было показать больше контекста того, что происходит и как вещи хранятся. По-видимому, это не удалось: нет необходимости grep ничего здесь, и вы даже можете отказаться от цикла. Очень просто cat /var/lib/yum/yumdb/b/*bind-utils*/from_repo это все, что тебе нужно. - Michael Hampton♦


rpm -qi packagename

Скажу вам, продавец и упаковщик


6
2018-02-09 14:48





Если пакет был установлен недавно, вы можете посмотреть в / 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]/primary.xml.gz

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

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

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


4
2017-09-03 16:36



Это решение, возможно, вариант (я его проголосовал), но я ищу окончательный ответ. - lg.


Чтобы узнать, что установлено из repo epel: (Если вы работаете в Centos 5.5), обратите внимание, что если у вас нет репо с именем epel, он выплюнет все установленные вещи.

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


4
2018-04-07 21:20



Это, похоже, работает до тех пор, пока в репозитории не будет обновленного пакета. Поэтому вам нужно запустить yum-обновление непосредственно перед его использованием. - codewaggle


Основываясь на 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)


3
2018-05-30 00:19





Охватывается ли эта информация нигде? Пакет не имеет этой информации, и yum не заботится о том, чтобы найти пакет. Вы могли бы, вероятно, собрать его вместе, выяснив, какие у РЕПО пакеты, а затем определить, какой из них имеет приоритет.


1
2017-09-03 16:19



Это решение, возможно, вариант (я его голосую), но только для недавно установленного пакета, потому что я могу изменить репозиторий и их приоритет. - lg.


Не отличное решение, но я обнаружил, что доступный список 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 fedora
gstreamer-devel.i386 0.10.21-2.fc10 fedora
gstreamer-devel.x86_64 0.10.21-2.fc10 fedora
gstreamer-plugins-bad-devel.i386 0.10.9-1.fc10 rpmfusion-free
gstreamer-plugins-bad-devel.x86_64 0.10.9-1.fc10 rpmfusion-free

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


1
2017-09-03 16:37



Это правда, что пакет еще не установлен. - lg.
Хотя он точно не отвечает на вопрос OPs, это было очень полезно для меня, потому что оно работает в Centoss 5.5 с помощью только yum и других utils, и вы можете: 1. Удалить пакет затем запрос, чтобы увидеть, где репо переустанавливается , или 2. Запрос на другом компьютере без установленного пакета. - lreeder