Sendo um dos primeiros a adotar e usando as compilações diárias do 11.04, às vezes encontro uma situação em que alguns pacotes exigem versões anteriores de outros pacotes além daqueles que eu instalei. Geralmente, as versões mais novas (mas recusadas) dos pacotes necessários fornecem toda a funcionalidade de suas versões mais antigas.
Se eu uso dpkg -i --force-depends-version
para instalar pacotes dependentes, tudo funciona bem, nunca vi um problema.
Em vez de baixar e instalar manualmente todos os pacotes, posso apenas fazer o sistema fingir que há uma versão específica do pacote instalada quando houver uma mais nova? Ou existe um --force-depends-version
equivalente-chave para apt-get
?
Apesar de uma resposta já ser aceita, a inclusão do aceito melhor transmite o processo:
Existe um pacote Debian chamado
equivs
que é capaz de criar pacotes fictícios. Instale-o executandosudo apt-get install -y equivs
Uma vez instalado, você gera um arquivo de "controle" de modelo usando o seguinte comando:
equivs-control postfix
(substituapostfix
pelo nome do seu pacote). No meu caso, eu poderia usar um nome de pacote alternativo, por exemplo,postfix-custom
ou qualquer outra coisa, mas ter meu pacote personalizado atendido ouProvides
a dependência da instalação depostfix
(novamente substituindopostfix
o pacote que você desejar).Depois que o arquivo de controle do modelo for gerado, normalmente removerei muitas das instruções comentadas (instruções que começam com
#
). Uma que eu gosto de manter especificamente é aProvides:
declaração em que posso dizer que meu pacote fornece a capacidade oferecida pelo outro pacote que estou tentando falsificar, por exemplo,Provides: postfix
informa ao mecanismo de resolução de dependências Debian / Ubuntu que meu pacote - de qualquer nome - fornece os mesmos recursos do pacote de destino, novamentepostfix
ou o que for. Isso me permite nomear meu pacote independentemente do pacote de destino para evitar confusão. A Erlang Factory faz isso com suas coisas, por exemplo,esl-erlang
forneceerlang
.Finalmente, uma vez que o arquivo de controle do modelo é criado, você
equivs-build
pode gerar o pacote falso, por exemploequivs-build /path/to/generated/control/file
.Demora alguns segundos para compilar o pacote e você pode executar
sudo dpkg -i my_package_name*.deb
Para usuários avançados, se o arquivo de controle do modelo tiver uma
Requires:
linha de dependência, convém usar uma ferramenta comogdebi
a instalação do pacote, bem como os vários pacotes que ele declara como dependências.fonte