333 votes

Incapable de corriger les problèmes, vous avez conservé des paquets brisés.

Après la mise à niveau de 10.04 à 12.04, j'essaie d'installer différents paquets. Par exemple, ia32-libs et skype (4.0).

Lorsque j'essaie de les installer, j'obtiens le message d'erreur "Impossible de corriger les problèmes, vous avez conservé des paquets cassés".

Sortie des commandes :

sudo apt-get install -f
Reading package lists... Done
Building dependency tree       
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

Après avoir exécuté ceci :

sudo dpkg --configure -a
foo@foo:~$ sudo apt-get install -f
Reading package lists... Done
Building dependency tree       
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

346voto

thomasrutter Points 33791

Ce message d'erreur particulier peut indiquer que vous avez retenu des paquets, mais il peut aussi indiquer un autre problème.

Vous pouvez obtenir une liste de réel a tenu des paquets avec :

dpkg --get-selections | grep hold

S'il n'y en a aucun, ou si aucun ne semble lié, alors il s'agit probablement d'autre chose. Vérifiez soigneusement la sortie de la commande que vous avez essayée lorsque vous avez obtenu le message d'erreur, car il peut y avoir d'autres indices dans la sortie complète de cette commande, en dehors du message d'erreur.

Une autre méthode de dépannage peut consister à utiliser aptitude plutôt qu'apt-get pour essayer d'installer votre paquet :

sudo aptitude install <packagename>

Aptitude abandonnera moins facilement et tentera de trouver des solutions qui peuvent impliquer la modification d'autres paquets. Il peut vous donner plus d'explications sur le problème et les options pour le résoudre.

Parfois, aptitude sera trop pressé de supprimer ou de rétrograder un grand nombre de paquets pour satisfaire votre demande, auquel cas il faudra réessayer avec -f modifie ses priorités et l'aide à trouver des solutions qui impliquent la suppression ou la rétrogradation de moins de paquets, même si cela signifie que tous les changements que vous avez demandés ne peuvent pas être effectués :

sudo aptitude -f install <packagename>

Edit : il s'agit d'une ancienne réponse, et comme elle a été écrite avec un front-end APT plus récent, simplement intitulé apt est devenu l'interface APT en ligne de commande préférée des utilisateurs finaux. Elle n'est pas encore le couteau suisse que aptitude est, mais il est un peu plus orienté vers l'humain que apt-get . Je n'ai pas pris le temps d'examiner comment cela pourrait aider dans le scénario ci-dessus, mais cela vaut la peine de l'utiliser.

44voto

Zuzu Points 7

Cela m'est arrivé aussi. Tout ce que j'ai fait, c'est sudo apt-get update et ça a réglé mon problème. Bonne chance.

39voto

RaYell Points 26761

J'ai eu un scénario similaire dans une nouvelle installation de 14.04, avec aucun fichier listé dans dpkg --get-selections | grep hold et aucune joie après sudo apt-get update .

Qué hizo le réparer pour moi était un simple

sudo apt-get autoremove

Lorsque j'ai essayé de réinstaller le paquet défaillant, tout s'est bien passé. Bravo !

24voto

karel Points 97032

A Unable to correct problems, you have held broken packages Le message d'erreur se produit souvent parce que vous essayez d'installer ou avez installé un paquet que vous n'êtes pas censé installer. Voici quelques moyens rapides et faciles de corriger le message d'erreur you have held broken packages erreur.

  • Ouvrez votre fichier sources.list dans /etc/apt/sources.list et vérifiez qu'il n'y a pas de sources logicielles pour une version d'Ubuntu différente de celle que vous utilisez actuellement. Si vous trouvez des lignes de version incorrectes dans sources.list, ouvrez le fichier sources.list avec sudoedit /etc/apt/sources.list commentez les lignes incorrectes dans le fichier sources.list en les faisant précéder du signe # , enregistrez le fichier sources.list, et exécutez sudo apt update pour mettre à jour la liste des progiciels disponibles.

  • Si vous avez téléchargé manuellement un fichier .deb, simulez son installation en exécutant apt install --simulate ./downloaded-deb-file.deb . Si le fichier téléchargé-deb-file.deb ne peut pas être installé à cause de dépendances non satisfaites, les résultats de la commande apt install --simulate ./downloaded-deb-file.deb listera ces dépendances non satisfaites. Puisque la commande est une simulation, vous n'avez pas besoin et ne devriez pas utiliser la commande sudo ou exécutez-le en tant que root. Notez les exigences de version de chaque dépendance non satisfaite et recherchez sur le Web un ou plusieurs fichiers .deb qui répondent à ces exigences de version. Si vous avez trouvé un fichier .deb qui répond à ces exigences de version, téléchargez-le et exécutez-le. apt install --simulate ./new-downloaded-deb-file.deb pour vérifier si le fichier .deb nouvellement téléchargé a ses propres dépendances non satisfaites.

  • Sélectionnez le Réparer les paquets cassés dans le gestionnaire de paquets Synaptic. Exécutez les commandes suivantes pour installer Synaptic.

      sudo apt update  
      sudo apt upgrade   
      sudo apt install synaptic  

    Ouvrez Synaptic et dans Synaptic sélectionnez Modifier -> Réparer les paquets cassés et ensuite répéter Modifier -> Réparer les paquets cassés une deuxième fois.

    Dans Synaptic, dans le volet de gauche, cliquez sur l'onglet Filtres personnalisés qui est marqué par le curseur de la souris dans la capture d'écran ci-dessous. Dans la liste située dans le coin supérieur gauche, sélectionnez Cassé . Dans le volet central, vous trouverez la liste des paquets cassés qui doivent encore être réparés.

    show broken packages in Synaptic

    Sélectionnez les paquets cassés un par un. Sélectionnez un paquet cassé, puis ouvrez le terminal et exécutez apt policy **<package-name>** . Les résultats de cette commande vous indiqueront si le paquet cassé a été installé à partir des dépôts Ubuntu par défaut ou à partir d'une autre source. Si le paquet cassé a été installé à partir d'une autre source, ce paquet peut peut-être être supprimé avec sa source logicielle et remplacé par une version différente du même paquet provenant des dépôts Ubuntu par défaut. En général, cela signifie qu'il faut réparer un paquet cassé en rétrogradant ce paquet vers une version plus ancienne.

  • Si vous obtenez ce message d'erreur :

      Try 'apt-get -f install' with no packages (or specify a solution)  

    Exécutez les commandes suivantes :

      sudo apt update  
      sudo apt upgrade   
      sudo apt-get -f install   
  • Retirez manuellement un paquet cassé.

    1. Trouvez votre paquet dans /var/lib/dpkg/info

       ls -l /var/lib/dpkg/info | grep <package>
    2. Déplacez le dossier du paquet vers un autre emplacement.

       cd /tmp && sudo mkdir new-package-location  
       sudo mv /var/lib/dpkg/info/<package>.* /tmp/new-package-location/    
    3. Exécutez la commande suivante :

       sudo dpkg --remove --force-remove-reinstreq <package>  

Si toutes ces méthodes ne fonctionnent pas, il est possible que les paquets cassés soient causés par quelque chose qui est intégré si profondément dans le système d'exploitation qu'aucune de ces méthodes n'a d'effet sur lui. Le premier endroit évident pour chercher ce "quelque chose" profondément intégré est dans les sources du logiciel dans le répertoire /etc/apt/sources.list . Vérifiez le fichier sources.list pour voir s'il contient des lignes non standard qui peuvent causer une erreur de paquets cassés. Un fichier sources.list standard d'Ubuntu ressemble aux fichiers sources.list des sites suivants cette réponse .

La manière correcte de supprimer une ligne suspecte du fichier sources.list est de la commenter en la faisant précéder d'un signe # caractère. Ensuite, exécutez sudo apt update pour rafraîchir la liste des logiciels disponibles.

14voto

Peopleunit Points 157

J'ai rencontré un scénario similaire concernant les dépendances manquantes. Dans mon cas, j'essayais d'installer curl sur ubuntu saucy salamander 13.10...

L'erreur indiquait que la dépendance nécessitait une version antérieure de la bibliothèque curl3.

J'ai pu rétrograder à la version antérieure en essayant d'installer curl en utilisant aptitude.

Lorsqu'il a noté la dépendance manquante, et la raison (nécessité d'une version antérieure du fichier de bibliothèque), il m'a donné plusieurs options sur la façon de répondre... y/ / n / q

Y aurait fait avorter l'installation, N chercherait une autre option, et Q abandonnerait simplement et ne ferait plus rien, laissant un paquet cassé.

J'ai sélectionné N et il m'a donné la possibilité de rétrograder le fichier de la bibliothèque à une version antérieure. C'est donc ce que j'ai fait, et curl a terminé l'installation sans aucune autre erreur.

  • Je pourrais envisager de mettre à nouveau à jour le fichier de la bibliothèque après l'installation, mais bon, jusqu'à présent tout va bien.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X