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 egrep
ougrep -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=REPONAME
porque, de acordo com a -q
opção da página de manual, é compatível com rpmquery e não faz nada.
-qa
realmente 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 repoquery
do 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 installed
pode 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
epel
Saí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 Vendor
cabeç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 Vendor
cabeç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.