Pode yum me dizer qual dos meus repositórios fornecer um pacote particular?
-
10-07-2019 - |
Pergunta
Versão Esperemos curta da pergunta: Se eu estou em uma máquina que tem um determinado pacote instalado, existe um comando yum que vai me dizer qual é configurado repositórios desde que pacote? (Ou alternativamente, o repositório daria um pacote ainda-a-ser-instalado.)
Fundo no caso de ser necessário algum contexto: Temos um labirinto de repositórios yum que retirar. Eu tenho uma máquina que tem um pacote rpm específico instalado, e uma outra máquina com um labirinto aparentemente insuficiente de repositórios configurados, e assim eu não sou capaz de instalar o pacote que eu quero para essa máquina. Eu preciso adicionar os repositórios necessárias mínimas para a nova máquina. Eu não posso simplesmente espingarda os repositórios de uma máquina para a outra. E apenas sair e pegar o rpm não é uma opção porque eu preciso que isso seja reprodutível.
Solução
yum list packagename
Isso vai mostrar a partir do qual repositório do pacote é na terceira coluna da saída.
Para os pacotes já instalados, que não vai funcionar, como mostra a terceira coluna apenas "instalado". Nesse caso, você pode fazer por exemplo "Rpm NomeDoPacote -qi", tipicamente o fornecedor, acondicionador e etiquetas de construção hospedeiras dará uma indicação de que o pacote pertence repositório. Também é bastante comum para algum símbolo repo ser acrescentado ao número da versão do pacote.
Outras dicas
repoquery -i {packagename}
Isto lhe dará o nome repo real vs o inútil "instalado" que retorna yum. repoquery é fornecido pelo yum-utils.
Você pode usar yum -v search
que iria mostrar-lhe pacotes juntamente com repo está presente em. Se você também adicionar --showduplicates
você vai ver todas as versões do pacote.
Crédito para: http://www.spinics.net/linux/fedora /yum/msg11975.html
Para um único pacote, você pode encontrar este com
PACKAGE=ruby-enterprise
repoquery --qf "%{repoid}" $PACKAGE
Substitua $ PACOTE com o nome do pacote que você gosta.
Você pode encontrar todos os pacotes que vieram de um repositório específico com
REPO=ruby-enterprise-opt
repoquery --repoid=$REPO -a --qf "%{name}" | sort > repo_packages
rpm -qa --qf "%{name}\n" | sort > installed_packages
comm -1 -2 repo_packages installed_packages
Substitua $ REPO com o id do repositório você se preocupa; você pode ver as identificações de todos os seus repositórios habilitados com yum repolist
.
Aqui estão algumas maneiras de descobrir o repositório para um determinado pacote instalado:
rpm -qi {packagename}
ou
repoquery -i {packagename}
Referências:
yum reinstall [package_name]
Em seguida, quando solicitado a confirmar, você pode escolher N para não mudar o seu sistema:
Exemplo de saída em um centos:
Resolving Dependencies
--> Running transaction check
---> Package mc.x86_64 1:4.6.1a-35.el5 set to be updated
--> Finished Dependency Resolution
Dependencies Resolved
==============================================================================================================================================
Package Arch Version Repository Size
==============================================================================================================================================
Reinstalling:
mc x86_64 1:4.6.1a-35.el5 base 2.1 M
Transaction Summary
==============================================================================================================================================
Remove 0 Package(s)
Reinstall 1 Package(s)
Downgrade 0 Package(s)
Total download size: 2.1 M
Is this ok [y/N]: