Como corrigir pacotes quebrados retidos?

21

Tentando instalar o libssl-dev no ubuntu 14.04.2

$ make
fatal error: openssl/sha.h: No such file or directory
compilation terminated.

$ sudo apt-get install libssl-dev
The following packages have unmet dependencies:
 libssl-dev : Depends: zlib1g-dev but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

$ sudo apt-get install zlib1g-dev
The following packages have unmet dependencies:
 zlib1g-dev : Depends: zlib1g (= 1:1.2.3.4.dfsg-3ubuntu4) but 1:1.2.8.dfsg-1ubuntu1 is to be installed
E: Unable to correct problems, you have held broken packages.

Como posso remover o pacote retido e instalar o correto?

Sam Healey
fonte
Quando foi a última vez que você correu sudo apt updatee / ou sudo apt upgrade?
DopeGhoti
Oi, eu fiz os dois entre cada etapa.
Sam Healey

Respostas:

18

Primeiro, tente inserir o seguinte: sudo dpkg --configure -a

Isso ajudará bastante a corrigir dependências desfeitas. Se isso não for suficiente, tente: sudo apt-get install -f

Em seguida, limpe e atualize: sudo apt-get clean && sudo apt-get update

Em seguida, atualize: sudo apt-get upgrade (diga 'y' para atualizações)

Se você receber uma mensagem dizendo que alguns pacotes estão "retidos", faça o seguinte:

sudo apt-get dist-upgrade

Agora, execute estes dois comandos:

sudo apt-get purge zlib1g-dev
sudo apt-get autoremove

Então veja o que acontece quando você digita: sudo apt-get install libssl-dev

Se ainda assim não funcionar, tente o seguinte:

sudo aptitude install libssl-dev zliblg-dev=1:1.2.8.dfsg-1ubuntu1

Se ainda assim não funcionar, abra o Synaptic Package Manager (ele deve estar no seu Launcher. Se você não conseguir encontrá-lo, digite Terminal synaptic-pkexec).

Pesquise por zlib1g-dev. Se a caixa ao lado de zlib1g-dev não estiver verde, clique nela e selecione "Marcar para instalação". Se você vir mais de uma versão, escolha 1:1.2.8.dfsg-1ubuntu1. Então procure libssl-dev. Se a caixa ao lado de libssl-dev não estiver verde, clique nela e selecione "Marcar para instalação".

Depois selecione "Aplicar".

gracioso1
fonte
Olá, obrigado por responder. Fiz tudo acima e recebi o mesmo erro do meu post original. Quando executei a atualização, recebi a seguinte mensagem. Os seguintes pacotes foram mantidos em sigilo: linux-generic-lts-utopic linux-headers-generic-lts-utopic linux-image-generic-lts-utopic 0 atualizado, 0 recém-instalado, 0 para remover e 3 não atualizado.
Sam Healey
O que dá apt-cache policy zlib1g-devegrep -P '^[ \t]*[^#[ \t]+' /etc/apt/sources.list /etc/apt/sources.list.d/*.list
@ Bahamut Tem certeza de que quer dizer "-P"? Para mim, eu ficoE: Command line option 'P' [from -P] is not known.
gracious1
@ SamHealey modifiquei minha resposta um pouco. Experimente o que eu sugiro lá e deixe-nos saber como vai.
gracious1
11
@ Bahamut Por que não sudo com programa gráfico?
gracious1
2

Você deve procurar por todos os arquivos relacionados ao seu pacote, limpá-los e reinstalar.

sudo dpkg --list
sudo apt-get purge "file-name"

repita o segundo comando com todos os arquivos e apenas reinstale.

Alex
fonte
0
sudo aptitude install lib_name_depending

funcionou para mim quando eu queria instalar libcurl4-openssl-devno meu Ubuntu 14.04LTS.

Várias libs dependentes não foram instaladas na minha máquina e, com o uso da ferramenta aptitude, eu consigo instalar / fazer o downgrade interativamente das libs / pacotes necessários para poder instalar libcurl4-openssl-dev.

Danijel Hodzic
fonte