Pregunta ¿Cómo saber desde qué repositorio yum se ha instalado un paquete?


Después de instalar un paquete por yum (con varios repositorios configurados), ¿cómo puedo encontrar desde qué repositorio se ha instalado?

Si corro yum info package-name (o yum list package-name), Solo puedo ver que el paquete esta "instalado".


134
2017-09-03 15:15


origen


Gran pregunta Instalé yum-utils y probé uno que se llama repoquery, pero no tuve suerte. - Sean Staats
ver también serverfault.com/questions/90409/…:) - warren
@warren su enlace no es útil porque su enlace es una pregunta sobre "qué repo es un rpm almacenado en" pero esta pregunta pregunta "qué repo es un rpm INSTALLADO de". diferentes preguntas - Trevor Boyd Smith
si estas acostumbrado a hacer rpm -qa|grep NAME entonces tú puedes hacer yum list installed|grep NAME para encontrar de qué repo son las rpm. - Trevor Boyd Smith
@TrevorBoydSmith - hace 7 años, estaba cerca. Hoy es todavía similar. Nunca dije que era el mismo. Solo que estaba relacionado. - warren


Respuestas:


Con yum-utils instalado, repoquery proporcionará la información que busca (aquí 'epel' es el repositorio).

└─[$]> repoquery -i cherokee

Name        : cherokee
Version     : 0.99.49
Release     : 1.el5
Architecture: i386
Size        : 8495964
Packager    : Fedora Project
Group       : Applications/Internet
URL         : http://www.cherokee-project.com/
Repository  : epel
Summary     : Flexible and Fast Webserver
Description :
Cherokee is a very fast, flexible and easy to configure Web Server. It supports
the widespread technologies nowadays: FastCGI, SCGI, PHP, CGI, TLS and SSL
encrypted connections, Virtual hosts, Authentication, on the fly encoding,
Apache compatible log files, and much more.

75
2018-06-21 19:16



La devolución no parece funcionar bien, obtengo diferentes versiones de paquetes. yum info package_name, no parece consultar los repositorios en el mismo orden que yum. - Mike Miller
Lo mismo aquí en algunos servidores. yum info package_name Devuelve más resultados de lo que aparentemente repoquery. Esta es la razón por la que el intercambio de pila no debe bloquear los votos. - reflexiv
La respuesta de Xiong Chiamiov me pareció incorrecta. repoquery -i $pkg da repo a partir del cual un $pkg está disponible, no el repositorio desde el cual el $pkg fue instalado. Yo hice ese comando y rpm -qi $pkg Y obtuve diferentes números de versión. rpm resultó en un número de versión anterior al de repoquery.
Es posible que su copia local esté desactualizada o que se haya instalado con comandos adicionales para yum (por ejemplo, --use-mirror). No creo que sea posible siempre obtener la respuesta correcta - Xiong Chiamiov


¿Qué versión de yum?

En la versión actual, si el paquete instalado es la misma versión que la más reciente disponible, se muestra el repositorio desde el que se instaló.

$ yum info irssi
Installed Packages
Name       : irssi
Arch       : i586
Version    : 0.8.14
Release    : 1.fc11
Size       : 2.3 M
Repo       : installed
From repo  : updates
Summary    : Modular text mode IRC client with Perl scripting
URL        : http://irssi.org/
License    : GPLv2+
Description: Irssi is a modular IRC client with Perl scripting. Only text-mode
           : frontend is currently supported. The GTK/GNOME frontend is no
           : longer being maintained.

$ yum --version
3.2.23

Si hay un paquete más nuevo disponible, entonces se mostrará por separado, con la nueva versión que muestra el repositorio desde el que está disponible.


37
2017-09-03 16:25



Estoy usando yum 3.2.19 en CentOs 5.3 y la fila "Desde repo" no existe. - lg.
Sí ... lo estaba probando en 3.2.21, que no tiene esa información en ninguna parte. Cuando lo hice en mi caja que tiene 3.2.23, funcionó. - Alex
Ahora esta es la mejor solución, pero no es aplicable para RHEL / Centos 5.3. Acepto esta solución, pero estoy listo para elegir otra respuesta si será aplicable también para RHEL / Centos 5.3. - lg.
Esto es un no-go en CentOS 5.5 tampoco. - Mike Miller
"From rep" no está disponible incluso en centos 5.8 - sepehr


Llegando tarde, pero (al menos en Fedora 15) se puede usar yumdb para consultas similares:

yumdb info 'python*'

Y lo que realmente necesitaba para listar paquetes de repo (s) dado:

yumdb search from_repo 'my-*-repo'

18
2017-10-26 09:01



Funciona también en Fedora 14. - lg.
trabaja en RHEL 6.2 - pixelbeat


Si todo lo demás falla, puede inspeccionar el yumdb manualmente. Se encuentra en /var/lib/yum/yumdb y contiene información detallada sobre cada paquete instalado. Estarás particularmente interesado en from_repo. Por ejemplo, para el bind-utils paquete:

# for i in /var/lib/yum/yumdb/b/*bind-utils*/*; do echo $i: `cat $i`; done
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/checksum_data: 39f7840f93d3d76825a9e8da79cfe0366f7fad68f018a273477aee62cccfa3f4
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/checksum_type: sha256
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/command_line: install bind-utils
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/from_repo: updates
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/from_repo_revision: 1397654451
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/from_repo_timestamp: 1397654759
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/installed_by: 0
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/reason: user
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/releasever: 6

Para obtener solo la información que desea:

# cat /var/lib/yum/yumdb/b/*bind-utils*/from_repo
updates

Las versiones posteriores proporcionarán aún más datos; por ejemplo, en EL 7, el espejo exacto y la URL desde donde se descargó el paquete se almacenan aquí.


8
2018-05-25 04:19



+1. Pero es incluso mejor hacer algo como: for i in /var/lib/yum/yumdb/b/*bind-utils*/*; do echo $i: `cat $i` | grep -oP 'from_repo:\ \K.*'; done, que en el ejemplo anterior devuelve: updates - ¡Mucho más legible! - Greg Dubicki
@GregDubicki El objetivo del comando era mostrar más del contexto de lo que está sucediendo y cómo se almacenan las cosas. Aparentemente no lo hizo: No hay necesidad de grep Cualquier cosa aquí, e incluso puedes soltar el bucle. Una muy simple cat /var/lib/yum/yumdb/b/*bind-utils*/from_repo es todo lo que necesitas. - Michael Hampton♦


rpm -qi packagename

Te diré el vendedor y el empaquetador.


6
2018-02-09 14:48





Si el paquete se instaló recientemente, puede buscar en / var / cache / yum.

Dentro de ese directorio, hay un directorio para cada repo, y en ese directorio de paquetes. Entonces, harías algo como:

find /var/cache/yum -name [package-name]*

Sin embargo, el caché debe estar habilitado en su archivo /etc/yum.conf:

cachedir=/var/cache/yum
keepcache=1

Tenga en cuenta que un yum clean [packages|all] borrará el directorio de caché.

Si el directorio de caché está vacío, hay una forma alternativa. La información que se lee por yum info [package] proviene de /var/cache/yum/[repo◆/primary.xml.gz

Puedes mirar a través del archivo ingresando:

gunzip -d -c /var/cache/yum/[repo]/primary.xml.gz | grep '<name>[package]'

Sin embargo, en máquinas donde yum info [package] no muestra "From repo:", como lo indica 'theotherreceive', es porque no está en el archivo primary.xml, por lo que no habrá manera de recuperar esa información. Por lo tanto, si el paquete está en dos o más archivos primary.xml, tendrá que determinar la prioridad de repo en su sistema.


4
2017-09-03 16:36



Esta solución puede ser una opción (la voto), pero estoy buscando una respuesta definitiva. - lg.


Para ver qué instaló desde el repositorio de epel: (Debería funcionar en Centos 5.5), tenga en cuenta que si no tiene un repositorio llamado epel, escupirá todo lo que esté instalado.

repoquería --repoid = epel -a | xargs yum list instalado


4
2018-04-07 21:20



Esto parece funcionar siempre que no haya un paquete actualizado en el repositorio. Así que necesitas ejecutar yum update justo antes de usarlo. - codewaggle


Basado en y respuesta por Swoogan
En RedHat y CentOS uno puede hacer

sudo grep -ir PACKAGE_NAME /var/cache/yum/

Los resultados deben verse como

Binary file /var/cache/yum/REPOSITORY_NAME/primary.xml.gz.sqlite matches

Dónde nombre de repositorio  es el repositorio donde se puede encontrar su paquete, y probablemente se instaló desde el primero en una lista (vea yum repolist)


3
2018-05-30 00:19