¿Puede decirme cuál de mis repositorios proporciona un paquete en particular?
-
10-07-2019 - |
Pregunta
Con suerte, versión corta de la pregunta: si estoy en una máquina que tiene un paquete en particular instalado, ¿hay un comando yum que me diga cuál de sus repositorios configurados proporciona 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 yum de los que sacamos. Tengo una máquina que tiene un paquete rpm en 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 disparar los repositorios de una máquina a otra. Y solo salir y agarrar las rpm no es una opción porque necesito que esto sea reproducible.
Solución
yum list packagename
Eso mostrará desde qué repositorio está el paquete en la tercera columna de la salida.
Para paquetes ya instalados, eso no funcionará, ya que la tercera columna muestra solo "instalado". En ese caso puedes hacer p. " rpm -qi packagename " ;, típicamente las etiquetas Vendor, Packager y Build Host darán una indicación de a qué repositorio pertenece el paquete. También es bastante común que se agregue algún símbolo de repositorio al número de versión del paquete.
Otros consejos
repoquery -i {packagename}
Esto le dará el nombre real del repositorio frente al inútil '' instalado '' ese ñam regresa. el repositorio es proporcionado por yum-utils.
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
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; puede ver los identificadores de todos sus repositorios habilitados con yum repolist
.
Aquí hay algunas formas de descubrir el repositorio para un paquete instalado dado:
rpm -qi {packagename}
o
repoquery -i {packagename}
Referencias:
yum reinstall [package_name]
Luego, cuando se le solicite que confirme, puede elegir N para no cambiar su sistema:
Ejemplo de salida 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]: