Como evitar a aptidão para reparar pacotes quebrados?

Como evitar a aptidão para reparar pacotes quebrados?

Estou usando uma versão do rubygems necessária para executar uma das aplicações do meu servidor instalada desta forma:

dpkg --install /tmp/rubygems1.8_1.3.7-2_all.deb

A cada uso dele, o aptitude deseja reverter para a versão antiga do rubygems (armazenada nos repositórios.

Como posso dizer ao aptitude para ignorar esse problema?

Eu gostaria de uma solução de linha de comando, já que estou usando um servidor (Ubutun 10.04), então isso não é uma duplicata de:Diga ao aptitude para ignorar o pacote quebrado

Responder1

Basta instalar a versão do gems necessária fora do apt. Isso é na verdademelhorartambém, porque estará em /usr/local/bin(coisa que você instalou) e não /usr/binno que deveria estar na distribuição (coisas construídas no repositório do qual você está baixando). Neste caso, a distribuição está obviamente tentando rejeitar a sua versão das gemas.

Além disso, os itens instalados com a sua versão do Ruby Gems provavelmente estarão em um diretório diferente, mais acima nocaminho de inclusãogosto /usr/local/shareem vez de /usr/lib. Isso significa que quando você instala coisas, /usr/local/bin/gemele irá para um local especial que não interferirá na /usr/bin/geminstalação.

Responder2

Eu mantenho pacotes usando aptitude hold <package>. Não tenho certeza se também funciona para evitar reversões, mas vale a pena tentar.

Você também pode usar o dpkg: echo “<package> hold” | dpkg --set-selections

Referência

Responder3

Se eu fosse você, recompilaria (modificaria) o pacote para não quebrar as dependências.

Porque eu não acho que exista uma maneira aceitável de dizer ao dpkg/apt para ficar feliz com dependências não atendidas/quebradas... já que é basicamente para isso que elas foram criadas.

Responder4

Você pode usarequivspara criar pacotes fictícios que fornecem os pacotes ausentes.

Claro, isso só funciona se não houver conflitos entre os pacotes instalados.

informação relacionada