Nota su possibili duplicati:
AFAIK, Questo non è un duplicato di Come posso risolvere le dipendenze non soddisfatte dopo aver aggiunto un PPA? in caso contrario, dimostralo risolvendo il problema del test che cito di seguito usando una risposta da lì.
Sfondo:
Ho affrontato questo problema prima di Come risolvere l'installazione di vino su Ubuntu 14.04.3LTS a 64 bit . È stato risolto dalla revisione manuale / umana di tutte le dipendenze ricorsive del pacchetto target ( wine
).
Riprodurre il problema (Test Case):
Creiamo la stessa situazione semplificata con un solo pacchetto di problemi.
- Installa Ubuntu 14.04 nuovo su VirtualBox.
- Aprire
software-properties-gtk
e abilitare ilbackports
repository. Ottieni l'elenco degli ultimi pacchetti
sudo apt-get update
Esegui
apt-get -s install wine
per confermare chewine
può essere installato.Installare il pacchetto problematico
libcgmanager0
dai backport$ 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
Forza
apt
l'installazione dellalibcgmanager0
versione0.39-2ubuntu2~ubuntu14.04.1
sudo apt-get install libcgmanager0=0.39-2ubuntu2~ubuntu14.04.1
Ora finiamo nella stessa situazione dell'utente dalla domanda menzionata in background, l'installazione di wine fallisce con una dipendenza non soddisfatta, mostrando solo i pacchetti di dipendenza di primo livello.
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.
Non è pratico seguire le dipendenze con apt-get install
una per una.
Soluzione ideale:
Il vero problema qui
apt
impossibile installare lalibcgmanager0:i386
versione0.39-2ubuntu2~ubuntu14.04.1
perché il repository backport ha una priorità100
inferiore0.24-0ubuntu7.5
rispetto alla versione dalupdates
repository con500
apt
impossibile installare lalibcgmanager0:i386
versione0.24-0ubuntu7.5
perchélibcgmanager0:amd64
è installata con una versione diversa0.39-2ubuntu2~ubuntu14.04.1
La soluzione più rapida è, per forzare l'installazione della stessa versione i386 dai backport
sudo apt-get install libcgmanager0:i386=0.39-2ubuntu2~ubuntu14.04.1
oppure esegui il downgrade (amd64) a qualsiasi versione dai normali repository
sudo apt-get install libcgmanager0=0.24-0ubuntu7.5
Modi / strumenti che ho provato:
- La disabilitazione di PPA non ha alcuna relazione con il problema.
- Usando
aptitude
in modalità interattiva, porta solo soluzioni con molte rimozioni ( > 200 !!! ). - Utilizzare
apt-get install
manualmente seguendo l'albero delle dipendenze. Non pratico, poiché le dipendenze di primo e secondo livello non hanno sollevato un messaggio significativo sul conflitto. debfoster
può generare dipendenze ricorsive ma solo per pacchetti già installati. Tuttaviawine
non è ancora installato.
Argomento / I miei interessi:
Diciamo che voglio installare wine senza conoscere il problema del libcgmanager0
pacchetto (o esattamente libcgmanager0:amd64=0.39-2ubuntu2~ubuntu14.04.1
quello già installato).
Sto cercando un metodo di debug o un modo per conoscere il nome del pacchetto problematico e capire rapidamente cosa stava succedendo.
Come eseguire il debug dei problemi di dipendenze non soddisfatte in generale?
Potrebbero esserci alcune nuove opzioni in
dpkg
/apt
/aptitude
che tracciano il risolutore di dipendenze interno. Questo può mostrarelibcgmanager0
nel suo output.Se non esiste una risposta canonica a questo, qualcuno potrebbe mostrarmi un modo migliore per generare l'elenco delle dipendenze ricorsive o simulare il risolutore di dipendenze con ulteriori dettagli che possono aiutare a risolvere il problema?
Perché tutte le dipendenze? Perché voglio controllare contemporaneamente l'output dei comandi seguenti per tutti i pacchetti.
apt-cache policy <all-dependencies>
apt-get -s install <all-dependencies>
libcgmanager
, ma con una dipendenza? Hai citato in modo ricorsivo l'elenco delle dipendenze. Ci hai provato apt-rdepends
?
wine
(o altri pacchetti interessati) con -o Debug::pkgProblemResolver=yes
?
backports
versione?