Diga ao aptitude para ignorar o pacote quebrado

8

Instalei um Amsynth da Lucid no Karmic usando:

dpkg --force-depends-version -i amsynth_1.2.2-1_i386.deb

A razão para instalar a versão Lucid é porque a versão Karmic tem 3 anos e trava na minha máquina. O pacote Lucid Amsynth depende das versões mais recentes do libatk1 e libjack0 do que o Karmic, mas achei que correria um risco, e o Amsynth funciona bem.

No entanto, o aptitude tenta desinstalar o Amsynth toda vez que faço uma atualização. Acho que consegui colocar em espera, mas agora a aptidão aborta. Como posso dizer ao aptitude que ignore o pacote quebrado e continue.


fonte
No momento, eu apenas o desinstalei. Vou reinstalar cada vez que precisar novamente, não demora muito, até que me incomode o suficiente para tentar compilá-lo novamente.
Se você precisar de algo da versão mais recente e ela precisar de bibliotecas mais recentes, geralmente você pode simplesmente puxá-las ou fazer o download do pacote de origem e reconstruí-lo no seu sistema. No entanto, me deparei com isso tentando usar um pacote de terceiros e que os hacks são necessários.
Jan Hudec

Respostas:

7

Se você instalou o programa por meio de um arquivo deb e dpkg, também poderá alterar as dependências do arquivo .deb instalado manualmente. Fui levado a essa medida extrema uma vez ...

ar x foo.deb
vim control.tar.xz  # see below
ar r foo.deb control.tar.xz
dpkg -i foo.deb

e o dpkg não sabe mais sobre as dependências do foo. No vim, você precisa selecionar ./control (eu uso o vim para ler arquivos compactados - descompacte e use outro editor e reembale, se desejar) e remova as dependências indesejadas da linha

Depends: foo bar
skunk_michi
fonte
1
É melhor você usar dpkg-debdo que ar. aré um detalhe de implementação do dpkg que pode mudar no futuro.
Jmtd #
Obrigado, esta solução funcionou para mim, mas quando eu faço o apt-get upgrade, recebo a mensagem "Os seguintes pacotes foram retidos: numptyphysics: i386" (o apt-get dist-upgrade não diz nada). Essa mensagem é normal e não podemos nos livrar dela?
Baptx #
4

Há uma solução hackeada no Ubuntuforums . A solução do ~ charlatão é melhor, mas mais trabalho.

Não consegui encontrar nada no google sobre isso, salve a compilação do seu próprio 'pacote fictício' (impossível sem desinstalar o (s) pacote (s) quebrado (s). A menos que você tenha a sorte de já ter as ferramentas), mas pesquisar no meu próprio disco rígido me deu a resposta eventualmente!

Para quem quiser saber, veja como "descomprimir" um pacote no synaptic / aptitude / apt-get, sem desinstalá-lo.

Antes de tudo, anote o pacote que você instalou e o (s) pacote (s) de que depende, que lhe dão um status quebrado. Digamos que forcei uma instalação de maçãs, que depende do pacote obsoleto que não está no repositório:

Em um código do tipo terminal:

sudo gedit /var/lib/dpkg/status

pesquise maçãs no arquivo até encontrar algo como:

Código:

Package: apples
Status: install ok installed
Priority: optional
Section: libs
Installed-Size: 316
Maintainer:
Architecture: i386
Source: applesauce
Version: 1.0.10-1
Depends: packageA, packageB, obsolete
Description: Apples on your desktop!

Remova obsoleto da linha Depends:, salve o arquivo e pronto. Espero que isso ajude algumas pessoas.

Iain
fonte
ick. boa descoberta, mas não sou fã de mentir para o gerenciador de pacotes (que é essencialmente o que esse hack faz). é melhor não usar o APT do que correr por aí quebrando-o à vontade. é por isso que compilar seus próprios pacotes é uma coisa boa - sem dependências quebradas e sem mentir para o seu gerenciador de pacotes.
quack quixote
Não tenho problema em mentir para o gerenciador de pacotes, principalmente porque em alguns meses estarei reinstalando o sistema operacional, mas não consegui encontrar o arquivo mencionado no encadeamento.
Esquisito. Deveria estar lá. Tente fazer "cd / var / lib / dpkg" e depois "sudo nano status".
Iain
1
O link não funciona mais. Qual é o motivo exato pelo qual as respostas somente para links são desaprovadas por aqui. Se você explicou aqui, seria a resposta correta.
Jan Hudec
Não sei se isso é permanente ou não, mas com certeza parece uma correção decente até agora para a instalação de pacotes com dependências rígidas em versões não mais disponíveis do Java.
Krispy 31/07
2

Na seção Preferências do aptitude (Ctrl-T para entrar no menu; em Opções), desmarque a opção na seção "Tratamento de Dependências" que diz "Corrigir automaticamente pacotes quebrados antes de instalar ou remover" . Isso deve fazer o aptitude parar de tentar consertar o pacote toda vez que você altera outros pacotes.

Como uma correção mais permanente, você deve pegar os pacotes de origem para o pacote Lucid Amsynth que você instalou, bem como os pacotes de origem para libatk1 e libjack0 e criar seu próprio pacote atualizado. Dependendo do que mais usa essas bibliotecas, você pode precisar atualizar outros pacotes também, mas provavelmente poderá se safar apenas deles. (Isso basicamente suporta os pacotes do Lucid para o Karmic - você deve verificar o repositório Karmic-backports ou os PPAs para ver se alguém já fez isso. Se seus novos pacotes funcionarem, considere enviá-los ao Karmic-backports para que outros usem. )

charlatão quixote
fonte
Obrigado, tentei sua primeira sugestão, mas não pareceu fazer a diferença. As atualizações seriam abortadas. Também tentei compilá-lo antes de instalar o pacote Lucid, mas não tive sorte com ele. Eu poderia tentar novamente no futuro.