Como posso obter uma lista de todos os pacotes RPM que foram instalados no meu sistema em um repositório específico (por exemplo, "epel")?
Como posso obter uma lista de todos os pacotes RPM que foram instalados no meu sistema em um repositório específico (por exemplo, "epel")?
Respostas:
yum list installed | grep @epel
dnf list installed | grep @epel
No RHEL6, conforme sugerido nesta resposta do stackoverflow , há um método mais completo de fazer isso com yumdb:
yumdb search from_repo REPOID*
O repoid recebe curingas.
Se vamos trapacear e canalizar a saída, também podemos obter um efeito bonito de impressão. Aqui está um usandoawk
yumdb search from_repo REPOID* |awk -F"\n" '{ RS=""; print $1 }'
Usando egrepougrep -e
yumdb search from_repo REPOID* |egrep -v '(from_repo|^$)'
Para listar todos os pacotes disponíveis em um repositório especificado, faça:
repoquery -a --repoid=REPONAME
repoquery -qa --repoid=REPONAME
repoquery -a --repoid=REPONAMEporque, de acordo com a -qopção da página de manual, é compatível com rpmquery e não faz nada.
-qarealmente falha. Eu não posso upvote o comentário devido à remoção anteriormente a upvote :( Estou atualizando a resposta para refletir isso.
A saída de Grepping yum é a maneira mais óbvia:
yum list installed | grep @epel
No entanto, você não pode exibir propriedades extras de pacotes e é difícil analisar com um script. A ferramenta repoquerydo pacote yum-utilsé a ferramenta, mas não é instalada por padrão.
repoquery -a --installed --qf "%{ui_from_repo} %{name}" | grep '^@epel'
e um exemplo mais complexo:
repoquery -a --installed --qf "%-20{ui_from_repo} %-30{name} %-7{arch} %{epoch}:%-12{version} %-4{release}" | grep '^@epel'
yum repo-pkgs <repoid> list installedpode ser usado para recuperar as mesmas informações de yumdb search from_repo <repoid>, mas em um 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
epelSaídas de amostra :
# 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
Você pode verificar o Vendorcabeçalho dos rpms instalados.
Este exemplo lista todos os pacotes do repositório VideoLAN :
rpm -q -a --qf "%{Name}:%{Vendor}\n" \
| grep -F ":VideoLAN Project (http://www.videolan.org)"
Obviamente, você precisa determinar se o Vendorcabeçalho do seu repositório é único entre diferentes repositórios.
Para pessoas que só querem encontrar repositórios ausentes:
yum list installed | awk '{print $3}' | sort | uniq
Isso deve retornar todos os repositórios de onde você tem pacotes instalados.