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?
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.
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 error
montre 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 restricted
et universe
sont 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é". Apt
tentera 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 apt
ne 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 ".
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, Uncheck
les 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 apt
est 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 Check
les 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).
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.
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.
y-ppa-manager
pour ouvrir Y PPA Manager.Advanced
name__.Scan and remove duplicate PPAs
et cliquez sur OK.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/*
Y PPA Manager : Y PPA Manager est un guichet unique pour tous vos besoins en PPA.
Voici certaines de ses caractéristiques:
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, apt
est 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
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.
Essayez d’exécuter la commande suivante et essayez de réinstaller le logiciel que vous tentiez d’installer.
Sudo apt-get update
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
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.
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é.
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
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
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 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
Il vaut mieux prévenir que chercher cette question sur AskUbuntu: D
Alors, voici les lignes directrices pour vous garder en sécurité
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
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
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.
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.
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.
package1: Depends: package2 (> = 1.8) mais 1.7.5-1ubuntu1 doit être installé
Explication du message:
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.
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.
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.
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.
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.
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.
...
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.
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.
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
Sudo add-apt-repository --remove ppa:someppa/ppa
, puis en supprimant manuellement les fichiers/bibliothèques installés par ppaou
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.
7 Assurez-vous également que tous les référentiels officiels sont activés (dans Software Sources
)
Veuillez ne pas activer le Proposed Updates
car ils sont destinés aux tests/développeurs.
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
.
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]?
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.
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.
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
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
.
-> Assurez-vous que tous les référentiels sont cochés
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
et appuyez sur le bouton de contrôle
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-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
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
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]
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
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]
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
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!)
Si vous obtenez une erreur comme celle-ci:
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:
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 .