¿Cómo puedo obtener una lista de todos los paquetes RPM que se han instalado en mi sistema desde un repositorio particular (por ejemplo, "epel")?
¿Cómo puedo obtener una lista de todos los paquetes RPM que se han instalado en mi sistema desde un repositorio particular (por ejemplo, "epel")?
Respuestas:
yum list installed | grep @epel
dnf list installed | grep @epel
A partir de RHEL6, como se sugiere en esta respuesta de stackoverflow , hay un método más completo para hacer esto con yumdb
:
yumdb search from_repo REPOID*
El repoid toma comodines.
Si vamos a engañar y canalizar la salida, también podemos lograr un efecto de impresión bonita. Aquí hay uno usandoawk
yumdb search from_repo REPOID* |awk -F"\n" '{ RS=""; print $1 }'
Usando egrep
ogrep -e
yumdb search from_repo REPOID* |egrep -v '(from_repo|^$)'
Para enumerar todos los paquetes disponibles en un repositorio especificado, haga:
repoquery -a --repoid=REPONAME
repoquery -qa --repoid=REPONAME
repoquery -a --repoid=REPONAME
porque, según la -q
opción de la página de manual,
-qa
realmente falla. No puedo votar a favor el comentario debido a que
Grepping la salida de yum es la forma más obvia:
yum list installed | grep @epel
Sin embargo, no puede mostrar propiedades de paquetes adicionales y es difícil de analizar con un script. La herramienta repoquery
del paquete yum-utils
es la herramienta, pero no está instalada de manera predeterminada.
repoquery -a --installed --qf "%{ui_from_repo} %{name}" | grep '^@epel'
y un ejemplo más complejo:
repoquery -a --installed --qf "%-20{ui_from_repo} %-30{name} %-7{arch} %{epoch}:%-12{version} %-4{release}" | grep '^@epel'
yum repo-pkgs <repoid> list installed
se puede usar para recuperar la misma información yumdb search from_repo <repoid>
, pero en un formato diferente.
# yum help repo-pkgs
repo-pkgs <repoid> <list|info|install|remove|upgrade|reinstall*|remove-or-*> [pkg(s)]
Treat a repo. as a group of packages, so we can install/remove all of them
aliases: repo-packages, repository-pkgs, repository-packages
Resultados de muestra epel
:
# yumdb search from_repo epel
htop-2.2.0-1.el7.x86_64
from_repo = epel
supervisor-3.1.4-1.el7.noarch
from_repo = epel
# yum repo-pkgs epel list installed
Installed Packages
htop.x86_64 2.2.0-1.el7 @epel
supervisor.noarch 3.1.4-1.el7 @epel
Puede verificar el Vendor
encabezado de los rpms instalados.
Este ejemplo enumera todos los paquetes del repositorio de VideoLAN :
rpm -q -a --qf "%{Name}:%{Vendor}\n" \
| grep -F ":VideoLAN Project (http://www.videolan.org)"
Obviamente, debe determinar si el Vendor
encabezado de su repositorio es único entre los diferentes repositorios.
Para las personas que solo quieren encontrar repositorios faltantes:
yum list installed | awk '{print $3}' | sort | uniq
Esto debería devolver todos los repositorios donde tiene instalados los paquetes.