web-dev-qa-db-fra.com

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

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 derniers, le message d’erreur "Impossible de corriger les problèmes, vous avez mis des paquets cassés" en attente.

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.
202
trond

Ce message d'erreur spécifique 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 retenus 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>

L'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 enclin à supprimer ou à rétrograder un grand nombre de packages pour satisfaire votre demande. Dans ce cas, réessayer avec -f change ses priorités et l'aide à 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 ont été apportées. demandé peut aller de l'avant:

Sudo aptitude -f install <packagename>
223
thomasrutter

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

30
user2292711

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), il m'a donné plusieurs options pour répondre ... y//n/q

Y aurait abandonné l'installation, N chercherait une autre option, et Q tout simplement quitter et ne rien faire de plus, 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.
8
Peopleunit

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

Qu'est-ce que a fait le réparer pour moi était simple

Sudo apt-get autoremove

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

8
yochannah

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

Tomcat7                                         deinstall
Tomcat7-common                                  install

donc 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).

4
Nollaig

Voici des moyens rapides et faciles de corriger l'erreur you have held broken packages.

  • Ouvrez votre fichier sources.list dans /etc/apt/sources.list et vérifiez qu’il n’existe aucune source de logiciel pour une version d’Ubuntu différente de celle qui est actuellement utilisée par Ubuntu. 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 Sudo apt update pour les mettre à jour. la liste des packages logiciels disponibles.

  • Sélectionnez l'option Corriger les paquets endommagé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 Éditer -> Corrigez les paquetages brisés puis répétez Modifier -> Corrigez 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 . Le volet central répertorie tous les paquets cassés qui doivent encore être réparés.

    show broken packages in Synaptic

    Sélectionnez les paquets cassés un à la fois. Sélectionnez un package endommagé, puis ouvrez le terminal et exécutez apt policy <package-name>. 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, il 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.

  • 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 paquet 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>
      
2
karel

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
nathangeorge1