¿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 egrepogrep -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=REPONAMEporque, según la -qopción de la página de manual,
-qarealmente 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 repoquerydel paquete yum-utilses 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 installedse 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 Vendorencabezado 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 Vendorencabezado 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.