Come posso risolvere le dipendenze non soddisfatte dopo aver aggiunto un PPA?


540

Occasionalmente, quando installo roba, ricevo un errore simile al seguente:

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.

Come posso risolvere questo?


33
Dimentica il nome esatto del pacchetto. È irrilevante per questa domanda. Sto tentando di creare una domanda canonica . Pertanto, il pacchetto esatto non è rilevante in questa specifica istanza.
giovedì

33
In realtà "il nome esatto del pacchetto", sebbene non pertinente nella tua domanda, è estremamente rilevante per il problema di qualsiasi individuo in questo senso. Di solito il miglior primo passo per risolvere questo problema è identificare la fonte di pkg1 e pkg2. Questo sembra essere stato trascurato nelle risposte, la maggior parte delle quali è abbastanza buona in caso contrario. Inoltre, non si nota che in molti, se non nella maggior parte dei casi, "<qualunque> deve essere installato" significa in realtà "<qualvolta> è installato". Questo è qualcosa che tende a confondere molti utenti di fronte a questo e dovrebbe anche essere incluso in una risposta di seguito
Doug

5
@doug Aggiungilo come risposta e non come commento, è abbastanza buono! :)
jrg

1
@Braiam Whaaaat ha un punto però, la domanda non è specifica per un PPA e nemmeno alcune risposte lo sono. So che le prime due risposte sopraffanno un po 'le altre, ma non sono sicuro che cambiare la natura della domanda sia la soluzione giusta, soprattutto perché annulli le altre risposte. Lo sto lasciando per ora poiché non ho una risposta migliore ma è qualcosa a cui pensare.
Seth

2
Oh, e dov'è la mia domanda di risoluzione dei problemi? : D
Seth

Risposte:


561

APT è un sistema di gestione dei pacchetti per Debian e altre distribuzioni Linux basate su di esso, come Ubuntu. Per la maggior parte, APT è facile da usare per l'installazione, la rimozione e l'aggiornamento dei pacchetti. In rari casi, spesso quando si mescolano dipendenze di terze parti, è possibile che apt-getsi verifichi un errore che indica che non è possibile completare l'installazione di un pacchetto.

soluzioni:

È sempre una buona idea eseguire il backup dei file di configurazione come /etc/apt/sources.list, quindi è possibile ripristinare le modifiche se necessario.

  • Se errormostra qualcosa del genere:

    <some-package>: Depends: <other-package> (= version) but this-version is to be installed

    Quindi assicurarsi che i repository restrictede universesiano abilitati. Premi Alt+ F2, digita software-properties-gtke premi Enter.

    Nella Ubuntu Softwarescheda, abilitare tutti i repository.

  • Una possibile causa di dipendenze non soddisfatte potrebbe essere il database dei pacchetti corrotto e / o alcuni pacchetti non sono stati installati correttamente. Per risolvere questo problema, premi Alt+ Ctrl+ Tper aprire il terminale e prova a eseguire uno dei seguenti comandi:

    sudo apt-get clean

    o,

    sudo apt-get autoclean

    apt-get cleancancella il repository locale dei file di pacchetto recuperati (i file .deb). Rimuove tutto tranne il file di blocco da / var / cache / apt / archives / e / var / cache / apt / archives / partial /. apt-get autocleancancella il repository locale dei file di pacchetto recuperati, ma a differenza apt-get clean, rimuove solo i file di pacchetto che non possono più essere scaricati e sono in gran parte inutili.

  • Una delle correzioni di base per risolvere i problemi di dipendenza è l'esecuzione:

    sudo apt-get -f install

    Il -fqui sta per “risolvere rotto”. Apttenterà di correggere le dipendenze rotte. Se hai installato manualmente un pacchetto con dipendenze non soddisfatte, apt-getinstallerai tali dipendenze, se possibile, altrimenti potrebbe semplicemente rimuovere il pacchetto che hai installato per risolvere il problema.

    Quindi eseguire:

    sudo dpkg --configure -a

    Quindi eseguirlo di nuovo:

    sudo apt-get -f install

    Se l'output è:

    0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.

    Ciò significa che ha fallito.

  • La prossima soluzione è eseguire:

    sudo apt-get -u dist-upgrade

    Se mostra dei pacchetti trattenuti, è meglio eliminarli. I pacchetti vengono mantenuti a causa di conflitti di dipendenza che aptnon possono essere risolti. Prova questo comando per trovare e riparare i conflitti:

    sudo apt-get -o Debug :: pkgProblemResolver = yes dist-upgrade

    Se non è in grado di risolvere i conflitti, uscirà con:

    0 upgraded, 0 newly installed, 0 to remove and 6 not upgraded.

    Elimina i pacchetti in sospeso uno per uno, in esecuzione dist-upgradeogni volta, fino a quando non ci sono più pacchetti in attesa. Quindi reinstallare tutti i pacchetti necessari. Assicurati di utilizzare l' --dry-runopzione, in modo da essere pienamente informato delle conseguenze:

    sudo apt-get remove --dry-run nome-pacchetto

    Poiché la rimozione del pacchetto che si sta tentando di installare potrebbe non essere l'ideale, è possibile provare a trovare un repository con i pacchetti necessari per soddisfare le dipendenze.

Infine, se tutto il resto fallisce, puoi provare a soddisfare le dipendenze da solo, trovando e installando i pacchetti necessari, o installandoli dal sorgente e quindi creando pacchetti " deb " per loro.

Disabilita / Rimuovi / Elimina PPA:

I PPA (Personal Package Archive) sono repository ospitati su Launchpad . Puoi usare i PPA per installare o aggiornare i pacchetti che non sono disponibili nei repository ufficiali di Ubuntu.

Una delle cause più comuni di dipendenze non soddisfatte sono i PPA, specialmente se usati per aggiornare il pacchetto esistente nei repository Ubuntu. Per risolvere il problema hai tre opzioni: disabilita, elimina (ripristina il pacchetto originale nei repository Ubuntu) o rimuovi PPA.

  • Disattivare:

    Disabilitare un PPA significa non più aggiornamenti per i pacchetti installati da quel PPA. Per disabilitare un PPA: Apri Software Center > Edit > Software SourcesOppure,

    Premi Alt+ F2ed esegui software-properties-gtk.

    Fai clic sulla Other Softwarescheda, vedrai che ogni PPA ha due righe qui, una per i pacchetti compilati e una per l'origine, Uncheckentrambe le linee per disabilitare un PPA. Qui puoi anche aggiungere e rimuovere PPA.

  • Epurazione:

    Eliminare un PPA significa, downgrade dei pacchetti nel PPA selezionato alla versione nei repository ufficiali di Ubuntu e disabilitando quel PPA. PPA Purge fa esattamente questo. Per installare PPA Purge, eseguire il comando seguente:

    sudo apt-get install ppa-purge

Ma, considerando che la domanda aptè rotta, il comando sopra fallirà. Quindi usa questo comando

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

Per utilizzare PPA Purge:

sudo ppa-purge ppa: someppa / ppa

Se il comando 'ppa-purge' non riesce per qualche motivo, non è possibile eseguire nuovamente 'ppa-purge' a meno che non si riattivi il PPA (per abilitare il PPA seguire gli stessi passaggi della disabilitazione di un PPA e di Checkentrambe le righe di un particolare PPA per abilitarlo).

Nota: PPA Purgenon rimuove i PPA ( potrebbe essere in futuro ), quindi dovrai rimuovere manualmente il PPA.

  • Rimuovere:

    Se il pacchetto installato da un PPA non esiste nei repository ufficiali di Ubuntu, l'utilizzo PPA Purgenon è raccomandato, perché non c'è nulla da ridimensionare e PPA Purgenon lo eliminerebbe neanche. Per rimuovere un PPA e pacchetti installati, eseguire i seguenti comandi: (Ignorare il primo comando se non si desidera rimuovere i pacchetti installati)

    sudo apt-get autoremove --purge nome-pacchetto
    sudo add-apt-repository --remove ppa: someppa / ppa
    sudo apt-get autoclean
    

In alternativa è possibile utilizzare Y PPA Managerper disabilitare / rimuovere / eliminare PPA (Dettagli alla fine della risposta).

Misure preventive:

Quindi, come possiamo evitare che ciò accada in primo luogo?

  • Tieni Ubuntu aggiornato. Ubuntu avvisa automaticamente quando sono disponibili aggiornamenti, puoi anche controllare gli aggiornamenti disponibili facendo clic su Session Indicatornel pannello Unity:

    Oppure, premi Alt+ Ctrl+ Tper aprire il terminale ed eseguire i seguenti comandi:

    sudo apt-get update
    sudo apt-get upgrade

    Aggiornamento: sincronizza l'elenco dei pacchetti disponibili con i server nei repository di origine. Aggiornamento: scarica e installa tutte le versioni più recenti dei pacchetti installati.

  • Se decidi di aggiungere altri repository a sources.list, assicurati che il repository funzioni (e che funzioni) noto con Ubuntu. I repository che non sono progettati per funzionare con la tua versione di Ubuntu possono introdurre incoerenze nel tuo sistema e potrebbero costringerti a reinstallare. Inoltre, assicurati di dover davvero aggiungere repository esterni poiché i pacchetti software che stai cercando potrebbero essere già stati introdotti nei repository ufficiali! fonte
  • Rimuovere i PPA duplicati. Y PPA Manager(guida all'installazione alla fine della risposta) può facilmente scansionare e rimuovere duplicati di PPA.

    • Premi Alt+ F2ed esegui y-ppa-managerper aprire Y PPA Manager.
    • Una volta aperto, fare doppio clic o colpire Entersu Advanced.
    • Nella finestra risultante selezionare Scan and remove duplicate PPAse fare clic su OK.

inserisci qui la descrizione dell'immagine

Ottenere aiuto:

Quando chiedi aiuto su Askubuntu o su qualsiasi altro forum di aiuto, dovresti includere l'output dei seguenti comandi nella tua domanda:

  • Uscita dell'errore reale:

    sudo apt-get install nome-pacchetto
  • Questo mostrerà il tuo sources.list:

    cat /etc/apt/sources.list
  • Questo mostrerà l'elenco dei PPA (se presenti):

    cat /etc/apt/sources.list.d/*

Fonti aggiuntive:


Y PPA Manager : Y PPA Manager è uno sportello unico per tutte le tue esigenze PPA.

y manager ppa

Ecco alcune delle sue caratteristiche:

  • cerca pacchetti in tutti gli PPA di Launchpad
  • elencare e scaricare i pacchetti in un PPA
  • aggiungere / rimuovere / eliminare un PPA
  • eseguire il backup e il ripristino delle fonti PPA
  • rimuovere fonti PPA duplicate

Per installare Y PPA Manager, apri il terminale premendo Alt+ Ctrl+ Ted esegui i seguenti comandi:

sudo add-apt-repository ppa: webupd8team / y-ppa-manager
sudo apt-get update
sudo apt-get installa y-ppa-manager

Considerando la domanda, aptè rotta, quindi utilizzare questi comandi invece

sudo su

e

32 bit:

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 bit:

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

3
Come installare depandance non soddisfatte se apt è rotto?
Tachioni

4
Questo è stato di grande aiuto per me ... nuova installazione di Lubuntu 12.04 e impossibile installare cose di base come gvim (vim-gtk) o openssh-server. Avevo provato ogni sorta di opzioni da riga di comando, incluso letteralmente fare una diff di /etc/apt/sources.list da questa macchina e da un'altra (che funzionava correttamente, eseguendo Xubuntu). Dopo aver seguito questa guida, ho scoperto che in qualche modo in software-properties-gtk, la casella per i repository "principali" era stata deselezionata! Problema risolto!
memilanuk,

1
Qualche volta hai davvero tenuto pacchetti rotti ... Quindi la cosa migliore è svelarli ed eliminarli. Vedi askubuntu.com/a/363244/16395
Rmano,

3
Nessuno ha effettivamente risposto a come installare quei pacchetti con versioni di dipendenze non soddisfatte. Dio! Voglio solo forzare l'installazione di versioni precedenti di pacchetti.
Marines

3
Questo non ha funzionato per me: S
AlvaroAV il

87

Nota: tutti i comandi richiesti per l'esecuzione devono essere eseguiti nel terminale, che può essere aperto da Ctrl+ Alt+ To cercando il terminale nel trattino.

È davvero rotto?

Prova a eseguire il comando seguente e prova a reinstallare il software che stavi tentando di installare

sudo apt-get update

Passaggi pre-perfomance

Backup

Eseguire il backup dei seguenti file:

  • /etc/apt/sources.list
  • /var/lib/dpkg/status

Per fare ciò, utilizzare questi comandi

sudo cp /etc/apt/sources.list /etc/apt/sources.list.original

e

sudo cp /var/lib/dpkg/status /var/lib/dpkg/status.original

Svuotare la cache apt

aptmantiene una cache dei pacchetti scaricati di recente per risparmiare larghezza di banda quando deve essere installato. Questo può essere controproducente in alcuni casi

Ora, per pulirlo, hai due opzioni

sudo apt-get clean 

Ciò rimuoverà tutti i pacchetti memorizzati nella cache appartenenti alla cartella /var/cache/apt/archives/e ad /var/cache/apt/archives/partialeccezione dei file .lock. Questo è raccomandato

sudo apt-get autoclean

Questo esegue la scansione delle cartelle /var/cache/apt/archives/e /var/cache/apt/archives/partialverifica se il pacchetto è ancora nei repository e rimuove quelli che non lo sono


Correzione delle dipendenze

Usando la modalità fix-broken di apt

sudo apt-get -f install

Questo farà in modo che apt rilevi le dipendenze mancanti e le risolva dai repository

Se l'output indica che non è stato installato o aggiornato nulla di nuovo, non è riuscito.


Verifica se tutte le origini richieste sono abilitate

Digita gksu software-properties-gtke otterrai questa finestra

Assicurati che tutte le fonti siano abilitate.

quindi, vai alla scheda Altro software e controlla se sono presenti e abilitati i PPA richiesti per l'installazione del software. Inoltre, prova a disabilitare alcuni PPA che potrebbero avere pacchetti rotti

ora corri sudo apt-get update

Prova ora a installare il software

Selezione di un server migliore da cui scaricare

Digita gksu software-properties-gtke otterrai questa finestra

Fai clic su Scarica dalla casella a discesa e seleziona altro

Fai clic su Seleziona il server migliore

Correre sudo apt-get update

Prova a installare il software

prova anche a usare sudo apt-get install -f


PPA Purge

Questo è uno strumento utilizzato per eliminare i ppa rotti / indesiderati e le loro applicazioni insieme ad esso

Per installarlo, esegui

sudo apt-get install ppa-purge

Tuttavia, considerando che la domanda aptè interrotta, il comando sopra riportato fallirà. Quindi usa questo comando

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

Ora usa ppa purge

sudo ppa-purge ppa:someppa/ppa  

Manager Y-PPA

Y-PPA Manager è un'app gui che ti aiuta a gestire PPA e vari problemi associati ad essa

Per installarlo

sudo add-apt-repository ppa:webupd8team/y-ppa-manager

e

sudo apt-get update

e

sudo apt-get install y-ppa-manager

Considerando la domanda, aptè rotta, quindi utilizzare questi comandi

sudo su

e

32 bit:

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 bit:

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

Ora digita y-ppa-manager

Ti verrà presentata questa finestra

Fai doppio clic su Avanzate e otterrai questa finestra

Eseguire le seguenti attività descritte in nero


Prevenire è meglio che curare

È meglio prevenire che cercare questa domanda su AskUbuntu: D

Quindi, ecco le linee guida per tenerti al sicuro

Mantieni il tuo sistema aggiornato

eseguire sempre il seguente comando regolarmente

sudo apt-get update&&sudo apt-get upgrade

oppure, puoi sempre utilizzare Update Manager con questo comando

gksu update-manager

Utilizzando solo PPA attendibili

Usa PPA solo per Ubuntu, usa solo PPA con fonti attendibili. Infatti, il pacchetto potrebbe già essere nei repository ubuntu

Eseguire il backup quando le cose vanno bene e ripristinarlo in seguito

Per questo è necessario Y-PPA-Manager. I passaggi per installarlo sono indicati sopra.

Eseguire questo comando per aprire Y-PPA-Manager

y-ppa-manager

Ti verrà presentata questa finestra

Fai doppio clic su Avanzate e otterrai questa finestra

Esegui questo:

Ti verrà chiesto di salvare un file tar.gz con una finestra di dialogo simile a quella qui sotto. Salvalo in un'altra partizione o in un luogo sicuro

Successivamente, quando è necessario ripristinarlo di nuovo, seguire passaggi simili e quando si arriva alla finestra di dialogo avanzata, fare clic su questo:

Ti verrà chiesto di ripristinare dal backup precedente che hai salvato in precedenza con una finestra di dialogo simile a quella seguente


Continua a non funzionare?

Gli errori di dipendenza del pacchetto non sono sempre generici e dipendono dal pacchetto da installare.

Se seguire tutti i passaggi indicati per correggere l'errore non funziona per te, puoi sempre chiedere su Chiedi a Ubuntu

Ecco alcuni comandi di cui è necessario pubblicare l'output di

sudo apt-get install packagename

e

cat /etc/apt/sources.list

e

cat /etc/apt/sources.list.d/*

(Grazie a Basharat Sial )

Ci sono anche altri file / comandi di cui hai bisogno che l'output possa essere specifico dell'errore e gli utenti probabilmente ti chiederanno nei commenti di pubblicare il file / comando.


Vorrei mettere in apt-get updatecima alla lista. A volte il tuo sistema ha effettuato un aggiornamento in cui un pacchetto più recente è stato aggiornato in remoto, ma uno da cui dipende non ha ancora completato la creazione. Oppure la versione che hai nella cache locale è stata aggiornata. In questi casi, un semplice apt-get updateaggiorna la cache locale e puoi continuare.
Hamish Downer,

1
La migliore risposta! Mi fa solo desiderare che apt e / o dpkg abbiano protezioni migliori per assicurarsi che non entrino in questi stati rotti bloccati o che siano più bravi a risolverli. Ho già avuto questo problema ed ero piuttosto frustrato quando apt-get install -fnon l'ho risolto.
Jeff Welling,

Potresti anche voler includere questo avviso: "Non aggiornare mai il tuo sistema mentre PPA è abilitato, disabilitali prima e poi aggiorna" Perché, se esegui l'aggiornamento a una versione PPA e poi che PPA diventa morto, alla fine significa che sei morto . Non è possibile eseguire il downgrade dell'intero sistema ai numeri di versione inferiori e non è possibile installare qualcosa da un repository standard poiché il pacchetto dal repository std ha conflitti con il pacchetto PPA installato.
Anwar,

2
Scegli un server migliore riparato per me. Grazie!
Hoang Huynh,

Ho pensato che la -fbandiera rappresentasse la forza ed evitavo sempre di usarla
user907860

38

Queste risposte finora si concentrano su come risolvere automagicamente un problema del genere, principalmente sperando che si risolva da solo, ma non si concentrano sulla comprensione di come indagare le dipendenze. È importante provare cose come assicurarsi che l'elenco dei pacchetti sia aggiornato, poiché è necessario assicurarsi che un semplice aggiornamento o svuotamento della cache non risolva il problema prima di scavare più a fondo. Se tutto dietro le quinte funziona come dovrebbe, tuttavia, è fondamentale imparare a capire le dipendenze. A volte i livelli di dipendenze possono sembrare schiaccianti, ma il concetto è semplice e la chiave per capire come il software viene installato / disinstallato in un sistema Ubuntu.

Consiglio vivamente l' attitudine a chiunque usi un sistema basato su .deb come Ubuntu. La struttura ad albero consente di sfogliare facilmente le dipendenze, inclusi i pacchetti consigliati e suggeriti, nonché di visualizzare conflitti e dipendenze non soddisfatte. È uno strumento prezioso per quando apt-get non offre una soluzione semplice e per visualizzare le dipendenze in generale. ( Synaptic è disponibile anche in Ubuntu, ma non lo trovo intuitivo.)

Aptitude offre anche un risolutore di conflitti che ti guiderà attraverso tutte le possibili combinazioni di pacchetti installati / rimossi / aggiornati / etc per soddisfare tutti i requisiti senza conflitti o problemi. Questo può avere successo anche quando apt non è in grado di trovare una soluzione. Come utente Ubuntu, normalmente non si verificano situazioni che richiedono di indagare sul motivo per cui quel particolare pacchetto viene installato, ma è quasi inevitabile se si utilizza di più il sistema.


3
Votato per menzione del risolutore di conflitti Aptitude. Ci sono momenti in cui è essenziale utilizzare strumenti avanzati come questo per determinare quali sono le possibilità e individuare il conflitto centrale.
John S Gruber,

3
Questa potrebbe effettivamente essere la migliore risposta in questa discussione. Può anche essere migliorato con un tutorial sul aptituderisolutore di conflitti.
Luís de Sousa,

2
questo collegamento, sebbene non spieghi le dipendenze, o il loro concetto generale, mostra un breve tutorial del risolutore interattivo: aptitude.alioth.debian.org/doc/en/ch02s03s03.html
sovrascritto il

1
+1 attitudine ha appena salvato la mia pancetta di fronte a un conflitto GTK3. apt-get non è stato di alcun aiuto.
Chris Laplante,

1
Quello che mi piace è sudo aptitude --full-resolver my_package. Che di solito dà The following packages have unmet dependenciese un elenco tra cui 7) <my_package> [Not Installed](7 è solo un esempio). Ad ogni passo aptitude offre nuove scelte. Quello che ha funzionato per me è stato scegliere prima 7, poi r 7(che corrisponde alla descrizione Rejecting the removal of my_package), e poi n (per NO) come le scelte prima che non erano quelle che volevo: ma dopo quelle nuove scelte hanno offerto il downgrade di alcuni pacchetti insieme all'installazione di my_package; quindi, per ultimo, Y(per SÌ)

24

pacchetto1: dipende: pacchetto2 (> = 1.8) ma deve essere installato 1.7.5-1ubuntu1

Spiegazione del messaggio:

  1. Per completare l'installazione, il pacchetto1 richiede pacchetto2.
  2. package2 deve essere disponibile nella versione> = 1.8
  3. Il gestore pacchetti ha controllato tutti i repository e ha trovato solo la versione 1.7.5-1ubuntu1 che poteva essere installata, cosa che non farà perché è <1.8

fissare

Non esiste una risposta corretta per questa domanda e NON esiste una risposta semplice.

Esistono molti scenari per cui ciò può accadere e bisogna investigare su tutte le opzioni e provare a risolvere i presupposti che portano a questo errore.

Scenario A:

Tutti i repository a cui hai accesso non hanno package2 nella versione> = 1.8, quindi dovrai trovare un repository che lo abbia. Se non riesci a trovare un repository con versioni> = 1.8, potresti dover compilare e installare package2 dal sorgente. E quindi prova a installare package1.

Se vuoi sapere come compilare un pacchetto dalla fonte, controlla altre domande / risposte o pubblicane uno nuovo.

Scenario B:

I repository includono package2 in una versione> = 1.8 ma il gestore pacchetti desidera ancora installare una versione precedente (1.7.5).

Il motivo potrebbe essere che le versioni successive di package2 sono state create da una tecnologia più recente che non è supportata da altri pacchetti che sono già stati installati.

Questo potrebbe non essere possibile risolvere affatto. Puoi provare a usare apt o synaptic e cercare tutte le versioni del pacchetto2 che sono disponibili nei repository e provare a installare una versione specifica> = 1.8

Se hai altri pacchetti incompatibili e lo fai, otterrai un elenco di messaggi di errore simili per tutti gli altri pacchetti che impediscono l'installazione di package2> = 1.8.

In questo caso, hai un problema più grande. Volevi installare package1, che ha bisogno che package2 sia> = 1.8, ma package2 nella versione> = 1.8 richiede che package3 sia nella versione> = 6.7 e hai package3 versione 6.3

Il fatto è che il gestore di pacchetti (APT) tenta di risolvere automaticamente tutte queste dipendenze, se possibile. Quando dice che non è possibile (ed emette un messaggio come nella domanda), allora dovresti fidarti.

Se decidi di non fidarti del gestore dei pacchetti e se sei sicuro di non avere problemi, puoi provare a forzare l'installazione delle versioni specifiche necessarie di tutti i pacchetti, uno per uno, e speri di essere OK.

Attenzione, farlo per i pacchetti di sistema può creare seri problemi. Puoi bloccarti fuori dal sistema, bloccare servizi critici ecc.

Scenario C:

Indipendentemente dalle ragioni del problema, è sempre possibile impostare la compilazione manuale e creare il pacchetto necessario e tutte le sue dipendenze nelle versioni esatte necessarie dall'origine. Con questa opzione è possibile mantenere ciò che è stato creato in una directory separata e fuori dal percorso del sistema in modo che non crei conflitti con il sistema. Questa è probabilmente la soluzione più pulita, e talvolta può essere più veloce da fare.

Scenario D:

Il gestore pacchetti ha accesso a informazioni obsolete sui pacchetti e pertanto non è possibile trovare una soluzione. Guarda le altre risposte.

Scenario E:

Il gestore pacchetti ha un bug nel codice di risoluzione delle dipendenze.

Devi investigare che questo è davvero il caso, quindi emettere una richiesta di bug.

...

Scenario Z:

Potrebbero esserci altri scenari.

Ad esempio, i manutentori dei pacchetti avrebbero potuto essere errati e non hanno verificato che il pacchetto1 funzionasse anche con la versione del pacchetto2 <1.8 e nelle specifiche hanno impostato dipendenze errate.


17

Questi metodi devono essere seguiti ogni volta che si ottiene un errore relativo alle dipendenze non soddisfatte

Dopo aver seguito le istruzioni, provare a installare il software. Almeno uno di questi metodi dovrebbe funzionare per te

1 . Prima di provare qualsiasi nuovo comando o aggiungere qualsiasi nuovo ppa provare questo

Pulizia della cache apt:

sudo apt-get clean

Eliminazione di eventuali dipendenze non utilizzate:

sudo apt-get autoremove

Aggiornamento di apt-cache

sudo apt-get update

Ciò rimuoverà tutta la cache e scaricherà una nuova cache. Questo dovrebbe essere fatto per ottenere nuovi pacchetti di cache e aggiornamenti più recenti.

2 . Prova sudo apt-get install -f.

Probabilmente fornirà alcuni suggerimenti sulla rimozione e l'installazione dei pacchetti, fare ciò che sembra ragionevole.

3 . Cambia Download Serverda Software SourcesPerché a volte i file su un server sono danneggiati.

inserisci qui la descrizione dell'immagine
inserisci qui la descrizione dell'immagine
inserisci qui la descrizione dell'immagine

4 . Questo accade anche se prima hai aggiunto un ppa esterno per la dipendenza interrotta. Prova a rimuovere quel ppa da

  • digitando sudo add-apt-repository --remove ppa:someppa/ppae quindi rimuovendo manualmente i file / le librerie installati ppa

o

  • spurgo di un ppa (questo rimuove anche i file installati)

    sudo apt-get install ppa-purge   #a one time install 
    sudo ppa-purge ppa:someppa/ppa  
    

5 . Se no 4 non è il tuo caso, almeno prova a rimuovere il pacchetto che viene mostrato come una dipendenza interrotta, quindi riprova a installare. Si dice che abbia preoccupato per un bel po 'di persone.

6 . Aggiungi sempre la versione stabile di un repository / PPA.

inserisci qui la descrizione dell'immagine

7 Assicurati anche di avere abilitato tutti i repository ufficiali (In Software Sources)

inserisci qui la descrizione dell'immagine

Si prega di non abilitare Proposed Updatescome sono destinati a test / sviluppatori.

inserisci qui la descrizione dell'immagine


Come raccontato da Doug:

Di solito il miglior primo passo per risolvere questo problema è identificare la fonte di <pkg1>& <pkg2>.

Inoltre, non si nota che in molti, se non nella maggior parte dei casi, "<qualunque> deve essere installato" significa in realtà "<qualvolta> è installato" e dovrebbe essere provato a essere rimosso se non funziona nient'altro (come al punto 5).


Continuerò ad aggiungere altre cose che non troverò da risolvere unmet dependencies.


3
@Ashu Una cosa che si potrebbe voler fix-- apt-get updatenon senza aggiornare la cache di apt (che consiste scaricati .debi file e un file che memorizza le informazioni su quali .debfile memorizzati). Aggiorna i file dell'indice dei pacchetti (che consistono in informazioni su quali pacchetti sono disponibili per essere scaricati e installati da ciascuna fonte software disponibile). Come ho detto prima, apt-get cleannon ripulisce la stessa cosa che apt-get updateaggiorna. Vedi man apt-getper i dettagli.
Eliah Kagan,

16

Nella maggior parte dei casi, l'installazione del pacchetto aptituderisolve le dipendenze non soddisfatte. Per impostazione predefinita, il aptitudepacchetto non è stato installato sul PC, quindi installarlo eseguendo,

sudo apt-get update
sudo apt-get install aptitude

poi,

sudo aptitude install packagename

Per esempio,

    
avinash @ avinash-Lenovo-IdeaPad-Z500: ~ $ sudo apt-get install ubuntu-sdk
Lettura degli elenchi dei pacchetti ... Fine
Costruire l'albero delle dipendenze       
Lettura delle informazioni sullo stato ... Fatto
Alcuni pacchetti non possono essere installati. Questo può significare che hai
richiesto una situazione impossibile o se si sta utilizzando unstable
distribuzione che alcuni pacchetti richiesti non sono ancora stati creati
o è stato spostato da Incoming.
Le seguenti informazioni possono aiutare a risolvere la situazione:

I seguenti pacchetti hanno dipendenze non soddisfatte:
 ubuntu-sdk: dipende: qtcreator-plugin-ubuntu ma non verrà installato
E: impossibile correggere i problemi, hai conservato pacchetti rotti.

Installazione del pacchetto tramite aptitude

avinash @ avinash-Lenovo-IdeaPad-Z500: ~ $ sudo aptitude installa ubuntu-sdk
Verranno installati i seguenti NUOVI pacchetti:
  apparmor-easyprof {a} apparmor-easyprof-ubuntu {a} su {a} build-essential {a} 
  fai clic su {a} click-apparmor {a} click-dev {a} click-doc {a} cordova-ubuntu-2.8 
  cordova-ubuntu-2.8-esempi {a} debhelper {a} devscripts {a} dh-apparmor {a} 
  dh-make {a} distro-info-data {a} dpkg-dev {a} dput {a} g ++ {a} g ++ - 4.8 {a} 
  geoclue-gypsy {a} libalgorithm-diff-perl {a} libalgorithm-diff-xs-perl {a} 
  libalgorithm-merge-perl {a} libboost-filesystem1.53.0 {a} 
  libboost-program-options1.53.0 {a} libboost-regex1.53.0 {a} 
  libbotan-1.10-0 {a} libdee-qt5-3 {a} libdistro-info-perl {a} 
  libexporter-lite-perl {a} libglib2.0-dev {a} 
  libgstreamer-plugins-base1.0-dev {a} libgstreamer1.0-dev {a} libgypsy0 {a} 
  libhud2 {a} libio-stringy-perl {a} libjs-jquery {a} libjs-sphinxdoc {a} 
  libjs-underscore {a} liblockdev1 {a} libmail-sendmail-perl {a} 
  libparse-debcontrol-perl {a} libpcre3-dev {a} libpcrecpp0 {a} 
  libpoppler-qt5-1 {a} libqdjango-db0 {a} libqgsttools-p1 {a} 
  libqt5clucene5 {a} libqt5contacts5 {a} libqt5declarative5 {a} 
  libqt5designer5 {a} libqt5designercomponents5 {a} libqt5feedback5 {a} 
  libqt5help5 {a} libqt5location5-plugins {a} libqt5multimedia5 {a} 
  libqt5multimedia5-plugins libqt5multimediaquick-p5 {a} 
  libqt5multimediawidgets5 {a} libqt5organizer5 {a} 
  libqt5qml-graphicaleffects {a} libqt5script5 libqt5scripttools5 {a} 
  libqt5svg5 {a} libqt5svg5-dev libqt5systeminfo5 {a} libqt5v8-5-dev 
  libqt5versit5 {a} libqt5versitorganizer5 {a} libqt5webkit5-dev 
  libqt5webkit5-qmlwebkitplugin {a} libqt5xmlpatterns5 {a} 
  libqt5xmlpatterns5-dev libstdc ++ - 4.8-dev {a} libsys-hostname-long-perl {a} 
  libthumbnailer0 {a} libu1db-qt5-3 {a} libunity-action-qt1 {a} 
  libupstart-app-launch1 {a} libusermetricsinput1 {a} libxml2-dev {a} 
  libxslt1-dev {a} po-debconf {a} python3-apparmor-click {a} python3-click {a} 
  python3-magic {a} qmlscene qt3d5-dev qtbase5-doc {a} qtcreator {a} 
  qtcreator-doc {a} qtcreator-plugin-ubuntu {a} 
  qtcreator-plugin-ubuntu-common {a} qtdeclarative5-account-plugin 
  qtdeclarative5-cordova-2.8-plugin {a} qtdeclarative5-dev-tools 
  qtdeclarative5-doc-html {a} qtdeclarative5-folderlistmodel-plugin 
  qtdeclarative5-friends0.2 qtdeclarative5-localstorage-plugin 
  qtdeclarative5-particelle-plugin qtdeclarative5-poppler1.0 
  qtdeclarative5-qtaudioengine-plugin qtdeclarative5-qtfeedback-plugin {a} 
  qtdeclarative5-qtlocation-plugin qtdeclarative5-qtmultimedia-plugin {a} 
  qtdeclarative5-qtorganizer-plugin qtdeclarative5-qtquick2-plugin {a} 
  qtdeclarative5-qtsensors-plugin qtdeclarative5-u1db1.0 
  qtdeclarative5-ubuntu-ui-extra-browser plug-in {a} 
  qtdeclarative5-ubuntu-ui-extras--plugin-asset del browser {a} 
  qtdeclarative5-ubuntu-ui-toolkit-plugin {a} 
  qtdeclarative5-unity-action-plugin {a} qtdeclarative5-usermetrics0.1 
  qtdeclarative5-window-plugin {a} qtdeclarative5-xmllistmodel-plugin 
  qtgraphicaleffects5-doc {a} qtlocation5-dev {a} qtmultimedia5-dev 
  qtmultimedia5-doc {a} qtmultimedia5-doc-html {a} qtscript5-dev 
  qtscript5-doc {a} qtscript5-doc-html {a} qtsensors5-dev {a} qtsvg5-doc {a} 
  qtsvg5-doc-html {a} qttools5-dev qttools5-dev-tools qttools5-doc {a} 
  qtwebkit5-doc-html {a} schroot {a} schroot-common {a} sqlite3 {a} 
  ubuntu-html5-container ubuntu-html5-sdk {ab} ubuntu-html5-theme {a} 
  ubuntu-html5-temi-esempi ubuntu-sdk ubuntu-sdk-libs 
  ubuntu-sdk-libs-dev {a} ubuntu-ui-toolkit-doc {a} 
  ubuntu-ui-toolkit-esempi {a} ubuntu-ui-toolkit-theme {a} 
  unity-action-doc {a} upstart-app-launch {a} upstart-app-launch-tools {a} 
  usermetricsservice {a} wdiff {a} zlib1g-dev {a} 
Verranno aggiornati i seguenti pacchetti:
  cpp-4.8 gcc-4.8 gcc-4.8-base hud libasan0 libatomic1 libgcc-4.8-dev 
  libgcc1 libglib2.0-0 libglib2.0-bin libgomp1 libitm1 libquadmath0 
  libstdc ++ 6 libtsan0 
15 pacchetti aggiornati, 151 appena installati, 0 da rimuovere e 293 non aggiornati.
È necessario ottenere 108 MB / 126 MB di archivi. Dopo il disimballaggio verranno utilizzati 273 MB.
I seguenti pacchetti hanno dipendenze non soddisfatte:
 ubuntu-html5-sdk: dipende: qtdeclarative5-ubuntu-webapps-api che è un pacchetto virtuale.
                    Dipende da ubuntu-html5-ui-toolkit ma non verrà installato.
Le seguenti azioni risolveranno queste dipendenze:

     Mantenere i seguenti pacchetti nella versione corrente:              
1) qtcreator-plugin-ubuntu [Non installato]                          
2) ubuntu-html5-sdk [Non installato]                                 
3) ubuntu-sdk [non installato]                                       

     Lasciare irrisolte le seguenti dipendenze:                       
4) libhud-client2 raccomanda hud (= 13.10.1 + 13.10.20131014-0ubuntu1)
5) qtcreator-plugin-ubuntu-common consiglia qtcreator-plugin-ubuntu


Accetti questa soluzione? [Y / n / q /?] Y
Verranno installati i seguenti NUOVI pacchetti:
  apparmor-easyprof {a} apparmor-easyprof-ubuntu {a} build-essential {a} 
  fai clic su {a} click-apparmor {a} cordova-ubuntu-2.8 debhelper {a} dh-apparmor {a} 
  dh-make {a} dpkg-dev {a} g ++ {a} g ++ - 4.8 {a} geoclue-gypsy {a} 
  libalgorithm-diff-perl {a} libalgorithm-diff-xs-perl {a} 
  libalgorithm-merge-perl {a} libdee-qt5-3 {a} libglib2.0-dev {a} 
  libgstreamer-plugins-base1.0-dev {a} libgstreamer1.0-dev {a} libgypsy0 {a} 
  libhud2 {a} libjs-jquery {a} libmail-sendmail-perl {a} libpcre3-dev {a} 
  libpcrecpp0 {a} libpoppler-qt5-1 {a} libqdjango-db0 {a} libqgsttools-p1 {a} 
  libqt5clucene5 {a} libqt5contacts5 {a} libqt5designer5 {a} 
  libqt5designercomponents5 {a} libqt5feedback5 {a} libqt5help5 {a} 
  libqt5location5-plugins {a} libqt5multimedia5 {a} libqt5multimedia5-plugins 
  libqt5multimediaquick-p5 {a} libqt5multimediawidgets5 {a} 
  libqt5organizer5 {a} libqt5qml-graphicaleffects {a} libqt5script5 
  libqt5scripttools5 {a} libqt5svg5 {a} libqt5svg5-dev libqt5systeminfo5 {a} 
  libqt5v8-5-dev libqt5versit5 {a} libqt5versitorganizer5 {a} 
  libqt5webkit5-dev libqt5webkit5-qmlwebkitplugin {a} libqt5xmlpatterns5 {a} 
  libqt5xmlpatterns5-dev libstdc ++ - 4.8-dev {a} libsys-hostname-long-perl {a} 
  libthumbnailer0 {a} libu1db-qt5-3 {a} libunity-action-qt1 {a} 
  libupstart-app-launch1 {a} libusermetricsinput1 {a} libxml2-dev {a} 
  libxslt1-dev {a} po-debconf {a} python3-apparmor-click {a} python3-click {a} 
  qmlscene qt3d5-dev qtdeclarative5-account-plugin 
  qtdeclarative5-cordova-2.8-plugin {a} qtdeclarative5-dev-tools 
  qtdeclarative5-folderlistmodel-plugin qtdeclarative5-friends0.2 
  qtdeclarative5-localstorage-plugin qtdeclarative5-particelle-plugin 
  qtdeclarative5-poppler1.0 qtdeclarative5-qtaudioengine-plugin 
  qtdeclarative5-qtfeedback-plugin {a} qtdeclarative5-qtlocation-plugin 
  qtdeclarative5-qtmultimedia-plugin {a} qtdeclarative5-qtorganizer-plugin 
  qtdeclarative5-qtquick2-plugin {a} qtdeclarative5-qtsensors-plugin 
  qtdeclarative5-u1db1.0 qtdeclarative5-ubuntu-ui-extra-browser-plugin {a} 
  qtdeclarative5-ubuntu-ui-extras--plugin-asset del browser {a} 
  qtdeclarative5-ubuntu-ui-toolkit-plugin {a} 
  qtdeclarative5-unity-action-plugin {a} qtdeclarative5-usermetrics0.1 
  qtdeclarative5-window-plugin {a} qtdeclarative5-xmllistmodel-plugin 
  qtlocation5-dev {a} qtmultimedia5-dev qtscript5-dev qtsensors5-dev {a} 
  qttools5-dev qttools5-dev-tools sqlite3 {a} ubuntu-html5-container 
  ubuntu-html5-theme {a} ubuntu-html5-theme-esempi ubuntu-sdk-libs 
  ubuntu-ui-toolkit-theme {a} upstart-app-launch {a} 
  upstart-app-launch-tools {a} usermetricsservice {a} wdiff {a} zlib1g-dev {a} 
Verranno aggiornati i seguenti pacchetti:
  cpp-4.8 gcc-4.8 gcc-4.8-base hud libasan0 libatomic1 libgcc-4.8-dev 
  libgcc1 libglib2.0-0 libglib2.0-bin libgomp1 libitm1 libquadmath0 
  libstdc ++ 6 libtsan0 
15 pacchetti aggiornati, 108 appena installati, 0 da rimuovere e 293 non aggiornati.
È necessario ottenere 27,1 MB / 45,8 MB di archivi. Dopo il disimballaggio verranno utilizzati 104 MB.
Vuoi continuare? [Y / n /?]

Il tuo esempio ha solo l'attitudine a interrompere l'installazione. In realtà non installa nulla.
Kiri,

2
@AvinashRaj, ..ma prima dell'installazione aptitudeil problema delle dipendenze non dovrebbe essere risolto?
preciso

sì, nella maggior parte dei casi risolve le dipendenze.
Avinash Raj,

2
Voglio dire se il sistema ha pacchetti rotti, non consentirebbe nuove installazioni fino a quando non sarà risolto .. quindi come installeresti aptitudesenza prima risolvere il problema!
preciso

in tal caso, prima dobbiamo risolvere i pacchetti rotti, altrimenti non è possibile installare aptitude. Se non si sono verificati errori dovuti a pacchetti rotti, è possibile installare aptitude.
Avinash Raj,

11

La mia risposta è simile a quella di Rick sopra.

Usando apt-get clean, apt-get autoclean, apt-get autoremove, apt-get upgrade, apt-get update, apt-get -u dist-upgrade, ecc tutti non ha funzionato per me.

Alla fine ho risolto questo problema scendendo nell'albero delle dipendenze tramite apt-get install, illustrato con un esempio di seguito. Nel mio caso, volevo installare libmagickwand-dev:

apt-get install libmagickwand-dev

Ho ricevuto questo errore:

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

Quindi, ho corso apt-get installper una delle dipendenze fallite:

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

Scesi più in basso lungo l'albero:

apt-get install libgraphviz-dev

con un altro errore:

The following packages have unmet dependencies:
 libgraphviz-dev : Depends: libgvc5 (= 2.26.3-10ubuntu1) but it is not going to be installed

Ancora una volta più in profondità nell'albero:

apt-get install libgvc5

Per qualche strana ragione, questo è riuscito, e sono stato in grado di installare il pacchetto originale che volevo con 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]?

8

Risposte eccellenti! Ma oggi il mio caso sembra diverso dal tuo. Ecco il mio consiglio

Problema:

Non sono riuscito a installare apache2 in 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

Soluzione:

La mia strada è aggiungere il pacchetto dipendente nell'elenco di installazione.

Se 'sudo apt-get install apache2' non è riuscito, provare ' sudo apt-get install apache2 apache2.2-common '.

Vedere? apache2.2-common proviene dal registro degli errori del passaggio precedente.

Alla fine ho scoperto che esiste una catena di dipendenze come questa:

 apache2.2-common <-- apache2.2-bin <-- libaprutil1-ldap <-- libaprutil1

Per i primi 3 pacchetti, apt-get log mi ha detto 'non verrà installato',

ma per l'ultimo pacchetto, mostra 'libaprutil1-ldap: Dipende da libaprutil1 (= 1.3.9 + dfsg-3build1) ma deve essere installato 1.3.9 + dfsg-3ubuntu0.10.10.1'

Ho una versione diversa esistente nella mia libreria, quindi:

sudo apt-get remove libaprutil1

sudo apt-get install apache2

Ora va bene.


Una lettura combinata di questa risposta e l'altra qui sopra fornisce una migliore comprensione di cosa sia un problema di dipendenza. Quando altre risposte qui forniscono SOLUZIONI "altamente generalizzate", ciò fornisce COMPRENSIONE.
VenkiPhy6,

7

cosa sono le dipendenze non soddisfatte Errore

Sui pacchetti Ubuntu è il modo principale in cui il software viene creato, distribuito e installato. Molto semplicemente, i pacchetti sono un'alternativa al download, alla creazione e all'installazione di software da zero. Offrono una serie di vantaggi in termini di installazione, rimozione, monitoraggio e gestione delle interazioni tra software rispetto al modello standard "build from source". Ubuntu utilizza un sistema di packaging centralizzato, ovvero ogni pacchetto dipende da alcuni altri pacchetti. Quando installiamo un pacchetto, verranno installate le sue dipendenze, l'errore di dipendenze non soddisfatte si verifica quando le dipendenze del pacchetto non sono disponibili per l'installazione

Cause possibili

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

Proviamo a risolverlo

  1. Connessione a Internet: D
  2. Assicurarsi che tutti i repository predefiniti siano abilitati

    -> Puoi facilmente aggiungerli in Software Center-> Modifica-> Sorgenti software-> Altre fonti-> Aggiungi "

    -> Avvia il Software Center.

    ->. Nel pannello vai a Edite seleziona Software Sources.

    edit-software-sources

    -> Assicurarsi che tutti i repository siano controllati inserisci qui la descrizione dell'immagine

  3. Aggiorna il catalogo del software

    fai clic sull'icona in alto a destra e seleziona Aggiorna disponibile nel menu
    inserisci qui la descrizione dell'immagine

e premere il tasto check inserisci qui la descrizione dell'immagine

4.type ctrl+ alt+ tper aprire il terminale e digitare sudo apt-get install -f

5. Elimina il ppa aggiunto di recente usando ppa-purge ppa-purge Installa ppa-purge

Questo programma disabilita un PPA dalle tue fonti software e ripristina il tuo sistema ai pacchetti Ubuntu ufficiali. È possibile utilizzare questo per ripristinare il normale sistema dopo aver testato una nuova versione da un PPA.

Sintassi

sudo ppa-purge ppa:<repository-name>/<subdirectory>

Esempio

sudo ppa-purge ppa:ubuntu-mozilla-daily/ppa
  1. aprire il centro software e provare a installare qualsiasi software. Se viene visualizzata la seguente finestra di dialogo, premere il pulsante Ripara e attendere

inserisci qui la descrizione dell'immagine

Altrimenti digitare ctrl+ alt+ tper aprire il terminale e digitare sudo apt-get install -fe seguire le istruzioni visualizzate

Se si verifica ancora un errore, sentiti libero di chiedere in askbuntu


@jrg L'ho già nella mia risposta ... ogni risposta deve avere la stessa cosa?
Ashu,

2
@Ashu Sto cercando di aiutare le persone a dare una risposta canonica - e devo dirlo a tutti , poiché è in gioco una ricompensa di 500 rappresentanti e non voglio giocare ai preferiti aiutando alcune persone con le loro risposte, ma ignorandone altre . : s
jrg

5

... non dimenticare `build-dep`

Oltre a queste risposte sopra - Devo ammettere che sono sorpreso che nessuno abbia menzionato questo approccio che è quello che ho sempre usato come "proiettile d'argento" in qualsiasi momento ho incontrato conflitti apt-get o pacchetti non risolti (o anche se il sistema è testardo .... ah!).

EDITED: l'utilizzo sudo dpkg -r [package]è incoraggiato in quanto ha una funzione di rimozione piuttosto potente. Poiché apt-getfunziona insieme a dpkg, il che significa apt-getche obbedirà alla dpkgfunzione.

  sudo dpkg -r [package]
  sudo apt-get build-dep [package]  
  ## pre-install all deps for the package

Chiamate apt-get per eliminare il pacchetto fallito che stavate tentando di installare nel sistema, quindi chiamate il comando build-dep, che apt-get acquisirà e installerà le dipendenze individualmente appartenenti a questo pacchetto, in modo che soddisfino il pacchetto prima. Quindi, infine, chiama apt-get install:

sudo apt-get install [package]

.... 'Ugh! Giriamo il braccio fino a urlare "Zio!" '

Questo è accaduto raramente durante i miei lunghi anni di utilizzo di Linux, ma mi sono ritrovato a usare raramente questo approccio e ci sono riuscito. Questo è un esempio della recente lotta che ho avuto un mese fa con i pacchetti mysql-client/mysql-server. Dopo una dozzina di tentativi falliti di reimpostare la mia password di root con mysql-server (anche tramite --skip-grant-tables techqiue ma ancora fallito), finalmente riesco a "torcere il braccio di Linux fino a quando non urla" Zio! "':

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 è la chiave in questa soluzione


3

Durante l'installazione di pacchetti i386 in sistemi Ubuntu Multiarch a 64 bit

Se si sta tentando di installare un pacchetto che dipende da molti pacchetti i386, anche l'errore di dipendenza sopra indicato potrebbe essere causato se non si riesce ad aggiungere l'architettura i386 eseguendo il sudo dpkg --add-architecure i386comando.

Esempio:

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] 

Sono d'accordo che potrebbe essere una delle possibili cause. quando ho provato ad installare qualche altro pacchetto (per esempio vlc) dopo aver installato skype e ho ottenuto la dipendenza non soddisfatta. Sono uscito da una situazione simile aggiungendo :amd64alla fine del nome del pacchetto che causava l'errore. come ti sei ripreso? quale sarebbe la soluzione migliore?
souravc,

Non sono sicuro del motivo per cui questo è stato downvoted È quello di cui avevo bisogno per installare Wine a 32 bit. A proposito, hai un refuso in --add-architecture e dovresti aggiungere un promemoria per eseguire apt-get upgrade dopo --add-architecture.
Matt Chambers,

1

Dopo aver provato vicino a tutti i metodi menzionati in questo thread (e in altri) ero vicino a rinunciare. Avevo aggiornato Debian Lenny su Squeeze e non riuscivo a capire perché PHP5, Apache, MySQL ecc. Non volessero installarlo. Alla fine ho provato a usare

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

..e ha funzionato perfettamente! ( Attenzione, potrebbe distruggere i tuoi file di configurazione, quindi esegui il backup! )


Questo non risolve il problema se non hai installato i pacchetti citati.
Braiam,

1

Ciò che ha funzionato per me è reinstallare la dipendenza. È il caso in cui la versione installata è più recente della più recente (cosa mostra Synaptic). In realtà è equivalente per consentire a Synaptic di eseguire il downgrade del pacchetto di dipendenze.

Un'altra cosa che ha funzionato è usare "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

non è una novità sostanzialmente lo stesso che puoi ritirare dalla risposta più votata qui e una che segue ...
JoKeR

1
sì, ma ci sono miliardi di soluzioni, ho appena menzionato ciò che ha funzionato per me.
Bob Yoplait,

0

Se ricevi un errore del genere:
inserisci qui la descrizione dell'immagine

Questo ti sta dicendo che i pacchetti sono già installati, ma non ha installato tutti gli altri pacchetti necessari per funzionare. Dovresti essere in grado di risolverlo eseguendo questo:

sudo apt-get -f install

(Questo comando dovrebbe installare automaticamente le dipendenze non soddisfatte.)

o qualcosa del genere (con i pacchetti pertinenti) :

sudo apt-get install click curl dpkg-dev python-lzma python-requests imagemagick ubuntu-dev-tools

Ma se finisci con questo tipo di errore: impossibile installare il pacchetto / pacchetto non disponibile / nessun candidato all'installazione ecc

È quindi possibile cercare modi per installarli qui o qui .
Con l'esempio sopra, dovresti essere in grado di trovare una pagina come questa , quindi utilizzare un PPA o installare un .deb per 32 bit o un .deb per 64 bit .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.