apt dice che i pacchetti sono stati mantenuti indietro, cosa fare?


22

L'output di apt-get upgradeè:

The following packages have been kept back:
certbot python-acme python-certbot python-certbot-apache python-cryptography python-openssl

Cosa significa questo? Dovrei agire? E quindi?

Risposte:


36

Soluzione rapida e FACILE:

Ho avuto lo stesso problema, diverse volte. NON farlo per sudo apt-get dist-upgradeprimo. Molto importante. **** NOTA: questa soluzione è per macchine basate su Debian ma non funzionerà su KDE Neon . Per aggiornare KDE Neon, devi usare sudo pkcon update. ****

Perché?

Può rendere il tuo sistema molto instabile, i programmi possono bloccarsi e puoi perdere molte funzionalità nel tuo sistema operativo.

È NECESSARIO installare ogni pacchetto singolarmente, TUTTAVIA , durante tale processo, anche altre dipendenze verranno installate automaticamente e il problema sarà risolto in pochi minuti.

Non ho avuto problemi con la seguente soluzione. È abbastanza veloce e facile.


Innanzitutto, fai questo:

apt list --upgradable

  • Questo mostrerà un elenco di pacchetti che possono essere aggiornati.

Quindi, fai questo:

  • Inizia all'inizio dell'elenco con il primo pacchetto e digita:

sudo apt-get install package-name-here

  • Questo eseguirà il processo di installazione e le dipendenze pull / install.

Al termine del processo, procedere come segue:

apt list --upgradable

  • Questo mostrerà di nuovo quali pacchetti possono essere aggiornati. Il tuo elenco di pacchetti ora dovrebbe essere in calo. Segui l'elenco dei pacchetti e digita apt list --upgradabledopo l'installazione di ciascun pacchetto. Questo dovrebbe richiedere solo un paio di minuti per il completamento.

Infine:

sudo apt-get autoclean

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

Se questa soluzione ha funzionato per te, ti preghiamo di non dimenticare di votarla in modo che la soluzione corretta sia disponibile per gli altri e sia in cima all'elenco delle risposte.

Se per qualche motivo questa soluzione non funziona per te, consulta la risposta dell'utente GAD3R di seguito. È anche una buona soluzione.

Grazie.


1
Per me il pacchetto era ubuntu-minimal. Le tue istruzioni hanno funzionato perfettamente.
Decano il

Non usare questa soluzione se sei su KDE Neon.
Gregory Smitherman,

11

Cosa significa questo?

The following packages have been kept back:

La risposta è qui

Ciò significa che ci sono nuove versioni di questi pacchetti che non verranno installati per qualche motivo. Le possibili ragioni sono dipendenze interrotte (un pacchetto da cui dipende non ha una versione disponibile per il download) o nuove dipendenze (il pacchetto è diventato dipendente da nuovi pacchetti dall'ultima versione).

Dovrei agire?

È necessario utilizzare dist-upgradeper installare le nuove dipendenze e aggiornare i pacchetti:

sudo apt-get dist-upgrade

Il problema può essere risolto eseguendo dist-upgradese non è necessario:

Correggi dipendenze interrotte

sudo apt-get -f install 

Rimuovi alcuni pacchetti che non sono più installati sul tuo sistema:

sudo apt-get autoclean

Metti in attesa il pacchetto desiderato:

echo "<package_name> hold" | dpkg --set-selections

Riconfigurare il pacchetto denominato:

dpkg-reconfigure <package_name>

3

Da questa risposta Unix SE :

In primo luogo, come indicato sopra, NON aggiornare l'aggiornamento di alcun sistema di produzione! Mentre dist-upgrade "risolverà" i pacchetti trattenuti, non è sicuramente la soluzione a questo problema e molto probabilmente ti causerà più dolore che vantaggio se lo esegui senza conoscere le implicazioni sul tuo sistema.

Se l'aggiornamento di un pacchetto richiede l'installazione di pacchetti aggiuntivi, questo verrà "trattenuto" durante l'esecuzione sudo apt-get upgrade.

Come accennato in precedenza, è possibile installare questi pacchetti "trattenuti" manualmente eseguendo esplicitamente, sudo apt-get install [paste kept back packages here]ma ciò contrassegnerà questi pacchetti come "installati manualmente", che spesso non è quello che vogliamo.

Per installare automaticamente eventuali pacchetti aggiuntivi necessari per aggiornare i pacchetti "trattenuti" senza contrassegnare i pacchetti "trattenuti" come installati manualmente appena eseguiti sudo apt-get --with-new-pkgs upgrade.


Maggiori informazioni --with-new-pkgssugli effetti collaterali di altre alternative qui .
Pablo A

2

Ho incluso questa risposta nel mio blog. Se vuoi vedere che puoi andare lì da questo link .

L'errore sopra è molto comune nel terminale Ubuntu quando si tenta di aggiornare ( apt-get upgrade). Questo di solito accade perché le dipendenze di un pacchetto installato sono cambiate. Al fine di aggiornare è necessario aggiornare anche quelli prima. Quindi è molto semplice risolverlo. Sarai in grado di vedere quei pacchetti che sono rimasti sotto questo messaggio di errore. come esempio posso vedere i seguenti pacchetti nell'elenco:

gnome-software gnome-software-common linux-generic linux-headers-generic linux-image-generic snapd ubuntu-core-launcher ubuntu-software

Non limitarti a digitare sudo apt-get dist-upgradeÈ molto pericoloso poiché installa tutti gli aggiornamenti in sospeso. Ciò potrebbe portare il tuo ambiente di lavoro a uno stato altamente instabile.

Pertanto, la mia opinione è di usare famosi

sudo apt-get install [package]

È possibile sostituire [package]con qualsiasi pacchetto sia presente nel messaggio di errore. Inoltre puoi metterli come è come un elenco (basta copiarlo e incollarlo). Come esempio nel mio caso posso entrare

sudo apt-get install gnome-software gnome-software-common linux-generic linux-headers-generic linux-image-generic snapd ubuntu-core-launcher ubuntu-software

Se vuoi farlo

sudo apt-get dist-upgrade

per qualche motivo, assicurati di controllare l'elenco dei pacchetti usando l'opzione simulate -s( sudo apt-get -s dist-upgrade) o senza l' -sopzione puoi terminare l'esecuzione prima di accettare. (puoi sempre scegliere l'opzione no)


2

Recentemente un aggiornamento della sicurezza Debian ha introdotto alcune nuove dipendenze. In questo caso il linux-imagepacchetto ha iniziato a richiedere linux-firmware, tra gli altri. Quindi sono stati trattenuti e non installati da unattended-upgrade. Dopo alcuni test e conferme sono stato in grado di installare selettivamente solo quei pacchetti, senza toccare altri aggiornamenti in sospeso:

apt-get -yy install $(apt-get -s upgrade | sed '1,/kept back/d;/will be upgraded/,$d')


1

Questo articolo riassume perfettamente il motivo per cui ciò accade:

Se le dipendenze sono cambiate su uno dei pacchetti installati in modo che sia necessario installare un nuovo pacchetto per eseguire l'aggiornamento, questo verrà elencato come "trattenuto".

La soluzione a questo è installarli esplicitamente con

sudo apt install [packages]

Probabilmente vuoi contrassegnare questi pacchetti come installati automaticamente, a meno che non ti interessi a loro stessi e non solo per soddisfare le dipendenze.

sudo apt-mark auto [packages]

Per evitare che ciò accada in primo luogo, consiglio di utilizzare

sudo apt --with-new-pkgs upgrade

aggiornare i pacchetti in futuro, il che consente l'installazione di nuovi pacchetti per soddisfare le variazioni delle dipendenze.


Due pollici in su per --with-new-pkgs! E lasciatemi sottolineare ancora una volta che " NON dist-upgrade nessun sistema di produzione! Mentre l'aggiornamento dist" risolverà "i pacchetti trattenuti, non è sicuramente la soluzione a questo problema e molto probabilmente ti causerà più dolore che vantaggio se tu eseguirlo senza conoscere le implicazioni sul tuo sistema. "
XXpt
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.