CentOS / RHEL / Fedora 22 ou anterior
yum list installed | grep @epel
Fedora 23 ou posterior
dnf list installed | grep @epel
Como posso obter uma lista de todos os pacotes RPM que foram instalados no meu sistema a partir de um repositório específico (por exemplo, "epel")?
A partir do RHEL6, como sugerido em esta resposta do stackoverflow , há um método mais completo de fazer isso com yumdb
:
yumdb search from_repo REPOID*
O repoid leva cartões selvagens.
Se formos trapacear e canalizar a saída, poderemos obter um efeito bonito também. Aqui está um usando awk
yumdb search from_repo REPOID* |awk -F"\n" '{ RS=""; print $1 }'
Usando egrep
ou grep -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
dnf repo-pkgs <repoid> list installed
O comando acima usa DNF para listar os pacotes instalados a partir do <repoid>
. Observe que repo-pkgs
é apenas um alias de repository-packages
.
Das man
páginas:
man dnf | grep "repository-packages.*list.*installed" -A 1
Leitura adicional:
man dnf
Grepping a saída do yum é a maneira mais óbvia:
yum list installed | grep @epel
No entanto, você não pode exibir propriedades de pacotes extras e é difícil analisá-lo 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
Exemplo de epel
de saídas:
# 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 cabeçalho Vendor
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 cabeçalho Vendor
do seu repositório é único entre repositórios diferentes.
Para pessoas que querem apenas encontrar repositórios ausentes:
yum list installed | awk '{print $3}' | sort | uniq
Isso deve retornar todos os repositórios dos quais você tem pacotes instalados.