Можете ли вы сказать мне, какой из моих репозиториев предоставляет тот или иной пакет?

StackOverflow https://stackoverflow.com/questions/635869

  •  10-07-2019
  •  | 
  •  

Вопрос

Надеюсь, короткая версия вопроса:Если я нахожусь на машине, на которой установлен определенный пакет, есть ли команда yum, которая сообщит мне, какой из настроенных репозиториев предоставил этот пакет?(Или, альтернативно, какой репозиторий предоставит еще не установленный пакет.)

Предыстория на случай, если потребуется некоторый контекст:У нас есть лабиринт репозиториев yum, из которых мы черпаем.У меня есть машина, на которой установлен определенный пакет RPM, и другая машина, на которой явно недостаточно настроен лабиринт репозиториев, поэтому я не могу установить нужный пакет на эту машину.Мне нужно добавить минимально необходимые репозитории на новую машину.Я не могу просто перебрасывать репозитории с одной машины на другую.И просто выйти и зафиксировать обороты — это не вариант, потому что мне нужно, чтобы это было воспроизводимо.

Это было полезно?

Решение

yum list packagename

Это покажет, из какого репозитория пакет находится в третьем столбце вывода.

Для уже установленных пакетов это не сработает, поскольку в третьем столбце отображается просто "установлен". В этом случае вы можете сделать, например, "rpm -qi packagename", обычно теги Vendor, Packager и Build Host будут указывать, к какому репозиторию принадлежит пакет. Также довольно часто для некоторых символов репо добавляется номер версии пакета.

Другие советы

repoquery -i {packagename} 

Это даст вам реальное имя репо по сравнению с бесполезным " установленным " что ням возвращается. repoquery предоставляется yum-utils.

Вы можете использовать yum -v search , который будет показывать вам пакеты вместе с репозиторием, в котором он присутствует. Если вы также добавите - showduplicates , вы увидите все версии этот пакет.

Предоставьте кредит: http://www.spinics.net/linux/fedora /yum/msg11975.html

Для одного пакета это можно найти с помощью

PACKAGE=ruby-enterprise
repoquery --qf "%{repoid}" $PACKAGE

Замените $ PACKAGE именем нужного вам пакета.

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

REPO=ruby-enterprise-opt
repoquery --repoid=$REPO -a --qf "%{name}" | sort > repo_packages
rpm -qa --qf "%{name}\n" | sort > installed_packages
comm -1 -2 repo_packages installed_packages

Замените $ REPO на идентификатор нужного вам хранилища; вы можете увидеть идентификаторы всех ваших включенных репозиториев с помощью yum repolist .

Вот несколько способов обнаружения репозитория для данного установленного пакета:

rpm -qi {packagename}

или

repoquery -i {packagename}

Использованная литература:

yum reinstall [package_name]

Затем, когда вас попросят подтвердить, вы можете выбрать N, чтобы не менять вашу систему:

Пример вывода на сентос:

Resolving Dependencies
--> Running transaction check
---> Package mc.x86_64 1:4.6.1a-35.el5 set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

==============================================================================================================================================
 Package                      Arch                             Version                                   Repository                      Size
==============================================================================================================================================
Reinstalling:
 mc                           x86_64                           1:4.6.1a-35.el5                           base                           2.1 M

Transaction Summary
==============================================================================================================================================
Remove        0 Package(s)
Reinstall     1 Package(s)
Downgrade     0 Package(s)

Total download size: 2.1 M
Is this ok [y/N]:
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top