¿Puede yum decirme cuál de mis repositorios proporciona un paquete en particular?


Esperemos que sea una versión corta de la pregunta: Si estoy en una máquina que tiene instalado un paquete en particular, ¿hay un comando yum que me diga cuál de los repositorios configurados proporcionó ese paquete? (O alternativamente, qué repositorio proporcionaría un paquete aún por instalar.)

Fondo en caso de que se necesite algún contexto: Tenemos un laberinto de repositorios yum de los que extraemos. Tengo una máquina que tiene un paquete rpm particular instalado, y otra máquina con un aparentemente insuficiente laberinto de repositorios configurados, por lo que no soy capaz de instalar el paquete que quiero en esa máquina. Necesito agregar los repositorios mínimos necesarios a la nueva máquina. No puedo simplemente disparar los repositorios de una máquina a la otra. Y simplemente salir y agarrar las rpm no es una opción porque necesito que esto sea reproducible.

Author: Brian Deacon, 2009-03-11

6 answers

yum list packagename

Que mostrará desde qué repositorio se encuentra el paquete en la tercera columna de la salida.

Para los paquetes ya instalados, eso no funcionará, ya que la tercera columna muestra solo "instalado". En ese caso puede hacer, por ejemplo, "rpm-qi packagename", normalmente las etiquetas Vendor, Packager y Build Host darán una indicación a qué repositorio pertenece el paquete. También es bastante común que algún símbolo de repositorio se agregue al número de versión del paquete.

 32
Author: janneb,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-05-16 14:17:16
repoquery -i {packagename} 

Esto le dará el nombre real del repositorio frente al inútil "instalado" que yum devuelve. repoquery es proporcionado por yum-utils.

 24
Author: 8None1,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-12-02 20:00:56

Puede usar yum -v search que le mostrará los paquetes junto con el repositorio en el que está presente. Si también agrega --showduplicates verá todas las versiones de ese paquete.

Crédito a: http://www.spinics.net/linux/fedora/yum/msg11975.html

 11
Author: akostadinov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-08-29 16:18:15

Para un solo paquete, puede encontrar esto con

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

Reemplaza PACKAGE PACKAGE con el nombre del paquete que te interesa.

Puede encontrar todos los paquetes que provienen de un repositorio específico con

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

Reemplace REP REPO con el id del repositorio que le interesa; puede ver los id de todos sus repositorios habilitados con yum repolist.

 2
Author: sciurus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-04-11 04:16:08

Aquí hay algunas maneras de descubrir el repositorio para un paquete instalado dado:

rpm -qi {packagename}

O

repoquery -i {packagename}

Referencias:

 1
Author: jeffmcneill,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-09-10 16:43:54
yum reinstall [package_name]

Luego, cuando se le pida que confirme, puede elegir N para no cambiar su sistema:

Salida de muestra en un 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]:
 0
Author: lcfd,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-10-24 06:48:15