Remarque sur les doublons possibles:
AFAIK, Ce n'est pas un doublon de Comment résoudre les dépendances non satisfaites après avoir ajouté un PPA? sinon, prouvez-le en résolvant le problème de test que je mentionne ci-dessous en utilisant n'importe quelle réponse à partir de là.
Contexte:
J'ai rencontré ce problème avant Comment réparer le vin d'installation sur Ubuntu 14.04.3LTS 64 bits . Il a été résolu par un examen manuel / humain de toutes les dépendances récursives du package cible ( wine
).
Reproduisez le problème (cas de test):
Créons la même situation silencieuse et simplifiée avec un seul ensemble de problèmes.
- Installez la nouvelle Ubuntu 14.04 sur VirtualBox.
- Ouvrez
software-properties-gtk
et activez lebackports
référentiel. Obtenir la dernière liste des packages
sudo apt-get update
Exécutez
apt-get -s install wine
pour confirmer qu'ilwine
peut être installé.Installez le package troublant à
libcgmanager0
partir de backports$ apt-cache policy libcgmanager0 libcgmanager0: Installed: 0.24-0ubuntu5 Candidate: 0.24-0ubuntu7.5 Version table: 0.39-2ubuntu2~ubuntu14.04.1 0 100 http://dz.archive.ubuntu.com/ubuntu/ trusty-backports/main amd64 Packages 0.24-0ubuntu7.5 0 500 http://dz.archive.ubuntu.com/ubuntu/ trusty-updates/main amd64 Packages 0.24-0ubuntu7.1 0 500 http://security.ubuntu.com/ubuntu/ trusty-security/main amd64 Packages *** 0.24-0ubuntu5 0 500 http://dz.archive.ubuntu.com/ubuntu/ trusty/main amd64 Packages 100 /var/lib/dpkg/status
Forcer l'
apt
installation de lalibcgmanager0
version0.39-2ubuntu2~ubuntu14.04.1
sudo apt-get install libcgmanager0=0.39-2ubuntu2~ubuntu14.04.1
Maintenant, nous nous retrouvons dans la même situation que l'utilisateur de la question mentionnée en arrière-plan, l'installation de wine échoue avec une dépendance non satisfaite, affichant uniquement les packages de dépendance de premier niveau.
apt-get -s install wine
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: wine : Depends: wine1.6 but it is not going to be installed E: Unable to correct problems, you have held broken packages.
apt-get -s install wine1.6
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: wine1.6 : Depends: wine1.6-i386 (= 1:1.6.2-0ubuntu4) E: Unable to correct problems, you have held broken packages.
apt-get -s install wine1.6-i386
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: wine1.6-i386:i386 : Depends: libglu1-mesa:i386 but it is not going to be installed or libglu1:i386 Depends: libgphoto2-6:i386 (>= 2.5.2) but it is not going to be installed Depends: libgphoto2-port10:i386 (>= 2.5.2) but it is not going to be installed Recommends: libsane:i386 but it is not going to be installed E: Unable to correct problems, you have held broken packages.
Il n'est pas pratique de suivre les dépendances apt-get install
une par une.
Solution idéale:
Le vrai problème ici
apt
n'a pas pu installer lalibcgmanager0:i386
version0.39-2ubuntu2~ubuntu14.04.1
car le référentiel backports a une priorité100
inférieure à la version0.24-0ubuntu7.5
duupdates
référentiel avec500
apt
impossible d'installer lalibcgmanager0:i386
version0.24-0ubuntu7.5
carlibcgmanager0:amd64
est installé avec une version différente0.39-2ubuntu2~ubuntu14.04.1
La solution la plus rapide consiste à forcer l'installation de la même version i386 à partir des rétroportages
sudo apt-get install libcgmanager0:i386=0.39-2ubuntu2~ubuntu14.04.1
ou le rétrograder (amd64) vers n'importe quelle version à partir de référentiels réguliers
sudo apt-get install libcgmanager0=0.24-0ubuntu7.5
Méthodes / outils que j'ai essayés:
- La désactivation des PPA n'a aucun rapport avec le problème.
- L'utilisation
aptitude
en mode interactif, n'apporte que des solutions avec de nombreux suppressions ( > 200 !!! ). - Utilisez
apt-get install
manuellement en suivant l'arborescence des dépendances. Peu pratique, car les dépendances de premier et deuxième niveau n'ont pas soulevé de message significatif sur le conflit. debfoster
peut générer les dépendances récursives mais uniquement pour le package déjà installé. Cependantwine
n'est pas encore installé.
Sujet / Mes intérêts:
Disons que je veux installer wine sans connaître le problème de libcgmanager0
package (ou exactement libcgmanager0:amd64=0.39-2ubuntu2~ubuntu14.04.1
celui déjà installé).
Je cherche une méthode de débogage ou un moyen de connaître le nom du paquet troublant et de comprendre rapidement ce qui se passait.
Comment déboguer les problèmes de dépendances non satisfaits en général?
Il peut y avoir de nouvelles options dans
dpkg
/apt
/aptitude
qui tracent le résolveur de dépendance interne. Cela peut apparaîtrelibcgmanager0
dans sa sortie.S'il n'y a pas de réponse canonique à cela, quelqu'un pourrait-il me montrer une meilleure façon de générer la liste des dépendances récursives ou de simuler le résolveur de dépendances avec plus de détails qui peuvent aider à résoudre le problème?
Pourquoi toutes les dépendances? Parce que je veux vérifier la sortie des commandes ci-dessous pour tous les packages à la fois.
apt-cache policy <all-dependencies>
apt-get -s install <all-dependencies>
backports
version?libcgmanager
, mais avec une dépendance? Vous avez mentionné la liste récursive des dépendances. As-tu essayéapt-rdepends
?wine
(ou un autre package affecté) avec-o Debug::pkgProblemResolver=yes
?Réponses:
Remerciements et remerciements à @muru .
Je cherchais une commande ou une option de débogage pouvant me montrer le nom du package de problème (
libcgmanager0
dans ce cas de test).apt-get -s -o Debug::pkgProblemResolver=yes install wine
Il a une sortie verbeuse, difficile à comprendre. Ça devrait aller, si je me familiarise avec ça.
echo q | aptitude -s install wine
Sortie minimale mais avis clair sur le conflit.
Un autre point que je recherchais est de minimiser la sortie demandée à l'OP. Au lieu de cela pour demander
apt-cache policy
uniquement des dépendances de 1er / 2e niveau. Je le demanderais pour toutes les dépendances récursives à la fois.apt-rdepends wine 2>/dev/null | grep "^[a-zA-Z]" | sort
Sachez que
apt-rdepends
émuleapt-cache
donc son résultat peut être différent dedebfoster
. Autre point, les deux outils ne font pas de distinction entre arch (i386 ou amd64), ils affichent juste des noms.Comme le lien ci-dessus peut être supprimé plus tard, voici la sortie complète de toutes les commandes ci-dessus.
la source