2009-03-11 6 views
28

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

Antecedentes 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 de rpm particular instalado y otra máquina con un laberinto de repositorios aparentemente insuficiente configurado, por lo que no puedo instalar el paquete que quiero en esa máquina. Necesito agregar los repositorios mínimos necesarios a la nueva máquina. No puedo simplemente tomar los depósitos 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.

Respuesta

30
yum list packagename 

Esto mostrará de qué repositorio está el paquete en la tercera columna de la salida.

Para los paquetes ya instalados, eso no funcionará, ya que la tercera columna muestra simplemente "instalado". En ese caso, puede hacer, p. "rpm -qi nombredelpaquete", normalmente las etiquetas Proveedor, Empaquetador y Generador de host darán una indicación de a qué depósito pertenece el paquete. También es bastante común que algún símbolo de repo se anexe al número de versión del paquete.

+0

Atómica Repo usuarios: Vendedor está en blanco para RPM atómicas, pero si el "Construir Host" es "archelon", es de Atomic. – johnorourke

23
repoquery -i {packagename} 

Esto le dará el nombre del repositorio real frente a la "instalación" inútil que devuelve yum. repoquery es proporcionada por yum-utils.

1

Para un solo paquete, se puede encontrar esto con

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

Reemplazar $ PAQUETE con el nombre del paquete que le interesan.

puede encontrar todos los paquetes que vienen 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 

Reemplazar $ REPO con el id del repositorio se preocupa por; Puede ver los ID de todos sus repositorios habilitados con yum repolist.

0
yum reinstall [package_name] 

Luego, cuando se le solicite confirmación, puede elegir N para no cambiar el sistema:

Salida de ejemplo 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]: 
Cuestiones relacionadas