
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/bin
no 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/share
em vez de /usr/lib
. Isso significa que quando você instala coisas, /usr/local/bin/gem
ele irá para um local especial que não interferirá na /usr/bin/gem
instalaçã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
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 usarequivs
para criar pacotes fictícios que fornecem os pacotes ausentes.
Claro, isso só funciona se não houver conflitos entre os pacotes instalados.