linux - sistema - ¿Puede yum decirme cuál de mis repositorios proporciona un paquete particular?
yum linux (6)
Esperemos que la 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).
Antecedentes en caso de que se necesite algún contexto: tenemos un laberinto de repositorios de yum de los que extraemos Tengo una máquina que tiene un paquete rpm particular instalado, y otra máquina con un laberinto aparentemente insuficiente de repositorios configurados, 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 disparar los repositorios de una máquina a la otra. Y salir y agarrar las rpm no es una opción porque necesito que esto sea reproducible.
Aquí hay algunas formas de descubrir el repositorio para un paquete instalado dado:
rpm -qi {packagename}
o
repoquery -i {packagename}
Referencias
Para un solo paquete, puede encontrar esto con
PACKAGE=ruby-enterprise
repoquery --qf "%{repoid}" $PACKAGE
Reemplace $ PACKAGE con el nombre del paquete que le 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 $ REPO con la identificación del repositorio que le interesa; Puedes ver los ID de todos tus repositorios habilitados con yum repolist
.
Puede usar la 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
repoquery -i {packagename}
Esto le dará el nombre de repositorio real frente a la "instalación" inútil que devuelve yum. la repoquería es proporcionada por yum-utils.
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 solo "instalado". En ese caso, puede hacer, por ejemplo, "rpm -qi nombre del paquete", por lo general, las etiquetas Proveedor, Empaquetador y Generar host darán una indicación de a qué depósito pertenece el paquete. También es bastante común que algunos símbolos de recompra se agreguen al número de versión del paquete.
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]: