Come posso ottenere un elenco di tutti i pacchetti RPM che sono stati installati sul mio sistema da un determinato repository (ad es. "Epel")?
Come posso ottenere un elenco di tutti i pacchetti RPM che sono stati installati sul mio sistema da un determinato repository (ad es. "Epel")?
Risposte:
yum list installed | grep @epel
dnf list installed | grep @epel
A partire da RHEL6, come suggerito in questa risposta StackOverflow , esiste un metodo più completo per farlo con yumdb
:
yumdb search from_repo REPOID*
Il repoid prende i jolly.
Se stiamo per ingannare e convogliare l'output, allora possiamo ottenere anche un effetto di stampa carina. Eccone uno che usaawk
yumdb search from_repo REPOID* |awk -F"\n" '{ RS=""; print $1 }'
Utilizzando egrep
ogrep -e
yumdb search from_repo REPOID* |egrep -v '(from_repo|^$)'
Per elencare tutti i pacchetti disponibili in un repository specificato, eseguire:
repoquery -a --repoid=REPONAME
repoquery -qa --repoid=REPONAME
repoquery -a --repoid=REPONAME
perché secondo l' -q
opzione della pagina man è per la compatibilità rpmquery, non fa nulla.
-qa
effettivamente fallisce. Non posso votare il commento a causa della rimozione precedente del voto :( Sto aggiornando la risposta per riflettere questo.
L'output di Grepping yum è il modo più ovvio:
yum list installed | grep @epel
Tuttavia, non è possibile visualizzare ulteriori proprietà dei pacchetti ed è difficile analizzare uno script. Lo strumento repoquery
dal pacchetto yum-utils
è lo strumento, ma non è installato per impostazione predefinita.
repoquery -a --installed --qf "%{ui_from_repo} %{name}" | grep '^@epel'
e un esempio più complesso:
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
può essere utilizzato per recuperare le stesse informazioni di yumdb search from_repo <repoid>
, ma in un formato diverso.
# 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
epel
Output di esempio :
# 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
È possibile controllare l' Vendor
intestazione di rpms installati.
Questo esempio elenca tutti i pacchetti dal repository VideoLAN :
rpm -q -a --qf "%{Name}:%{Vendor}\n" \
| grep -F ":VideoLAN Project (http://www.videolan.org)"
Ovviamente, devi determinare se l' Vendor
intestazione del tuo repository è unica tra i diversi repository.
Per le persone che vogliono semplicemente trovare repository mancanti:
yum list installed | awk '{print $3}' | sort | uniq
Questo dovrebbe restituire tutti i repository da cui hai installato i pacchetti.