yum instala o pacote sem atualizar outros pacotes ou falha…?

10

Existe uma maneira de dizer yumpara instalar um pacote, selecionando uma versão desse pacote que seria atendida pelas dependências atualmente instaladas?

Por exemplo, se estou instalando um pacote pecl e atualmente o instalei, php-5.4.11mas um mais novo php-5.4.14está disponível. Em vez de instalar o novo pacote (e atualizar todos os pacotes php para 5.4.14), só quero que ele selecione uma versão mais antiga do pacote que solicitei que fosse instalada sem atualizar todos os outros (ou falhe se isso não puder ser feito).

Este é um caso específico em que eu sei que poderia excluir ou corrigir o pacote php, mas estou procurando uma opção genérica que se aplicaria a qualquer instalação.

Algo como:

yum install php-pecl-xxxx --no-updates
Clint Priest
fonte

Respostas:

10

Solução temporária:

Usar -Csinalizador:

sudo yum install foobar -C

Solução permanente:

Use a metadata_expirebandeira no seu yum.conf para controlar isso.

Editar /etc/yum.confe definir

metadata_expire=15d

Você pode usar d, h ou m para configurar o horário em dias, horas ou minutos .

Bônus: aqui está a documentação:

metadata_expire é o tempo (em segundos) após o qual os metadados expiram. Portanto, se os metadados atuais baixados tiverem menos de muitos segundos, o yum não atualizará os metadados no repositório. Se você achar que o yum não está baixando informações sobre atualizações com a frequência que desejar, diminua o valor dessa opção. Você também pode mudar do padrão de segundos para dias, horas ou minutos anexando ad, h ou m, respectivamente. O padrão é 6 horas, para complementar o yum-updatesd em execução uma vez por hora. Também é possível usar a palavra "nunca", o que significa que os metadados nunca expiram. Observe que, ao usar um arquivo metalink, o metalink sempre deve ser mais novo que os metadados do repositório, devido à validação, esse tempo limite também se aplica ao arquivo metalink. Observe também que "never" não substitui "yum clean expire-cache"

Shubham Chaudhary
fonte
0

Não encontrei nenhuma opção a partir de agora. No entanto, se você quiser instalar o pacote sem atualizar, eu recomendaria baixar um rpm da mesma versão e instalá-lo.

Aazim Parkar
fonte
0

No yum-utilspacote, há uma ferramenta chamada yumdownloader. Você pode usá-lo para fazer o download de repositórios sem instalar. Todas as opções padrão, como se --disablerepoaplicam. Veja a página de manual para mais informações.

Eu acho que você pode baixar o RPM e depois fazer o que quiser usando o RPM diretamente.

slm
fonte
1
Isso faz parte de um sistema de instalação automática de pacotes, o problema é que não queremos que o yum 'instale o mais recente' e 'atualize tudo o que for necessário'. Nós realmente queremos que ele instale uma versão do pacote que seja compatível com o que já está instalado. Basicamente, uma opção installonly ou install xxx -no-updates.
Clint Priest
0

Se a versão mais antiga do pacote ainda estiver em seus repositórios yum, você poderá simplesmente executar yum install packagename-version-release.arche instalar a versão mais antiga sem tentar atualizar para a versão mais recente. Você precisará usar o nome completo, versão, release e arco, se houver várias versões e arquiteturas no seu yum repo. Você pode obter todas essas informações executando yum list available 'packagename*'a pesquisa de todos os pacotes começando com 'packagename'. Se você conseguiu atualizar seus pacotes e deseja fazer o downgrade para a versão mais antiga, pode executar yum downgrade packagename1 packagename2. Você precisará incluir a lista de todos os pacotes que deseja fazer o downgrade, pois provavelmente envolverá muitas dependências.

Se a versão mais antiga não estiver no seu repositório yum, faça o download de onde você encontrou o pacote antigo e instale-o yum install /path/to/package.rpm, embora eu seja cauteloso em instalar pacotes de fontes não confiáveis.

jsbillings
fonte
Mas seria muito mais útil se yumpudesse escolher a versão compatível mais recente disponível.
forcefsck
Pode, mas cabe ao empacotador definir requisitos apropriados.
Jsbillings
Às vezes, os requisitos são cobertos por um pacote mais antigo, mas a yum insiste em escolher apenas o mais recente. Por exemplo. no caso descrito acima, deve ser possível que o yum selecione automaticamente o php-pecl-5.4.11 se o sistema estiver com a versão bloqueada no php-5.4.11. Pode ser um problema para automação.
forcefsck
O Yum somente será atualizado para a versão mais recente se não houver dependências na versão antiga. No caso acima, o requisito da versão nunca foi exigido pelo pacote pecl. O Yum não consegue ler sua mente e escolhe uma versão arbitrária, a menos que você indique qual versão em um requer ou bloqueando os pacotes pecl e php.
Jsbillings
Para este exemplo especificamente, desde que o php não seja atualizável (versão bloqueada ou nenhum pacote mais novo disponível nos repositórios), o yum pode selecionar a versão mais recente do pecl que não exigirá uma atualização do php. Não é exatamente leitura da mente, acredito que o apt-get já faz isso. Novamente, esse é um problema de automação quando você precisa instalar um pacote extra sem atualizar metade do seu sistema e precisa que o yum seja inteligente o suficiente para lidar com a solicitação, ou seja, se existirem várias versões, escolha a mais recente compatível com os pacotes já instalados. que, por qualquer motivo, não possa ser atualizado.
forcefsck