Jak mohu získat seznam všech RPM balíčků, které byly nainstalovány v mém systému, z konkrétního repa (např. „Epel“)?
yum list installed | grep @epel
dnf list installed | grep @epel
Od RHEL6, jak je navrženo v tato odpověď na stackoverflow , existuje mnohem důkladnější způsob, jak toho dosáhnout pomocí yumdb
:
yumdb search from_repo REPOID*
Repoid bere divoké karty.
Pokud se chystáme podvádět a posílat výstupy, můžeme dosáhnout i pěkného tisku. Zde je jeden pomocí awk
yumdb search from_repo REPOID* |awk -F"\n" '{ RS=""; print $1 }'
Pomocí egrep
nebo grep -e
yumdb search from_repo REPOID* |egrep -v '(from_repo|^$)'
Chcete-li zobrazit vše k dispozici balíčky v určeném úložišti, proveďte následující kroky:
repoquery -a --repoid=REPONAME
dnf repo-pkgs <repoid> list installed
Výše uvedený příkaz používá DNF pro seznam balíčků nainstalovaných z <repoid>
. Poznámka repo-pkgs
je jen alias repository-packages
.
Ze stránek man
:
man dnf | grep "repository-packages.*list.*installed" -A 1
Další čtení:
man dnf
Nejzřetelnějším způsobem je překvapení výstupu yumu:
yum list installed | grep @epel
Nemůžete však zobrazit další vlastnosti balíčků a je obtížné analyzovat skript. Nástroj repoquery
z balíčku yum-utils
je nástroj, ale ve výchozím nastavení není nainstalován.
repoquery -a --installed --qf "%{ui_from_repo} %{name}" | grep '^@epel'
a složitější příklad:
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
lze použít k načtení stejných informací jako yumdb search from_repo <repoid>
, ale v jiném formátu.
# 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
Ukázka výstupů 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
Můžete zkontrolovat záhlaví Vendor
nainstalovaných rpms.
Tento příklad uvádí seznam všech balíčků z úložiště VideoLAN:
rpm -q -a --qf "%{Name}:%{Vendor}\n" \
| grep -F ":VideoLAN Project (http://www.videolan.org)"
Je zřejmé, že musíte určit, zda záhlaví Vendor
vašeho úložiště je jedinečné mezi různými úložišti.
Pro lidi, kteří chtějí jen najít chybějící úložiště:
yum list installed | awk '{print $3}' | sort | uniq
To by mělo vrátit všechna úložiště, z nichž máte nainstalované balíčky.