Ho visto più volte persone con dipendenze non soddisfatte, che apt-get non dice chiaramente qual è il problema, come questo:
The following packages have unmet dependencies:
libgl1-mesa-dri:i386 : Depends: libdrm-intel1:i386 (>= 2.4.38) but it is not going to be installed
Depends: libdrm-nouveau2:i386 (>= 2.4.38) but it is not going to be installed
Depends: libdrm-radeon1:i386 (>= 2.4.31) but it is not going to be installed
Depends: libdrm2:i386 (>= 2.4.38) but it is not going to be installed
Depends: libglapi-mesa:i386 but it is not going to be installed
libgl1-mesa-glx:i386 : Depends: libdrm2:i386 (>= 2.3.1) but it is not going to be installed
Depends: libglapi-mesa:i386 (= 9.2.1-1ubuntu3) but it is not going to be installed
Depends: libx11-6:i386 (>= 2:1.4.99.1) but it is not going to be installed
Depends: libxcb-dri2-0:i386 (>= 1.8) but it is not going to be installed
Depends: libxcb-glx0:i386 (>= 1.8) but it is not going to be installed
Depends: libxcb1:i386 but it is not going to be installed
Depends: libxdamage1:i386 (>= 1:1.1) but it is not going to be installed
Depends: libxext6:i386 but it is not going to be installed
Depends: libxfixes3:i386 but it is not going to be installed
Depends: libxxf86vm1:i386 but it is not going to be installed
So che passando attraverso tutte le dipendenze apt-get install libgl1-mesa-dri:i386 libdrm-intel1:i386
fino a quando non ho colpito qualcosa è disponibile, ma in questo caso sarà un lavoro doloroso a causa della quantità di pacchetti. C'è un modo più semplice per farlo?
Risposta accettata:
Una prima cosa ragionevole da provare è chiedere ad apt perché sta facendo quello che sta facendo. Questo può essere fatto con -o Debug::pkgProblemResolver=yes
opzione. Es.
apt-get -o Debug::pkgProblemResolver=yes install libgl1-mesa-dri:i386 libdrm-intel1:i386
Se apt non è disponibile, l'approccio standard per il debug di tali problemi consiste nel controllare i numeri di priorità delle versioni disponibili di ciascun pacchetto menzionato nel messaggio di errore. Questo viene comunemente fatto utilizzando apt-cache policy
.
Ad esempio, per utilizzare solo la prima parte del messaggio di errore, dovresti eseguire
apt-cache policy libgl1-mesa-dri:i386 libdrm-intel1:i386 libdrm-nouveau2:i386 libdrm-radeon1:i386 libdrm2:i386 libglapi-mesa:i386
Il modo in cui si procede dipende da ciò che questo mostra. Spesso è anche utile eseguire solo
apt-cache policy
che mostrerà tutte le fonti dei pacchetti disponibili, insieme ai loro numeri di priorità. Queste informazioni sono generalmente specificate in uno o entrambi /etc/apt/sources.list
o /etc/apt/sources.list.d
.
Le persone che cercano di ottenere aiuto qui dovrebbero prima pubblicare i risultati di questi comandi nella loro domanda . Probabilmente saranno sufficienti informazioni per determinare il problema.
Correlati:problema con UpdatePanel DataTable?Esempi di problemi nella vita reale:
-
Dipendenze non soddisfatte dopo l'utilizzo di un repository backports
:l'utente
includeva i sorgenti perwww.deb-multimedia.org
, senza fissarlo a una priorità
inferiore. Non includere mai fonti di terze parti senza fissarle a una
priorità inferiore. Nota che questo non dovrebbe essere necessario per
repository ben educati che forniscono pacchetti per la versione predefinita
, mawww.deb-multimedia.org
è noto per non giocare
bene con Debian e, in generale, non dovresti fidarti di fonti sconosciute.
Più in generale, se sai che un repository non è progettato per essere usato con il tuo sistema
, appuntalo a una priorità inferiore. Per esempio. testing/sorgenti instabili su Debian
stable. -
Dipendenze non soddisfatte:l'utente
è riuscito in qualche modo a installare una versione di Python che non era la
versione predefinita sul suo sistema. Naturalmente, si è scatenato l'inferno.
Morale della storia, assicurati di installare solo versioni di
pacchetti che siano corrette per il tuo sistema. Come sopraapt-cache policy pkgname
te lo dirà. -
dpkg / apt-get vuole installare e sovrascrivere diversi pacchetti
:l'utente ha provato
a installare pacchetti anche se il suodpkg
sottostante il database era
rotto. Morale, se vedi messaggi provenienti dadpkg
che qualcosa
o l'altro non va nei tuoi pacchetti, in questo caso0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. 2 not fully installed or removed.
il database del tuo pacchetto ha problemi. Per prima cosa correggili, prima di provare a installare
qualsiasi altra cosa. Seapt-get -f install
non funziona, potrebbe essere necessario
operare sudpkg
livello per sistemare le cose.