Hinweis zu möglichen Duplikaten:
AFAIK, Dies ist kein Duplikat von Wie löse ich nicht erfüllte Abhängigkeiten nach dem Hinzufügen eines PPA? Andernfalls beweisen Sie dies bitte, indem Sie das unten erwähnte Testproblem mit einer Antwort von dort lösen.
Hintergrund:
Ich stand vor diesem Problem Wie man Installationswein auf Ubuntu 14.04.3LTS 64 Bit regelt . Es wurde durch manuelle / menschliche Überprüfung aller rekursiven Abhängigkeiten des Zielpakets ( wine
) gelöst .
Reproduzieren Sie das Problem (Testfall):
Lassen Sie uns die gleiche Situation ganz einfach mit nur 1 Fehlerpaket erstellen.
- Installiere neues Ubuntu 14.04 auf VirtualBox.
- Öffnen
software-properties-gtk
und aktivieren Sie dasbackports
Repository. Holen Sie sich die Liste der letzten Pakete
sudo apt-get update
Führen Sie aus
apt-get -s install wine
, um zu bestätigen,wine
dass installiert werden kann.Installieren Sie das störende Paket
libcgmanager0
aus den 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
Erzwinge
apt
die Installation derlibcgmanager0
Version0.39-2ubuntu2~ubuntu14.04.1
sudo apt-get install libcgmanager0=0.39-2ubuntu2~ubuntu14.04.1
Jetzt landen wir in der gleichen Situation des Benutzers wie im Hintergrund. Die Weininstallation schlägt fehl und es werden nur die Abhängigkeitspakete der ersten Ebene angezeigt.
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.
Es ist nicht praktisch, Abhängigkeiten einzeln zu verfolgen apt-get install
.
Ideale Lösung:
Das eigentliche Problem hier
apt
Dielibcgmanager0:i386
Version konnte nicht installiert werden,0.39-2ubuntu2~ubuntu14.04.1
da das Backports-Repository eine niedrigere Priorität als die100
Version0.24-0ubuntu7.5
aus demupdates
Repository mit hat500
apt
Dielibcgmanager0:i386
Version konnte nicht installiert werden,0.24-0ubuntu7.5
dalibcgmanager0:amd64
sie mit einer anderen Version installiert wurde0.39-2ubuntu2~ubuntu14.04.1
Die schnellste Lösung besteht darin, die Installation derselben i386-Version über Backports zu erzwingen
sudo apt-get install libcgmanager0:i386=0.39-2ubuntu2~ubuntu14.04.1
oder stufen Sie es (amd64) von regulären Repositories auf eine beliebige Version herunter
sudo apt-get install libcgmanager0=0.24-0ubuntu7.5
Möglichkeiten / Werkzeuge, die ich ausprobiert habe:
- Das Deaktivieren von PPAs hat nichts mit dem Problem zu tun.
- Die Verwendung
aptitude
im interaktiven Modus bringt nur Lösungen mit vielen Entfernungen ( > 200 !!! ). - Verwenden Sie diese
apt-get install
Option manuell, indem Sie dem Abhängigkeitsbaum folgen. Unpraktisch, da die Abhängigkeiten der ersten und zweiten Ebene keine aussagekräftige Meldung über den Konflikt auslösten. debfoster
kann die rekursiven Abhängigkeiten erzeugen, aber nur für bereits installierte Pakete. Istwine
aber noch nicht installiert.
Thema / Meine Interessen:
Angenommen, ich möchte wine installieren, ohne das Problem des libcgmanager0
Pakets zu kennen (oder genau das libcgmanager0:amd64=0.39-2ubuntu2~ubuntu14.04.1
, was bereits installiert ist).
Ich suche nach einer Debug-Methode oder nach einer Möglichkeit, den Namen des problematischen Pakets zu kennen und schnell zu verstehen, was los war.
Wie kann man Probleme mit ungelösten Abhängigkeiten im Allgemeinen beheben?
Vielleicht gibt es einige neue Optionen in
dpkg
/apt
/aptitude
diese Spur der internen Abhängigkeitsauflöser. Das kann sichlibcgmanager0
in seiner Ausgabe zeigen.Wenn es keine kanonische Antwort darauf gibt, kann mir jemand einen besseren Weg zeigen, um die Liste der rekursiven Abhängigkeiten zu generieren oder den Abhängigkeits-Resolver mit weiteren Details zu simulieren, die zur Behebung des Problems beitragen können?
Warum alle Abhängigkeiten? Weil ich die Ausgabe der folgenden Befehle für alle Pakete auf einmal überprüfen möchte.
apt-cache policy <all-dependencies>
apt-get -s install <all-dependencies>
quelle
backports
Version?libcgmanager
, sondern mit einer Abhängigkeit? Sie haben erwähnt, dass Abhängigkeiten rekursiv aufgelistet werden. Hast du es versuchtapt-rdepends
?wine
anderes betroffenes Paket zu installieren-o Debug::pkgProblemResolver=yes
?Antworten:
Credits & Dank geht an @muru .
Ich habe nach Befehlen oder Debug-Optionen gesucht, die den Namen des Fehlerpakets anzeigen können (
libcgmanager0
in diesem Testfall).apt-get -s -o Debug::pkgProblemResolver=yes install wine
Es hat eine ausführliche Ausgabe, ziemlich schwer zu verstehen. Es sollte in Ordnung sein, wenn ich damit vertraut werde.
echo q | aptitude -s install wine
Minimale Ausgabe, aber klare Benachrichtigung über den Konflikt.
Ein weiterer Punkt, den ich gesucht habe, ist die Minimierung der vom OP angeforderten Ausgabe. Stattdessen zum Anfordern
apt-cache policy
von nur Abhängigkeiten der ersten / zweiten Ebene. Ich würde es für alle rekursiven Abhängigkeiten auf einmal anfordern.apt-rdepends wine 2>/dev/null | grep "^[a-zA-Z]" | sort
Beachten Sie, dass
apt-rdepends
die Emulationapt-cache
so ist, dass das Ergebnis möglicherweise anders ist als das vondebfoster
. Ein weiterer Punkt, beide Tools unterscheiden nicht zwischen arch (i386 oder amd64), sie zeigen nur Namen.Da der obige Link später entfernt werden kann, finden Sie hier die vollständige Ausgabe aller obigen Befehle.
quelle