Como posso instruir o yum a instalar uma versão específica do pacote X?

226

Se houver duas (ou mais) versões de um determinado RPM disponíveis em um repositório YUM, como instruir yumpara instalar a versão desejada?

Observando o serviço de compilação Koji, percebo que existem várias versões.

    ss # 1

slm
fonte

Respostas:

310

Para ver quais versões específicas estão disponíveis, yumvocê pode usar o --showduplicatesswitch. Ele fornece uma lista como "package name.architecture version":

$ yum --showduplicates list httpd | expand
Loaded plugins: fastestmirror, langpacks, refresh-packagekit
Loading mirror speeds from cached hostfile
 * fedora: mirror.steadfast.net

Available Packages
httpd.x86_64                        2.4.6-6.fc20                         fedora 
httpd.x86_64                        2.4.10-1.fc20                        updates

Quanto a instalar uma versão específica? Você pode anexar as informações da versão ao nome do pacote, removendo o nome da arquitetura, assim:

$ sudo yum install <package name>-<version info>

Por exemplo, neste caso, se eu quisesse instalar a versão mais antiga, 2.4.6-6, faria o seguinte:

$ sudo yum install httpd-2.4.6-6

Você também pode incluir as informações da versão ao especificar um pacote. Nesse caso, como estou lidando com o Fedora 20 (F20), as informações de lançamento seriam "fc20" e as informações de arquitetura também.

$ sudo yum install httpd-2.4.6-6.fc20
$ sudo yum install httpd-2.4.6-6.fc20.x86_64

repoquery

Se você não tiver certeza de que está construindo os argumentos corretamente, também pode consultar repoquery.

$ sudo yum install yum-utils  # (to get `repoquery`)
$ repoquery --show-duplicates httpd-2.4*
httpd-0:2.4.6-6.fc20.x86_64
httpd-0:2.4.10-1.fc20.x86_64

baixar e instalar

Você também pode usar uma das seguintes opções para baixar um RPM específico da Web e usá yum-lo para instalá-lo.

$ yum --downloadonly <package>
-or-
$ yumdownloader <package>

E instale-o assim:

$ sudo yum localinstall <path to rpm>

E se eu quiser baixar tudo o que o pacote X requer?

$ yumdownloader --resolve <package>

Exemplo

$ yumdownloader --resolve vim-X11
Loaded plugins: langpacks, presto, refresh-packagekit
Adding en_US to language list
--> Running transaction check
---> Package vim-X11.x86_64 2:7.3.315-1.fc14 set to be reinstalled
--> Finished Dependency Resolution
vim-X11-7.3.315-1.fc14.x86_64.rpm                              | 1.1 MB     00:01

Observe que está fazendo uma verificação de dependência e baixando as peças ausentes. Veja minha resposta que o aborda com mais detalhes aqui: Como baixar um arquivo do repositório e instalá-lo posteriormente sem conexão com a Internet? .

Referências

slm
fonte
1
Eu não acho que funcione para pacotes entre a versão mais recente localizada @updatese a versão inicial do sistema operacional localizado @fedora. Por exemplo, se você tentar instalar httpd-2.4.8-1, yumdiria que o pacote não está disponível.
Pergunta Overflow
@QuestionOverflow - não segue. Essa versão não aparece como disponível no repositório.
slm
1
Deixe-me tentar novamente com um exemplo real do meu yum log. python-libs-2.7.5-12.fc20.x86_64foi instalado no meu computador, mas foi substituído. Supondo que agora eu queira instalar este pacote específico, yumdownloader python-libs-2.7.5-12*diria No Match for argument python-libs-2.7.5-12* Nothing to download. O que estou tentando dizer é que, uma vez que um novo pacote chegue, o antigo não será mais acessível a partir do yum. Você pode instalar apenas o pacote mais recente ou a versão inicial, mas não as versões intermediárias.
Pergunta Overflow
2
@QuestionOverflow - Nesse cenário, acho que você precisará usar yum downgrade ...se o pacote já estiver instalado e tentar voltar mais tarde. No meu QI, estava tentando mostrar como alguém selecionaria manualmente uma versão específica de um pacote que ainda não havia sido instalado. docs.fedoraproject.org/pt-BR/Fedora/14/html/…
slm
Não, ele não funciona mesmo ao atualizar para um pacote específico. Eu experimentei isso com uma instalação nova apenas alguns dias atrás. Você só pode atualizar para o pacote mais recente e não para a versão que desejar.
Pergunta Overflow
6

Outra opção, você pode baixar o rpmarquivo e instruir yuma fazer um localinstall:

yum localinstall /path/to/package.rpm

Um bom lugar para obter os pacotes necessários é rpmfind.com e procure o nome do pacote.

cuonglm
fonte
Existe um URL que contenha a maioria, senão todas as versões dos arquivos rpm?
Pergunta Overflow
@QuestionOverflow: rpmfind.net
cuonglm
4
Há também yum --downloadonly <package>, seguido por yum localinstall <path to package>também. Você também pode usar o utilitário yumdownloader <package>.
slm
0

Você também pode usar o comando option:

yum install --nogpgcheck pckg-name-version   
Guillermo Castellon
fonte