web-dev-qa-db-fra.com

Comment résoudre les dépendances non résolues après l'ajout d'un PPA?

Parfois, lorsque j'installe des choses, j'obtiens une erreur comme celle-ci:

Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 package1 : Depends: package2 (>= 1.8) but 1.7.5-1ubuntu1 is to be installed
E: Unable to correct problems, you have held broken packages.

Comment puis-je résoudre ça?

528
jrg

APT est un système de gestion de paquets pour Debian et les autres distributions Linux qui s’y reposent, telles que Ubuntu. Dans la plupart des cas, APT est facile à utiliser pour installer, supprimer et mettre à jour des packages. Dans de rares cas, souvent lorsque vous mélangez des dépendances tierces, il est possible que apt-get finisse par vous donner une erreur vous indiquant qu'une installation de package n'a pas pu être effectuée.

Solutions:

Il est toujours judicieux de sauvegarder les fichiers de configuration tels que /etc/apt/sources.list afin de pouvoir annuler les modifications si nécessaire.

  • Si le errormontre quelque chose comme ceci:

    <some-package>: Depends: <other-package> (= version) but this-version is to be installed

    Assurez-vous ensuite que les référentiels restrictedet universesont activés. Frappé Alt+F2, tapez software-properties-gtk et appuyez sur Enter.

    Sous l'onglet Ubuntu Software, activez tous les référentiels.

  • Une cause possible de dépendances non satisfaites pourrait être la base de données de paquets corrompue et/ou certains paquets n’étaient pas installés correctement. Pour résoudre ce problème, appuyez sur Alt+Ctrl+T pour ouvrir le terminal et essayez d’exécuter l’une des commandes suivantes:

    Sudo apt-get clean

    ou,

    Sudo apt-get autoclean

    apt-get clean efface le référentiel local des fichiers de package récupérés (les fichiers .deb). Il supprime tout sauf le fichier de verrouillage de/var/cache/apt/archives/et/var/cache/apt/archives/partial /. apt-get autoclean efface le référentiel local des fichiers de package récupérés, mais contrairement à apt-get clean, il ne supprime que les fichiers de package qui ne peuvent plus être téléchargés et sont en grande partie inutiles.

  • L'un des correctifs les plus élémentaires pour résoudre les problèmes de dépendances consiste à exécuter:

    Sudo apt-get -f install

    Le -f signifie ici "réparer cassé". Apttentera de corriger les dépendances brisées. Si vous avez manuellement installé un paquet ayant des dépendances non satisfaites, apt-get installera ces dépendances, si possible, sinon il pourrait simplement supprimer le paquet que vous avez installé afin de résoudre le problème.

    Puis lancez:

    Sudo dpkg --configure -a

    Puis relancez ceci:

    Sudo apt-get -f install

    Si le résultat est:

    0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.

    Cela signifie que cela a échoué.

  • La solution suivante consiste à exécuter:

    Sudo apt-get -u dist-upgrade

    S'il y a des paquets en attente, il est préférable de les éliminer. Les packages sont conservés en raison de conflits de dépendance que aptne peut pas résoudre. Essayez cette commande pour trouver et réparer les conflits:

    Sudo apt-get -o Debug :: pkgProblemResolver = yes dist-upgrade

    S'il ne peut pas résoudre les conflits, il se terminera par:

    0 upgraded, 0 newly installed, 0 to remove and 6 not upgraded.

    Supprimez les packages en attente un par un, en exécutant dist-upgrade à chaque fois, jusqu'à ce qu'il n'y ait plus de packages en attente. Puis réinstallez tous les paquets nécessaires. Veillez à utiliser l'option --dry-run afin d'être pleinement informé des conséquences:

    Sudo apt-get remove --dry-run nom du paquet

    Dans la mesure où supprimer le paquet que vous essayez d'installer n'est peut-être pas idéal, vous pouvez également essayer de trouver un référentiel contenant les paquetages dont vous avez besoin pour satisfaire les dépendances.

Enfin, si tout échoue, vous pouvez tenter de satisfaire vous-même les dépendances, soit en recherchant et en installant les paquetages nécessaires, soit en les installant à partir du source, puis en leur créant des paquetages " deb ".

Désactiver/Supprimer/Purger les PPA:

Les PPA (Personal Package Archive) sont des référentiels hébergés sur Launchpad . Vous pouvez utiliser les PPA pour installer ou mettre à niveau des packages qui ne sont pas disponibles dans les référentiels Ubuntu officiels.

Les PPA sont l’une des causes les plus courantes de dépendances non satisfaites, spécialement lorsqu’ils sont utilisés pour mettre à jour le paquet existant dans les référentiels Ubuntu. Pour résoudre le problème, vous avez trois options: désactiver, purger (revenir au paquet original dans les référentiels Ubuntu) ou supprimer PPA.

  • Désactiver:

    Désactiver un PPA signifie qu'il n'y a plus de mises à jour pour les packages installés à partir de ce PPA. Pour désactiver un PPA: Ouvrez Software Center > Edit > Software Sources ou,

    Frappé Alt+F2 et lancez software-properties-gtk.

    Cliquez sur l'onglet Other Software, vous verrez que chaque PPA a deux lignes ici, une pour les paquetages compilés et une pour la source, Uncheckles deux lignes pour désactiver un PPA. Ici, vous pouvez également ajouter et supprimer des PPA.

  • Purge:

    Purger un PPA signifie, rétrograder les packages du PPA sélectionné vers la version des référentiels Ubuntu officiels et désactiver ce PPA. PPA Purge fait exactement cela. Pour installer PPA Purge, exécutez la commande suivante:

    Sudo apt-get installer ppa-purge

Mais, étant donné que la question aptest cassée, la commande ci-dessus échouera. Alors utilisez cette commande

mkdir ppa-purge && cd ppa-purge && wget http://mirror.pnl.gov/ubuntu/pool/universe/p/ppa-purge/ppa-purge_0.2.8+bzr56_all.deb && wget http://mirror.pnl.gov/ubuntu//pool/main/a/aptitude/aptitude_0.6.6-1ubuntu1_i386.deb && Sudo dpkg -i ./*.deb

Pour utiliser PPA Purge:

Sudo ppa-purge ppa: someppa/ppa

Si la commande 'ppa-purge' échoue pour une raison quelconque, vous ne pouvez pas exécuter à nouveau 'ppa-purge' à moins de réactiver le PPA (pour activer le PPA, suivez les mêmes étapes que la désactivation d'un PPA et de Checkles deux lignes d'un particulier pour l’activer).

Remarque: PPA Purge ne supprime pas les PPA ( peut-être à l'avenir ), vous devrez donc supprimer manuellement le PPA.

  • Supprimer:

    Si le paquet installé à partir d'un PPA n'existe pas dans les référentiels officiels Ubuntu, alors utiliser PPA Purge n'est pas recommandé, car il n'y a rien à rétrograder et PPA Purge ne le supprime pas non plus. Pour supprimer un PPA et des packages installés, exécutez les commandes suivantes: (Ignorez la première commande si vous ne souhaitez pas supprimer les packages installés)

     Sudo apt-get autoremove --purge nom-paquet 
     Sudo add-apt-repository - supprimer ppa: someppa/ppa 
     Sudo apt-get autoclean 
    

Sinon, vous pouvez utiliser Y PPA Manager pour désactiver/supprimer/purger les PPA (Détails à la fin de la réponse).

Mesures préventives:

Alors, comment pouvons-nous éviter que cela ne se produise en premier lieu?

  • Maintenir Ubuntu à jour. Ubuntu notifie automatiquement lorsque des mises à jour sont disponibles. Vous pouvez également rechercher les mises à jour disponibles en cliquant sur Session Indicator dans le panneau Unity:

    Ou, frappé Alt+Ctrl+T pour ouvrir le terminal et exécuter les commandes suivantes:

    Sudo apt-get update 
     Sudo apt-get upgrade

    Update: synchronise votre liste de packages disponibles avec les serveurs des référentiels source. Mise à niveau: Télécharge et installe les versions les plus récentes de vos packages installés.

  • Si vous décidez d'ajouter d'autres référentiels à sources.list, assurez-vous que le référentiel est conçu pour fonctionner (et est connu pour fonctionner) avec Ubuntu. Les référentiels qui ne sont pas conçus pour fonctionner avec votre version d'Ubuntu peuvent introduire des incohérences dans votre système et vous obliger à effectuer une nouvelle installation. Assurez-vous également que vous avez vraiment besoin d'ajouter des référentiels externes, car les logiciels que vous recherchez ont peut-être déjà été introduits dans les référentiels officiels! Source
  • Supprimer les AAE en double. Y PPA Manager (guide d'installation à la fin de la réponse) peut facilement numériser et supprimer les PPA en double.

    • Frappé Alt+F2 et exécutez y-ppa-manager pour ouvrir Y PPA Manager.
    • Une fois ouvert, double-cliquez ou appuyez sur Enter sur Advancedname__.
    • Dans la fenêtre résultante, sélectionnez Scan and remove duplicate PPAs et cliquez sur OK.

enter image description here

Obtenir de l'aide:

Lorsque vous demandez de l'aide sur Askubunt ou tout autre forum d'aide, vous devez inclure le résultat des commandes suivantes dans votre question:

  • Sortie de l'erreur réelle:

    Sudo apt-get install nom-paquet
  • Cela montrera votre sources.list:

    cat /etc/apt/sources.list
  • Ceci affichera la liste des AAE (le cas échéant):

    cat /etc/apt/sources.list.d/*

Sources supplémentaires:


Y PPA Manager : Y PPA Manager est un guichet unique pour tous vos besoins en PPA.

y ppa manager

Voici certaines de ses caractéristiques:

  • rechercher des forfaits dans tous les AAE Launchpad
  • lister et télécharger les paquets dans un PPA
  • ajouter/supprimer/purger un PPA
  • sauvegarder et restaurer les sources PPA
  • supprimer les sources de PPA en double

Pour installer Y PPA Manager, ouvrez le terminal en appuyant sur Alt+Ctrl+T et lancez les commandes suivantes:

 Sudo add-apt-repository ppa: webupd8team/y-ppa-manager 
 Sudo apt-get update 
 Sudo apt-get install y-ppa-manager 

Considérant que la question, aptest cassé, utilisez plutôt ces commandes

Sudo su

et

32 bits:

mkdir y-ppa-manager && cd y-ppa-manager && wget https://launchpad.net/~webupd8team/+archive/y-ppa-manager/+files/launchpad-getkeys_0.3.2-1~webupd8~oneiric_all.deb && wget https://launchpad.net/~webupd8team/+archive/y-ppa-manager/+files/y-ppa-manager_0.0.8.6-1~webupd8~precise_all.deb && wget https://launchpad.net/~webupd8team/+archive/y-ppa-manager/+files/yad_0.17.1.1-1~webupd8~precise_i386.deb && dpkg -i ./*.deb

64 bits:

mkdir y-ppa-manager && cd y-ppa-manager && wget https://launchpad.net/~webupd8team/+archive/y-ppa-manager/+files/launchpad-getkeys_0.3.2-1~webupd8~oneiric_all.deb && wget https://launchpad.net/~webupd8team/+archive/y-ppa-manager/+files/y-ppa-manager_0.0.8.6-1~webupd8~precise_all.deb && wget https://launchpad.net/~webupd8team/+archive/y-ppa-manager/+files/yad_0.17.1.1-1~webupd8~precise_AMD64.deb && dpkg -i ./*.deb
554
Basharat Sialvi

Remarque: Toutes les commandes devant être exécutées doivent être exécutées dans le terminal, qui peut être ouvert par Ctrl+Alt+T ou la recherche d'un terminal dans le tableau de bord.

Est-ce vraiment cassé?

Essayez d’exécuter la commande suivante et essayez de réinstaller le logiciel que vous tentiez d’installer.

Sudo apt-get update

Étapes pré-performance

Sauvegarde

Sauvegardez les fichiers suivants:

  • /etc/apt/sources.list
  • /var/lib/dpkg/status

Pour ce faire, utilisez ces commandes

Sudo cp /etc/apt/sources.list /etc/apt/sources.list.original

et

Sudo cp /var/lib/dpkg/status /var/lib/dpkg/status.original

Effacer votre apt-cache

apt conserve un cache des packages récemment téléchargés pour économiser la bande passante lorsqu’elle doit être installée. Cela peut être contre-productif dans certains cas

Maintenant, pour le nettoyer, vous avez deux options

Sudo apt-get clean 

Cela supprimera tous les packages en cache appartenant au dossier /var/cache/apt/archives/ et /var/cache/apt/archives/partial à l'exception des fichiers .lock. Ceci est recommandé

Sudo apt-get autoclean

Ceci analyse les dossiers /var/cache/apt/archives/ et /var/cache/apt/archives/partial et vérifie si le paquet est toujours dans les référentiels et supprime ceux qui ne le sont pas.


Correction des dépendances

Utiliser le mode correctif d'apt

Sudo apt-get -f install

Cela entraînera apt à rechercher les dépendances manquantes et à les réparer à partir des référentiels

Si la sortie indique que rien de nouveau n'a été installé ou mis à niveau, cela a échoué.


Vérifier si toutes les sources requises sont activées

Tapez gksu software-properties-gtk et vous obtiendrez cette fenêtre

Assurez-vous que toutes les sources sont activées.

ensuite, allez sur l'onglet Autre logiciel et vérifiez si les PPA requis pour le logiciel à installer sont là et sont activés. Essayez également de désactiver certains PPA pouvant contenir des paquets cassés.

maintenant, lancez Sudo apt-get update

Essayez d'installer le logiciel maintenant

Sélection d'un meilleur serveur à télécharger depuis

Tapez gksu software-properties-gtk et vous obtiendrez cette fenêtre

Cliquez sur la case Télécharger depuis la liste déroulante et sélectionnez une autre option.

Cliquez sur Sélectionner le meilleur serveur

Exécutez Sudo apt-get update

Essayez d'installer le logiciel

aussi, essayez d'utiliser Sudo apt-get install -f


Purge PPA

Ceci est un outil utilisé pour purger les PPA cassés/indésirables et leurs applications.

Pour l'installer, lancez

Sudo apt-get install ppa-purge

Mais, considérant que la question apt est cassée, la commande ci-dessus va échouer. Alors utilisez cette commande

mkdir ppa-purge && cd ppa-purge && wget http://mirror.pnl.gov/ubuntu/pool/universe/p/ppa-purge/ppa-purge_0.2.8+bzr56_all.deb && wget http://mirror.pnl.gov/ubuntu//pool/main/a/aptitude/aptitude_0.6.6-1ubuntu1_i386.deb && Sudo dpkg -i ./*.deb

Maintenant, utilisez ppa purge

Sudo ppa-purge ppa:someppa/ppa  

Y-PPA Manager

Y-PPA Manager est une application graphique qui vous aide à gérer les PPA et divers problèmes associés.

Pour l'installer

Sudo add-apt-repository ppa:webupd8team/y-ppa-manager

et

Sudo apt-get update

et

Sudo apt-get install y-ppa-manager

Considérant que la question, apt est cassée, utilisez plutôt cette commande

Sudo su

et

32 bits:

mkdir y-ppa-manager && cd y-ppa-manager && wget https://launchpad.net/~webupd8team/+archive/y-ppa-manager/+files/launchpad-getkeys_0.3.2-1~webupd8~oneiric_all.deb && wget https://launchpad.net/~webupd8team/+archive/y-ppa-manager/+files/y-ppa-manager_0.0.8.6-1~webupd8~precise_all.deb && wget https://launchpad.net/~webupd8team/+archive/y-ppa-manager/+files/yad_0.17.1.1-1~webupd8~precise_i386.deb && dpkg -i ./*.deb

64 bits:

mkdir y-ppa-manager && cd y-ppa-manager && wget https://launchpad.net/~webupd8team/+archive/y-ppa-manager/+files/launchpad-getkeys_0.3.2-1~webupd8~oneiric_all.deb && wget https://launchpad.net/~webupd8team/+archive/y-ppa-manager/+files/y-ppa-manager_0.0.8.6-1~webupd8~precise_all.deb && wget https://launchpad.net/~webupd8team/+archive/y-ppa-manager/+files/yad_0.17.1.1-1~webupd8~precise_AMD64.deb && dpkg -i ./*.deb

Maintenant tapez y-ppa-manager

Vous serez présenté avec cette fenêtre

Double-cliquez sur Advanced et vous obtiendrez cette fenêtre.

Effectuez les tâches suivantes décrites en noir


Mieux vaut prévenir que guérir

Il vaut mieux prévenir que chercher cette question sur AskUbuntu: D

Alors, voici les lignes directrices pour vous garder en sécurité

Gardez votre système à jour

toujours exécuter la commande suivante régulièrement

Sudo apt-get update&&Sudo apt-get upgrade

ou, vous pouvez toujours utiliser Update Manager avec cette commande

gksu update-manager

Utiliser uniquement des PPA de confiance

Utilisez uniquement les PPA destinés à être utilisés sur Ubuntu également, utilisez uniquement des PPA avec des sources fiables. Enfait, le paquet peut déjà être dans les dépôts d'ubuntu

Sauvegarder quand tout va bien et le restaurer plus tard

Pour cela, vous avez besoin de Y-PPA-Manager. Les étapes pour l'installer sont données ci-dessus.

Exécutez cette commande pour ouvrir Y-PPA-Manager

y-ppa-manager

Vous serez présenté avec cette fenêtre

Double-cliquez sur Advanced et vous obtiendrez cette fenêtre.

Lance ça:

Vous serez invité à enregistrer un fichier tar.gz avec une boîte de dialogue similaire à celle ci-dessous. Enregistrez-le dans une autre partition ou un endroit sûr

Plus tard, lorsque vous aurez besoin de le restaurer à nouveau, suivez les mêmes étapes et lorsque vous arriverez à la boîte de dialogue avancée, cliquez dessus:

Vous serez invité à restaurer à partir de la sauvegarde précédente que vous aviez précédemment enregistrée avec une boîte de dialogue similaire à celle ci-dessous.


Ne fonctionne toujours pas?

Les erreurs de dépendance des packages ne sont pas toujours génériques et dépendent du package à installer.

Si toutes les étapes indiquées pour corriger l'erreur ne fonctionnent pas pour vous, vous pouvez toujours demander à Ask Ubunt

Voici quelques commandes dont vous avez besoin pour poster la sortie de

Sudo apt-get install packagename

et

cat /etc/apt/sources.list

et

cat /etc/apt/sources.list.d/*

(Merci à Basharat Sial )

Il y a aussi d'autres fichiers/commandes dont vous avez besoin dont le résultat peut être spécifique à une erreur, et les utilisateurs vous inviteront probablement dans les commentaires à poster le fichier/commande.

86
Amith KK

Jusqu'à présent, ces réponses se concentrent sur la façon de résoudre automatiquement un tel problème, en espérant principalement qu'il se résolve de lui-même, mais pas pour comprendre comment enquêter sur les dépendances. Il est important d'essayer des choses telles que de vous assurer que vos listes de paquets sont à jour, car vous devez vous assurer qu'une simple mise à jour ou une suppression du cache ne résout pas le problème avant de creuser plus profondément. Si tout fonctionne dans les coulisses fonctionne comme il se doit, il est primordial d'apprendre à comprendre les dépendances. Parfois, les couches de dépendances peuvent sembler écrasantes, mais le concept est simple et essentiel pour comprendre comment les logiciels sont installés/désinstallés dans un système Ubuntu.

Je recommande fortement aptitude à quiconque utilise un système basé sur .deb comme Ubuntu. Son arborescence vous permet de parcourir facilement les dépendances, y compris les packages recommandés et suggérés, et de visualiser les conflits et les dépendances non résolues. C'est un outil précieux pour lequel apt-get n'offre pas une solution simple et pour visualiser les dépendances en général. ( Synaptic est également disponible dans Ubuntu, mais je ne le trouve pas aussi intuitif.)

Aptitude offre également un résolveur de conflits qui vous guidera à travers toutes les combinaisons possibles de paquets installés/supprimés/mis à jour/etc. afin de satisfaire toutes les exigences, sans conflit ni problème. Cela peut être réussi même si apt est incapable de trouver une solution. En tant qu'utilisateur Ubuntu, les situations ne vous obligent généralement pas à rechercher pourquoi ce paquet particulier est en cours d'installation, mais elles sont presque inévitables lorsque vous utilisez davantage le système.

38
overprescribed

package1: Depends: package2 (> = 1.8) mais 1.7.5-1ubuntu1 doit être installé

Explication du message:

  1. Pour que votre installation soit terminée, package1 a besoin de package2.
  2. package2 doit être disponible en version> = 1.8
  3. Le gestionnaire de paquets a vérifié tous les référentiels et n'a trouvé que la version 1.7.5-1ubuntu1 pouvant être installée, ce qu'il ne fera pas car il est <1.8

Réparer

Il n'y a PAS de bonne réponse pour cette question et il n'y a PAS de réponse simple.

Il existe de nombreux scénarios pour lesquels cela peut arriver et il faut examiner toutes les options et essayer de résoudre les conditions préalables qui conduisent à cette erreur.

Scénario A:

Tous les référentiels auxquels vous avez accès n'ont pas package2 dans la version> = 1.8, vous devrez donc trouver un référentiel qui en possède. Si vous ne trouvez pas de référentiel avec des versions> = 1.8, vous devrez peut-être créer et installer package2 à partir du code source. Et puis essayez d'installer package1.

Si vous voulez savoir comment créer un paquet à partir de la source, vérifiez d’autres questions/réponses ou envoyez-en une nouvelle.

Scénario B:

Les référentiels incluent package2 dans une version> = 1.8, mais le gestionnaire de paquets souhaite toujours installer une version plus ancienne (1.7.5).

La raison en est peut-être que les dernières versions de package2 ont été créées à l'aide d'une technologie plus récente qui n'est pas prise en charge par d'autres packages que vous avez déjà installés.

Cela pourrait ne pas être possible du tout. Vous pouvez essayer d'utiliser apt ou synaptic et rechercher toutes les versions du package2 disponibles dans les référentiels, puis essayer d'installer une version spécifique> = 1.8.

Si vous avez d'autres packages incompatibles et que vous procédez ainsi, vous obtiendrez une liste de messages d'erreur similaires pour tous les autres packages empêchant l'installation de package2> = 1.8.

Dans ce cas, vous avez un plus gros problème. Vous vouliez installer package1, ce qui nécessite que package2 soit> = 1.8, mais package2 dans la version> = 1.8 requiert que package3 soit dans la version> = 6.7 et que vous disposez de package3 version 6.3

Le problème est que le gestionnaire de paquets (APT) tente de résoudre automatiquement toutes ces dépendances, si cela est possible. Quand il dit que ce n'est pas possible (et envoie un message comme dans la question), alors vous devriez lui faire confiance.

Si vous décidez de ne pas faire confiance au gestionnaire de paquets et si vous êtes certain de ne pas avoir de problèmes, vous pouvez alors essayer de forcer l'installation des versions spécifiques requises de tous les paquets, une par une, en espérant que tout ira bien.

Attention, cela pourrait créer de graves problèmes pour les packages système. Vous pouvez vous verrouiller hors du système, bloquer des services critiques, etc.

Scénario C:

Quelles que soient les raisons du problème, vous pouvez toujours configurer pour la compilation manuelle et créer le paquet requis et toutes ses dépendances dans les versions exactes requises à partir du source. Avec cette option, vous pouvez conserver ce que vous avez construit dans un répertoire séparé et en dehors du chemin système afin que cela ne crée pas de conflit avec le système. C'est probablement la solution la plus propre et peut parfois être plus rapide à faire.

Scénario D:

Le gestionnaire de paquets a accès à des informations obsolètes sur les paquets et ne peut donc pas trouver de solution. Regardez dans les autres réponses.

Scénario E:

Le gestionnaire de packages a un bogue dans le code de résolution de dépendance.

Vous devez vérifier que c'est vraiment le cas, puis émettre une demande de bogue.

...

Scénario Z:

Il pourrait y avoir d'autres scénarios.

Par exemple, les responsables de package auraient pu se tromper et ne pas vérifier que package1 fonctionnerait même avec la version de package2 <1.8 et qu'ils définissaient dans la spécification de fausses dépendances.

24

Ces méthodes doivent être suivies à chaque fois que vous obtenez des dépendances non satisfaites

Après avoir suivi les instructions, essayez d’installer le logiciel. Au moins une de ces méthodes devrait fonctionner pour vous

1. Avant d’essayer une nouvelle commande ou d’ajouter un nouveau ppa, essayez ceci.

Nettoyage du cache d'apt:

Sudo apt-get clean

Nettoyage de toutes les dépendances non utilisées:

Sudo apt-get autoremove

Mise à jour d'apt-cache

Sudo apt-get update

Cela supprimera tout le cache et téléchargera un nouveau cache. Cela devrait être fait pour obtenir de nouveaux packages de cache et de nouvelles mises à jour.

2. Essayez Sudo apt-get install -f.

Il va probablement donner quelques suggestions sur la suppression et l'installation de paquets, faites ce qui semble raisonnable.

. Changez le Download Server de Software Sources car parfois les fichiers sur un serveur sont corrompus.

enter image description here
enter image description here
enter image description here

4. Cela se produit également si vous avez auparavant ajouté un ppa externe pour la dépendance brisée. Essayez de supprimer ce ppa en

  • soit en tapant Sudo add-apt-repository --remove ppa:someppa/ppa, puis en supprimant manuellement les fichiers/bibliothèques installés par ppa

ou

  • purger un ppa (cela supprime également les fichiers installés)

    Sudo apt-get install ppa-purge   #a one time install 
    Sudo ppa-purge ppa:someppa/ppa  
    

5. Si non, ce n'est pas votre cas, essayez au moins de supprimer le paquet qui est présenté comme une dépendance endommagée. Ensuite, essayez à nouveau d'installer. Cela aurait une certaine capacité de travail pour plusieurs personnes.

6. Ajoutez toujours la version stable d'un référentiel/PPA.

enter image description here

7 Assurez-vous également que tous les référentiels officiels sont activés (dans Software Sources)

enter image description here

Veuillez ne pas activer le Proposed Updates car ils sont destinés aux tests/développeurs.

enter image description here


Comme l'a dit Doug:

La première étape pour résoudre ce problème consiste généralement à identifier la source de <pkg1> & <pkg2>.

En outre, il est à noter que dans de nombreux cas, si ce n’est la plupart des cas, "<tout> doit être installé" signifie en réalité "<tout> est installé" et doit être essayé pour être supprimé si rien d’autre ne fonctionne (comme au point 5).


Je vais continuer à ajouter d'autres choses que nous avons trouvé mal à corriger unmet dependencies.

17
Ashu

Ma réponse est similaire à celle de Rick ci-dessus.

Utiliser apt-get clean, apt-get autoclean, apt-get autoremove, apt-get upgrade, apt-get update, apt-get -u dist-upgrade, etc., tout ne fonctionnait pas pour moi.

J'ai finalement résolu ce problème en descendant dans l'arbre de dépendance via apt-get install, illustré à l'aide d'un exemple ci-dessous. Dans mon cas, je voulais installer libmagickwand-dev:

apt-get install libmagickwand-dev

J'ai eu cette erreur:

The following packages have unmet dependencies:
 libmagickwand-dev : Depends: libmagickcore4-extra (= 8:6.6.9.7-5ubuntu3.2) but it is not going to be installed
                     Depends: libmagickcore-dev (= 8:6.6.9.7-5ubuntu3.2) but it is not going to be installed

J'ai donc lancé apt-get install pour l'une des dépendances défaillantes:

apt-get install libmagickcore-dev

The following packages have unmet dependencies:
 libmagickcore-dev : Depends: libmagickcore4-extra (= 8:6.6.9.7-5ubuntu3.2) but it is not going to be installed
                     Depends: libgraphviz-dev but it is not going to be installed

Je suis descendu plus bas dans l'arbre:

apt-get install libgraphviz-dev

avec une autre erreur:

The following packages have unmet dependencies:
 libgraphviz-dev : Depends: libgvc5 (= 2.26.3-10ubuntu1) but it is not going to be installed

Encore une fois plus bas dans l'arbre:

apt-get install libgvc5

Pour une raison étrange, cela a réussi et j'ai pu installer le paquet original que je voulais avec apt-get install libmagickwand-dev:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  libcdt4 libgd2-xpm libgraph4 libpathplan4
Suggested packages:
  libgd-tools
The following NEW packages will be installed:
  libcdt4 libgd2-xpm libgraph4 libgvc5 libpathplan4
0 upgraded, 5 newly installed, 0 to remove and 2 not upgraded.
Need to get 808 kB of archives.
After this operation, 2,320 kB of additional disk space will be used.
Do you want to continue [Y/n]?
11
Michael Franzl

Excellentes réponses! Mais aujourd'hui, mon cas semble différent du vôtre. Voici mon conseil.

Problème:

J'ai échoué à installer Apache2 dans Ubuntu 10.10.

rick@wen-VirtualBox:~$ Sudo apt-get install Apache2

Reading package lists... Done

Building dependency tree      

Reading state information... Done

Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.

The following information may help to resolve the situation:

The following packages have unmet dependencies:

 Apache2 : Depends: Apache2-mpm-worker (= 2.2.16-1ubuntu3) but it is not going to be installed or

                    Apache2-mpm-prefork (= 2.2.16-1ubuntu3) but it is not going to be installed or

                    Apache2-mpm-event (= 2.2.16-1ubuntu3) but it is not going to be installed or

                    Apache2-mpm-itk (= 2.2.16-1ubuntu3) but it is not going to be installed

           Depends: Apache2.2-common (= 2.2.16-1ubuntu3) but it is not going to be installed

E: Broken packages

Solution:

Mon moyen est d'ajouter le paquet dépendu dans la liste d'installation.

Si 'Sudo apt-get install Apache2' échoue, essayez 'Sudo apt-get install Apache2 Apache2.2-common'.

Voir? Apache2.2-common provient du journal des erreurs de l'étape précédente.

Enfin, j'ai trouvé une chaîne de dépendance comme celle-ci:

 Apache2.2-common <-- Apache2.2-bin <-- libaprutil1-ldap <-- libaprutil1

Pour les 3 premiers paquets, apt-get log m'a dit "ne sera pas installé",

mais pour le dernier paquet, il indique 'libaprutil1-ldap: Depends: libaprutil1 (= 1.3.9 + dfsg-3build1) mais 1.3.9 + dfsg-3ubuntu0.10.10.1 doit être installé'

J'ai une version différente existante dans ma bibliothèque, donc:

Sudo apt-get remove libaprutil1

Sudo apt-get install Apache2

Maintenant c'est bon.

8
rick

ce qui est des dépendances non satisfaites Erreur

Les paquets sur Ubuntu sont le moyen principal par lequel le logiciel est construit, déployé et installé. Très simplement, les packages sont une alternative au téléchargement, à la construction et à l’installation de logiciels à partir de rien. Ils offrent une foule d'avantages en termes d'installation, de suppression, de surveillance et de gestion des interactions entre des éléments de logiciel par rapport au modèle standard "build from source". Ubuntu utilise un système d’emballage centralisé, c’est-à-dire que chaque paquet dépend de certains autres. Lorsque nous installons un paquet, ses dépendances seront installées.

Causes possibles

1.Computer is not connected to the Internet
2.The repository containing the depandancy package is not enabled
3.Package catalog is not updated
4.The version of the depandancy in the current repository is old
5.Software index is broken
6.The depandancy is not available for ubuntu

Essayons de le résoudre

  1. Connexion à Internet: D
  2. Assurez-vous que tous les référentiels par défaut sont activés

    -> Vous pouvez facilement les ajouter dans le Software Center-> Éditer-> Sources de logiciels-> Autres sources-> Ajouter "

    -> Démarrer le Software Center.

    ->. Dans le panneau, accédez à Edit et sélectionnez Software Sources.

    edit-software-sources

    -> Assurez-vous que tous les référentiels sont cochés enter image description here

  3. Mettre à jour le catalogue de logiciels

    cliquez sur l'icône en haut à droite et choisissez Entrée disponible pour la mise à jour dans le menu
    enter image description here

et appuyez sur le bouton de contrôle enter image description here

4.type ctrl+alt+t ouvrir un terminal et taper Sudo apt-get install -f

5.Purge le ppa récemment ajouté en utilisant ppa-purge ppa-purgeInstall ppa-purge

Ce programme désactive un PPA de vos sources de logiciels et rétablit votre système dans les paquets officiels Ubuntu. Vous pouvez l'utiliser pour rétablir le fonctionnement normal de votre système après avoir testé une nouvelle version à partir d'un PPA.

Syntaxe

Sudo ppa-purge ppa:<repository-name>/<subdirectory>

Exemple

Sudo ppa-purge ppa:ubuntu-mozilla-daily/ppa
  1. ouvrez le centre logiciel et essayez d'installer n'importe quel logiciel. Si la boîte de dialogue suivante apparaît, appuyez sur le bouton de réparation, puis patientez.

enter image description here

Autre type  ctrl+alt+t pour ouvrir le terminal, tapez Sudo apt-get install -f et suivez les instructions à l'écran

Si une erreur persiste, n'hésitez pas à le demander dans askbunt

7
Tachyons

... N'oubliez pas `build-dep`

En plus des réponses ci-dessus - je dois admettre que je suis surpris de constater que personne n’a mentionné cette approche, c’est ce que j’ai toujours utilisé comme "solution miracle" à chaque fois que j’ai rencontré des conflits apt-get ou des paquets non résolus (ou même si le système est têtu .... ha!).

MODIFIÉ: l’utilisation de Sudo dpkg -r [package] est recommandée car sa fonction de suppression est très puissante. Puisque apt-get fonctionne aux côtés de dpkg, ce qui signifie que apt-get obéira à la fonction dpkg.

  Sudo dpkg -r [package]
  Sudo apt-get build-dep [package]  
  ## pre-install all deps for the package

Vous appelez apt-get pour purger le paquet échoué que vous tentiez d'installer sur le système, puis vous appelez la commande build-dep, laquelle apt-get récupérera et installera individuellement les dépendances appartenant à ce paquet, de manière à satisfaire le paquet avant. Enfin, appelez apt-get install:

Sudo apt-get install [package]

....'Pouah! Tordons votre bras jusqu'à ce que vous criiez "Oncle!"

Cela se produisait rarement pendant mes longues années d’utilisation de Linux, mais j’ai rarement eu recours à cette méthode et j’ai réussi. Ceci est un exemple de la lutte que j'ai eue il y a un mois avec les paquets mysql-client/mysql-server. Après une douzaine de tentatives infructueuses pour réinitialiser mon mot de passe root avec mysql-server (même via --skip-grant-tables techqiue mais qui a échoué), j'ai finalement réussi à "tordre le bras de Linux jusqu'à ce qu'il crie" Oncle! ":

Sudo dpkg -r mysql-server mysql-client
Sudo apt-get autoclean  
## this dumps any copy of existing package to prevent apt-get from "re-using" it.
Sudo apt-get build-dep mysql-client   
 ## one package at a time, starting with client first
Sudo apt-get install mysql-client
Sudo apt-get build-dep mysql-server
Sudo apt-get install mysql-server

apt-get autoclean est la clé de cette solution

5
Faron

Lors de l'installation de packages i386 sur des systèmes Multiarch Ubuntu 64 bits

Si vous essayez d'installer un package qui dépend de nombreux packages i386, l'erreur de dépendance indiquée ci-dessus serait également générée si vous ne parvenez pas à ajouter l'architecture i386 en exécutant la commande Sudo dpkg --add-architecure i386.

Exemple:

avinash@avinash-Lenovo-IdeaPad-Z500:~$ Sudo apt-get install skype
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 skype : Depends: skype-bin but it is not installable
E: Unable to correct problems, you have held broken packages.
avinash@avinash-Lenovo-IdeaPad-Z500:~$ Sudo dpkg --add-architecture i386
avinash@avinash-Lenovo-IdeaPad-Z500:~$ Sudo apt-get install skype
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  gcc-4.8-base:i386 gcc-4.9-base:i386 libasound2:i386 libasound2-plugins:i386
  libasyncns0:i386 libaudio2:i386 libavahi-client3:i386
  libavahi-common-data:i386 libavahi-common3:i386 libc6:i386
  libcgmanager0:i386 libcomerr2:i386 libcups2:i386 libdbus-1-3:i386
  libdbusmenu-qt2:i386 libdrm-intel1:i386 libdrm-nouveau2:i386
  libdrm-radeon1:i386 libdrm2:i386 libelf1:i386 libexpat1:i386 libffi6:i386
  libflac8:i386 libfontconfig1:i386 libfreetype6:i386 libgcc1:i386
  libgcrypt11:i386 libgl1-mesa-dri:i386 libgl1-mesa-glx:i386
  libglapi-mesa:i386 libglib2.0-0:i386 libgnutls26:i386 libgpg-error0:i386
  libgssapi-krb5-2:i386 libgstreamer-plugins-base1.0-0:i386
  libgstreamer1.0-0:i386 libice6:i386 libjack-jackd2-0:i386 libjbig0:i386
  libjpeg-turbo8:i386 libjpeg8:i386 libjson-c2:i386 libk5crypto3:i386
  libkeyutils1:i386 libkrb5-3:i386 libkrb5support0:i386 libllvm3.4:i386
  liblzma5:i386 libmysqlclient18:i386 libnih-dbus1:i386 libnih1:i386
  libogg0:i386 liborc-0.4-0:i386 libp11-kit0:i386 libpciaccess0:i386
  libpcre3:i386 libpng12-0:i386 libpulse0:i386 libqt4-dbus:i386
  libqt4-declarative:i386 libqt4-network:i386 libqt4-opengl:i386
  libqt4-script:i386 libqt4-sql:i386 libqt4-sql-mysql:i386 libqt4-xml:i386
  libqt4-xmlpatterns:i386 libqtcore4:i386 libqtdbus4:i386 libqtgui4:i386
  libqtwebkit4:i386 libsamplerate0:i386 libselinux1:i386 libsm6:i386
  libsndfile1:i386 libspeexdsp1:i386 libsqlite3-0:i386 libssl1.0.0:i386
  libstdc++6:i386 libtasn1-6:i386 libtiff5:i386 libtinfo5:i386
  libtxc-dxtn-s2tc0:i386 libudev1:i386 libuuid1:i386 libvorbis0a:i386
  libvorbisenc2:i386 libwrap0:i386 libx11-6:i386 libx11-xcb1:i386 libxau6:i386
  libxcb-dri2-0:i386 libxcb-dri3-0:i386 libxcb-glx0:i386 libxcb-present0:i386
  libxcb-sync1:i386 libxcb1:i386 libxdamage1:i386 libxdmcp6:i386 libxext6:i386
  libxfixes3:i386 libxi6:i386 libxml2:i386 libxrender1:i386 libxshmfence1:i386
  libxslt1.1:i386 libxss1:i386 libxt6:i386 libxv1:i386 libxxf86vm1:i386
  mysql-common skype-bin:i386 sni-qt:i386 zlib1g:i386
Suggested packages:
  nas:i386 glibc-doc:i386 locales:i386 rng-tools:i386 libglide3:i386
  gnutls-bin:i386 krb5-doc:i386 krb5-user:i386 libvisual-0.4-plugins:i386
  gstreamer-codec-install:i386 gnome-codec-install:i386
  gstreamer1.0-tools:i386 gstreamer1.0-plugins-base:i386 jackd2:i386
  pulseaudio:i386 libqt4-declarative-folderlistmodel:i386
  libqt4-declarative-gestures:i386 libqt4-declarative-particles:i386
  libqt4-declarative-shaders:i386 qt4-qmlviewer:i386 libqt4-dev:i386
  libicu48:i386 libthai0:i386 qt4-qtconfig:i386
Recommended packages:
  xml-core:i386
The following NEW packages will be installed:
  gcc-4.8-base:i386 gcc-4.9-base:i386 libasound2:i386 libasound2-plugins:i386
  libasyncns0:i386 libaudio2:i386 libavahi-client3:i386
  libavahi-common-data:i386 libavahi-common3:i386 libc6:i386
  libcgmanager0:i386 libcomerr2:i386 libcups2:i386 libdbus-1-3:i386
  libdbusmenu-qt2:i386 libdrm-intel1:i386 libdrm-nouveau2:i386
  libdrm-radeon1:i386 libdrm2:i386 libelf1:i386 libexpat1:i386 libffi6:i386
  libflac8:i386 libfontconfig1:i386 libfreetype6:i386 libgcc1:i386
  libgcrypt11:i386 libgl1-mesa-dri:i386 libgl1-mesa-glx:i386
  libglapi-mesa:i386 libglib2.0-0:i386 libgnutls26:i386 libgpg-error0:i386
  libgssapi-krb5-2:i386 libgstreamer-plugins-base1.0-0:i386
  libgstreamer1.0-0:i386 libice6:i386 libjack-jackd2-0:i386 libjbig0:i386
  libjpeg-turbo8:i386 libjpeg8:i386 libjson-c2:i386 libk5crypto3:i386
  libkeyutils1:i386 libkrb5-3:i386 libkrb5support0:i386 libllvm3.4:i386
  liblzma5:i386 libmysqlclient18:i386 libnih-dbus1:i386 libnih1:i386
  libogg0:i386 liborc-0.4-0:i386 libp11-kit0:i386 libpciaccess0:i386
  libpcre3:i386 libpng12-0:i386 libpulse0:i386 libqt4-dbus:i386
  libqt4-declarative:i386 libqt4-network:i386 libqt4-opengl:i386
  libqt4-script:i386 libqt4-sql:i386 libqt4-sql-mysql:i386 libqt4-xml:i386
  libqt4-xmlpatterns:i386 libqtcore4:i386 libqtdbus4:i386 libqtgui4:i386
  libqtwebkit4:i386 libsamplerate0:i386 libselinux1:i386 libsm6:i386
  libsndfile1:i386 libspeexdsp1:i386 libsqlite3-0:i386 libssl1.0.0:i386
  libstdc++6:i386 libtasn1-6:i386 libtiff5:i386 libtinfo5:i386
  libtxc-dxtn-s2tc0:i386 libudev1:i386 libuuid1:i386 libvorbis0a:i386
  libvorbisenc2:i386 libwrap0:i386 libx11-6:i386 libx11-xcb1:i386 libxau6:i386
  libxcb-dri2-0:i386 libxcb-dri3-0:i386 libxcb-glx0:i386 libxcb-present0:i386
  libxcb-sync1:i386 libxcb1:i386 libxdamage1:i386 libxdmcp6:i386 libxext6:i386
  libxfixes3:i386 libxi6:i386 libxml2:i386 libxrender1:i386 libxshmfence1:i386
  libxslt1.1:i386 libxss1:i386 libxt6:i386 libxv1:i386 libxxf86vm1:i386
  mysql-common skype skype-bin:i386 sni-qt:i386 zlib1g:i386
0 upgraded, 115 newly installed, 0 to remove and 7 not upgraded.
Need to get 63.7 MB of archives.
After this operation, 225 MB of additional disk space will be used.
Do you want to continue? [Y/n] 
3
Avinash Raj

Ce qui a fonctionné pour moi est de réinstaller la dépendance. C'est le cas où la version installée est plus récente que la dernière (ce que montre synaptic). En fait, il est équivalent d'autoriser Synaptic à rétrograder le paquet de dépendance.

Une autre chose qui a fonctionné utilise "aptitude":

root@arau:~# aptitude install libgfortran3
The following NEW packages will be installed:
  libgfortran3{b} 
0 packages upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 250 kB of archives. After unpacking 1 230 kB will be used.
The following packages have unmet dependencies:
 libgfortran3 : Depends: gcc-4.8-base (= 4.8.2-19ubuntu1) but 4.8.4-2ubuntu1~14.04 is installed.
Internal error: found 2 (choice -> promotion) mappings for a single choice.
The following actions will resolve these dependencies:

     Keep the following packages at their current version:
1)     libgfortran3 [Not Installed]                       



Accept this solution? [Y/n/q/?] n
Internal error: found 2 (choice -> promotion) mappings for a single choice.
Internal error: found 2 (choice -> promotion) mappings for a single choice.
The following actions will resolve these dependencies:

      Downgrade the following packages:                                        
1)      cpp-4.8 [4.8.4-2ubuntu1~14.04 (now) -> 4.8.2-19ubuntu1 (trusty)]       
2)      gcc-4.8 [4.8.4-2ubuntu1~14.04 (now) -> 4.8.2-19ubuntu1 (trusty)]       
3)      gcc-4.8-base [4.8.4-2ubuntu1~14.04 (now) -> 4.8.2-19ubuntu1 (trusty)]  
4)      libasan0 [4.8.4-2ubuntu1~14.04 (now) -> 4.8.2-19ubuntu1 (trusty)]      
5)      libatomic1 [4.8.4-2ubuntu1~14.04 (now) -> 4.8.2-19ubuntu1 (trusty)]    
6)      libgcc-4.8-dev [4.8.4-2ubuntu1~14.04 (now) -> 4.8.2-19ubuntu1 (trusty)]
7)      libgomp1 [4.8.4-2ubuntu1~14.04 (now) -> 4.8.2-19ubuntu1 (trusty)]      
8)      libitm1 [4.8.4-2ubuntu1~14.04 (now) -> 4.8.2-19ubuntu1 (trusty)]       
9)      libquadmath0 [4.8.4-2ubuntu1~14.04 (now) -> 4.8.2-19ubuntu1 (trusty)]  
10)     libstdc++6 [4.8.4-2ubuntu1~14.04 (now) -> 4.8.2-19ubuntu1 (trusty)]    
11)     libtsan0 [4.8.4-2ubuntu1~14.04 (now) -> 4.8.2-19ubuntu1 (trusty)]      

Accept this solution? [Y/n/q/?] y
1
Bob Yoplait

Après avoir essayé près de toutes les méthodes mentionnées dans ce fil (et d'autres), j'étais sur le point d'abandonner. J'avais mis à niveau ma Debian Lenny vers Squeeze et je ne pouvais pas comprendre pourquoi PHP5, Apache, MySQL, etc. ne voulait pas installer. Finalement, j'ai essayé d'utiliser

Sudo apt-get purge Apache2
Sudo apt-get purge php5
Sudo apt-get purge mysql-server
Sudo apt-get clean
Sudo apt-get autoremove
Sudo apt-get install Apache2 php5 mysql-server

..et cela a fonctionné parfaitement! (Attention, il pourrait détruire vos fichiers de configuration, alors sauvegardez-les!)

1
h2ooooooo

Si vous obtenez une erreur comme celle-ci:
enter image description here

Cela vous indique que les packages sont déjà installés, mais qu'il n'a pas installé tous les autres packages dont il a besoin pour fonctionner. Vous devriez pouvoir résoudre ceci en lançant ceci:

Sudo apt-get -f install

(Cette commande devrait installer automatiquement les dépendances non satisfaites.)

ou quelque chose comme ceci (avec les packages correspondants) :

Sudo apt-get install click curl dpkg-dev python-lzma python-requests imagemagick ubuntu-dev-tools

Mais si vous vous retrouvez avec ce type d'erreur: cannot install package/package not available/no installation candidate etc

Vous pouvez ensuite rechercher des façons de les installer ici ou ici .
Avec l'exemple ci-dessus, vous devriez pouvoir trouver une page comme this , puis utiliser n PPA , ou installer n .deb pour 32 bits , ou n fichier .deb pour 64 bits .

0
Wilf