Comment réparer les paquets cassés retenus?

21

Essayer d'installer libssl-dev sur 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.

Comment puis-je supprimer le package retenu et installer le correct?

Sam Healey
la source
Quand avez-vous couru pour la dernière fois sudo apt updateet / ou sudo apt upgrade?
DopeGhoti
Salut, j'ai fait les deux entre chaque étape.
Sam Healey

Réponses:

18

Tout d'abord, essayez d'entrer ceci: sudo dpkg --configure -a

Cela contribuera grandement à corriger les dépendances brisées. Si cela ne suffit pas, essayez: sudo apt-get install -f

Puis nettoyez et mettez à jour: sudo apt-get clean && sudo apt-get update

Ensuite, mettez à niveau: sudo apt-get upgrade (dites «y» aux mises à niveau)

Si vous recevez un message indiquant que certains packages sont "bloqués", procédez comme suit:

sudo apt-get dist-upgrade

Maintenant, faites ces deux commandes:

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

Ensuite, voyez ce qui se passe lorsque vous entrez: sudo apt-get install libssl-dev

Si cela ne fonctionne toujours pas, essayez ceci:

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

Si cela ne fonctionne toujours pas, ouvrez le gestionnaire de paquets Synaptic (il devrait être dans votre lanceur. Si vous ne le trouvez pas, entrez dans le terminal synaptic-pkexec).

Recherchez zlib1g-dev. Si la case à côté de zlib1g-dev n'est pas verte, cliquez dessus et sélectionnez "Marquer pour l'installation". Si vous voyez plusieurs versions, choisissez 1:1.2.8.dfsg-1ubuntu1. Recherchez ensuite libssl-dev. Si la case à côté de libssl-dev n'est pas verte, cliquez dessus et sélectionnez "Marquer pour l'installation".

Sélectionnez ensuite "Appliquer".

gracious1
la source
Salut, merci d'avoir répondu. J'ai tout fait ci-dessus et j'ai eu la même erreur que dans mon message d'origine. Lorsque j'ai exécuté la mise à niveau, j'ai reçu le message suivant. Les packages suivants ont été conservés: linux-generic-lts-utopic linux-headers-generic-lts-utopic linux-image-generic-lts-utopic 0 mis à niveau, 0 nouvellement installé, 0 à supprimer et 3 non mis à niveau.
Sam Healey
ce qui donne apt-cache policy zlib1g-devetgrep -P '^[ \t]*[^#[ \t]+' /etc/apt/sources.list /etc/apt/sources.list.d/*.list
@Bahamut Êtes-vous sûr de vouloir dire "-P"? Pour moi, je reçoisE: Command line option 'P' [from -P] is not known.
gracious1
@SamHealey J'ai quelque peu modifié ma réponse. Essayez ce que je suggère là-bas et faites-nous savoir comment cela se passe.
gracious1
1
@Bahamut Pourquoi pas de sudo avec un programme graphique?
gracious1
2

Vous devez rechercher tous les fichiers liés à votre package et les purger, puis réinstaller.

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

répétez la deuxième commande avec chaque fichier, puis réinstallez-le.

Alex
la source
0
sudo aptitude install lib_name_depending

travaillé pour moi lorsque je voulais installer libcurl4-openssl-devsur mon Ubuntu 14.04LTS.

Plusieurs bibliothèques dépendantes n'ont pas été installées sur ma machine, et avec l'utilisation de l'outil aptitude, j'arrive à installer / rétrograder interactivement les bibliothèques / packages nécessaires pour pouvoir les installer libcurl4-openssl-dev.

Danijel Hodzic
la source