Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 1

yum list packagename

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

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

Ответ 2

repoquery -i {packagename} 

Это даст вам фактическое имя репо против неустановленного "установленного", которое возвращает yum. repoquery предоставляется yum-utils.

Ответ 3

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

Кредит: http://www.spinics.net/linux/fedora/yum/msg11975.html

Ответ 4

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

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.

Ответ 5

yum reinstall [package_name]

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

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

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