Jak mogę uzyskać listę wszystkich pakietów RPM, które zostały zainstalowane w moim systemie z określonego repozytorium (np. „Epel”)?
Jak mogę uzyskać listę wszystkich pakietów RPM, które zostały zainstalowane w moim systemie z określonego repozytorium (np. „Epel”)?
Odpowiedzi:
yum list installed | grep @epel
dnf list installed | grep @epel
Począwszy od wersji RHEL6, zgodnie z sugestią zawartą w tej odpowiedzi na przepełnienie stosu, istnieje dokładniejsza metoda wykonania tego za pomocą yumdb
:
yumdb search from_repo REPOID*
Repoid bierze dzikie karty.
Jeśli zamierzamy oszukiwać i przesyłać dane wyjściowe, możemy również uzyskać efekt ładnego wydruku. Oto jeden używaawk
yumdb search from_repo REPOID* |awk -F"\n" '{ RS=""; print $1 }'
Za pomocą egrep
lubgrep -e
yumdb search from_repo REPOID* |egrep -v '(from_repo|^$)'
Aby wyświetlić listę wszystkich dostępnych pakietów w określonym repozytorium, wykonaj:
repoquery -a --repoid=REPONAME
repoquery -qa --repoid=REPONAME
repoquery -a --repoid=REPONAME
ponieważ zgodnie z -q
opcją man strona jest zgodna z rpmquery, nic nie robi.
-qa
faktycznie się nie udaje. Nie mogę głosować za komentarzem ze względu na wcześniejsze usunięcie opinii :( Aktualizuję odpowiedź, aby to odzwierciedlić.
Grepping yum jest najbardziej oczywistym sposobem:
yum list installed | grep @epel
Nie można jednak wyświetlić dodatkowych właściwości pakietów i trudno jest je przeanalizować za pomocą skryptu. Narzędzie repoquery
z pakietu yum-utils
jest narzędziem, ale nie jest domyślnie instalowane.
repoquery -a --installed --qf "%{ui_from_repo} %{name}" | grep '^@epel'
i bardziej złożony przykład:
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
można użyć do pobrania tych samych informacji co yumdb search from_repo <repoid>
, ale w innym formacie.
# 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
Przykładowe epel
wyniki:
# 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
Możesz sprawdzić Vendor
nagłówek zainstalowanych RPM.
W tym przykładzie wymieniono wszystkie pakiety z repozytorium VideoLAN :
rpm -q -a --qf "%{Name}:%{Vendor}\n" \
| grep -F ":VideoLAN Project (http://www.videolan.org)"
Oczywiście musisz ustalić, czy Vendor
nagłówek Twojego repozytorium jest unikalny wśród różnych repozytoriów.
Dla osób, które chcą tylko znaleźć brakujące repozytoria:
yum list installed | awk '{print $3}' | sort | uniq
Powinno to zwrócić wszystkie repozytoria, z których masz zainstalowane pakiety.