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.

Foi útil?

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]:
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top