Impossible de corriger les problèmes, vous avez mis des paquets cassés en attente


216

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

En essayant d’installer ces fichiers, le message d’erreur «Impossible de corriger les problèmes, vous avez mis en attente des paquets cassés».

Sortie de 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.

3
Cela peut aider si vous nous montrez la commande que vous essayez réellement (telle que sudo apt-get install ia32-libs) et la sortie de cette commande. Aussi, sudo apt-get dist-upgradeaffiche- t -il les mises à jour disponibles?
thomasrutter

3
Je ne sais pas ce qui ne va pas dans votre question, je ne vois aucune erreur réelle, ni celle que vous décrivez dans votre titre.
Braiam


Réponses:


239

Ce message d'erreur peut indiquer que vous avez mis en attente des packages, mais il peut également indiquer un problème différent.

Vous pouvez obtenir une liste de réels paquets détenus avec:

dpkg --get-selections | grep hold

S'il n'y en a pas, ou aucun n'a l'air lié, alors c'est probablement autre chose. Vérifiez attentivement le résultat de la commande que vous avez essayée lorsque vous avez reçu le message d'erreur, car il peut y avoir d'autres indices dans la sortie complète de cette commande, en plus du message d'erreur.

Une autre méthode de dépannage peut être d'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 pouvant impliquer la modification d'autres packages. Cela peut vous donner plus d'explications sur le problème et des options pour le résoudre.

Occasionnellement, aptitude sera trop pressé de supprimer ou de rétrograder un grand nombre de packages pour satisfaire votre demande. Dans ce cas, réessayer avec des -fchangements de priorités et l'aider à proposer des solutions impliquant de supprimer / rétrograder un nombre inférieur de packages, même si cela ne signifie pas que toutes les modifications demandées peut aller de l'avant:

sudo aptitude -f install <packagename>

6
Une idée de comment détenir un colis? :-)
Eugene van der Merwe


60
L'aptitude m'a été plus utile qu'apt-get, merci pour l'allusion.
jeudi

9
Une chose à noter est que l'aptitude peut rendre plus facile de causer plus de dommages à votre système. Par exemple, si apt-get ne parvient pas à installer quelque chose en raison de dépendances conflictuelles, il abandonnera. Cependant, aptitude pourrait vous proposer de continuer, mais désinstallez tout un ensemble d’autres packages afin de résoudre ces conflits - ou même de les rétrograder. Vous devez simplement être conscient de ce que cela suggère et ne procéder que si c'est une bonne idée.
thomasrutter

4
Les packages "en attente" n'ont rien à voir avec le message, ils ont simplement évité le conflit en les maintenant (plutôt que d'installer, de mettre à niveau, de déclasser ou de supprimer).
Braiam

33

Cela m'est arrivé aussi. Tout ce que j'ai fait était sudo apt-get updateet cela a résolu mon problème. Bonne chance.


9

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

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

J'ai réussi à me dégrader par rapport à la version précédente en essayant d'installer curl à l'aide d'aptitude.

Lorsqu'il a noté la dépendance manquante et la raison (nécessitait une version antérieure du fichier de bibliothèque), plusieurs options s'offraient à moi pour réagir ... y// n/q

Yaurait abandonné l’installation, Nchercherait une autre option, Qquitterait simplement et ne ferait plus rien, en laissant un paquet cassé.

J'ai sélectionné Net cela m'a donné la possibilité de rétrograder le fichier de bibliothèque vers une version antérieure. C'est donc ce que j'ai fait et curl a terminé l'installation sans plus d'erreur.

  • Je pourrai envisager de mettre à jour le fichier de bibliothèque à nouveau après l’installation, mais bon, jusqu’ici, tout va bien.

9

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

Qu'est - ce que ça a résolu pour moi était un simple

sudo apt-get autoremove

Lorsque j'ai essayé de réinstaller le paquet défaillant, cela a bien fonctionné. Yay!


4

Avait le même problème, j'ai exécuté cette commande de vérification de paquet de l'autre answer ( dpkg --get-selections | grep hold) et ai vu

tomcat7                                         deinstall
tomcat7-common                                  install

alors j'ai utilisé " apt-get remove tomcat7-common"

Ensuite, je pourrais installer Tomcat 6 (je retirais Tomcat 7 et installais Tomcat 6 comme vous le faites).


Les paquets "en attente" n'ont rien à voir avec le message, mais simplement en évitant le conflit en les maintenant
enfoncés

ajouter le drapeau purge: apt-get remove --purge packet
Sergio Abreu

4

Ce sont des moyens rapides et faciles pour corriger l' you have held broken packageserreur.

  • Ouvrez votre fichier sources.list /etc/apt/sources.listet vérifiez qu’il n’existe aucune source logicielle pour une version d’Ubuntu différente de la version d’Ubuntu 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, mettez en commentaire les lignes incorrectes dans sources.list en les précédant d'un #caractère, enregistrez le fichier sources.list et exécutez la sudo apt updatemise à jour de la liste. logiciels disponibles.

  • Sélectionnez l' option Fix Broken Packages 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 Edition -> Corriger les paquets endommagés , puis répétez Édition -> Corriger les paquets endommagés une seconde fois.

    Dans Synaptic, dans le volet de gauche, cliquez sur le bouton 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 Broken . Dans le volet central, tous les paquets cassés devant encore être réparés sont répertoriés.

    montrer les paquets cassés dans Synaptic

    Sélectionnez les paquets cassés un à la fois. Sélectionnez un paquet cassé, puis ouvrez le terminal et exécutez-le . Les résultats de cette commande vous indiqueront si ce paquetage endommagé a été installé à partir des référentiels Ubuntu par défaut ou d'une autre source. Si le paquetage endommagé a été installé à partir d'une autre source, ce paquetage peut éventuellement être supprimé avec sa source de logiciel et remplacé par une version différente du même paquetage à partir des référentiels Ubuntu par défaut. Habituellement, cela signifie réparer un paquet endommagé en le rétrogradant à une version plus ancienne.apt policy <package-name>

  • 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   
    
  • Supprimer manuellement un paquet cassé.

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

      ls -l /var/lib/dpkg/info | grep <package>
      
    2. Déplacez le dossier du package 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 packages cassés soient causés par quelque chose qui est si profondément intégré dans le système d'exploitation qu'aucune de ces méthodes n'a d'effet. Le premier endroit évident pour rechercher ce "quelque chose" profondément intégré est dans les sources de logiciels de /etc/apt/sources.list. Vérifiez le fichier sources.list pour voir s’il contient des lignes non standard pouvant être à l’origine d’une erreur de package cassé. Un fichier sources.list Ubuntu standard ressemble aux fichiers sources.list de cette réponse .

La bonne façon de supprimer une ligne suspecte de sources.list est de la commenter en la faisant précéder d'un #caractère. Puis exécutez sudo apt updatepour actualiser la liste des logiciels disponibles.


0

Pour moi, rien de ce qui précède n'a fonctionné car mon système n'a pas été mis à jour. J'ai fait

Home Key > Software Updater > Install

et mis à jour mon système; ensuite, je pourrais installer mon paquet normalement avec apt.


0

J'ai eu le même problème lors de la réinstallation xsaneaprès une ppainstallation défaillante . Comme il est arrivé à yochannah, "pas de fichiers listés dans dpkg --get-selections | grep hold, ni de joie après sudo apt-get update".

L'indice qui apt-getm'a donné est

xsane : Depends: libsane (>= 1.0.24) but it is not going to be installed

En raison de la réponse de yochannah, j’ai eu le sentiment que je devais supprimer certains paquets précédemment installés. Et c’est ainsi que j’ai dû supprimer manuellement tous les packages associés sane, notamment, xsane-commonet libsanequi étaient toujours installés en tant que ppaversion.

Par conséquent, faites attention à ce que vous avez déjà installé et rangez!

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.