Spazio su disco disponibile insufficiente durante l'aggiornamento


142

Ricevo un errore nel programma di aggiornamento software quando provo a fare i miei aggiornamenti quotidiani. dice:

The upgrade needs a total of 25.3 M free space on disk `/boot`.
Please free at least an additional 25.3 M of disk space on `/boot`.
Empty your trash and remove temporary packages of former installations 
using `sudo apt-get clean`.

Ho provato a digitare nel sudo apt-get cleanTerminale ma ricevo ancora il messaggio. Tutte le pagine che leggo sembrano essere per Ubuntuer esperti. Sto eseguendo Ubuntu 12.10. Voglio passare alla 13.04 ma capisco che devo finire prima questi.

Questo è l'output della digitazione nel cat /etc/fstabTerminale:

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
/dev/mapper/ubuntu-root /               ext4    errors=remount-ro 0       1
# /boot was on /dev/sda1 during installation
UUID=fa55c082-112d-4b10-bcf3-e7ffec6cebbc /boot           ext2    defaults        0       2
/dev/mapper/ubuntu-swap_1 none            swap    sw              0       0
/dev/fd0        /media/floppy0  auto    rw,user,noauto,exec,utf8 0       0
matty@matty-G41M-ES2L:~$ 

Uscita di df -h:

Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/ubuntu-root  915G   27G  842G   4% /
udev                     984M  4.0K  984M   1% /dev
tmpfs                    397M  1.1M  396M   1% /run
none                     5.0M     0  5.0M   0% /run/lock
none                     992M  1.8M  990M   1% /run/shm
none                     100M   52K  100M   1% /run/user
/dev/sda1                228M  222M     0 100% /boot
matty@matty-G41M-ES2L:~$ 

E dpkg -l | grep linux-imagedà:

ii linux-image-3.5.0-17-generic 3.5.0-17.28 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP
ii linux-image-3.5.0-18-generic 3.5.0-18.29 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP
ii linux-image-3.5.0-19-generic 3.5.0-19.30 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP
ii linux-image-3.5.0-21-generic 3.5.0-21.32 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP
ii linux-image-3.5.0-22-generic 3.5.0-22.34 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP
ii linux-image-3.5.0-23-generic 3.5.0-23.35 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP
ii linux-image-3.5.0-24-generic 3.5.0-24.37 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP
ii linux-image-3.5.0-25-generic 3.5.0-25.39 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP
ii linux-image-3.5.0-26-generic 3.5.0-26.42 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP
iF linux-image-3.5.0-28-generic 3.5.0-28.48 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP

1
Inoltre, i contenuti di / etc / fstab potrebbero essere utili. Sembra che / boot sia montato su una partizione separata.
Chuck R,

1
Come dice @Githlar, il tuo fstab può darci informazioni sulle tue partizioni hd.
SSoto

1
fstab è un file che contiene informazioni sulle partizioni che vengono montate all'avvio del computer. Per mostrare il contenuto di questo file, digitare cat /etc/fstabun terminale. Copia l'output e aggiungilo alla tua domanda (puoi modificare la tua domanda). Inoltre, copia l'output di df -he dpkg -l | grep linux-image.
Alaa Ali,

1
Il tuo problema sono tutti i linux-image...file extra nella /bootpartizione che occupano spazio: hai solo 6 MB di spazio libero sulla partizione. sudo dpkg -P purge 'older_linux_image_filename'per rimuovere tutte tranne le ultime versioni = 3.5.0-28.48 e 3.5.0-26.42 Ciò dovrebbe consentire l'aggiornamento / l'aggiornamento.
Douggro,

2
Ho dovuto solo correre sudo apt-get autoremoveper risolvere questo problema.
Juampy NR,

Risposte:


192

Nota: questa risposta vuole essere più una "spiegazione" che fornire il modo migliore / più semplice per rimuovere i vecchi kernel. Per il modo migliore / più semplice per rimuovere i vecchi kernel, consulta le altre risposte.

Ok, quindi dall'output di /etc/fstabte pubblicato, sembra che il tuo /bootsia montato su una partizione separata e dall'output di df -hquella partizione è piena. Questo perché ci sono vecchi kernel installati che non sono necessari; puoi dirlo guardando l'output di dpkg -l | grep linux-imagequello che hai pubblicato, dove puoi vedere più di una " immagine linux " con versioni diverse. Dobbiamo rimuovere le vecchie versioni.

Per prima cosa, voglio che tu esegua il comando uname -rin un terminale, questo ti mostrerà la versione del kernel che stai attualmente usando. Non vogliamo mai rimuovere quella versione del kernel. Il comando dirà qualcosa del genere . Prendi nota di quel numero ,! I seguenti comandi presumeranno che sia il kernel che stai eseguendo.3.5.0-26-generic26

Il comando per rimuovere una vecchia versione del kernel è:

sudo apt-get purge linux-image-x.x.x-xx-generic

... dove i caratteri x sono numeri. Quindi, nel tuo caso, poiché hai molte vecchie versioni (17, 18, 19, ecc ...), dovremmo eseguire questo comando per ciascuna versione, in questo modo:

  • sudo apt-get purge linux-image-3.5.0-17-generic
  • sudo apt-get purge linux-image-3.5.0-18-generic
  • sudo apt-get purge linux-image-3.5.0-19-generic

...e così via. Ma c'è un modo per fare tutto questo con un solo comando. Il comando è questo ( NON ESEGUIRE ANCORA IL COMANDO! Leggi quanto segue ):

sudo apt-get purge linux-image-3.5.0-{17,18,19,21,22,23,24}-generic

Questo comando rimuoverà le versioni indicate tra parentesi. Non ho incluso le versioni 25, 26 e 28 per i seguenti motivi:

  • Ovviamente non includi 26 perché questa è la versione del kernel che stai attualmente eseguendo! Questa è la versione che abbiamo ricevuto dal comando uname -r, ricordi? Non vogliamo mai rimuoverlo!
  • Non includi 28 perché è quello a cui il tuo aggiornamento stava tentando di aggiornare (puoi dirlo dallo iFstato successivo, nel senso che è "mezzo configurato").
  • Non incluso 25 perché di solito è buona norma lasciare almeno una vecchia versione. Quindi dato che stai eseguendo 26, ne terremo 25, quindi non lo includeremo nel comando sopra.

Quindi, se l'ultimo numero in uname -rè 26 (o 28, o anche 25), allora è sicuro eseguire il comando sopra. Immettere la password quando richiesto e digitare yquando richiesto. Questo mostrerà un sacco di righe e alla fine tornerà al prompt dei comandi (nel tuo caso matty@matty-G41M-ES2L:~$), si spera senza errori. Al termine, fai df -he guarda l'ultima riga, quella che inizia con /dev/sda1. Dovresti scoprire che ora ha più spazio e che la percentuale utilizzata è inferiore al 100% come prima. Ora puoi procedere nuovamente con l'aggiornamento.


1
Ha funzionato!!! Grazie mille! Domanda bonus: quando ho scaricato Ubuntu per la prima volta, ho accidentalmente cancellato la cartella "foto" nell'area home. Per questo motivo, non ci sono schede "foto" sul lato. Ho evitato questo semplicemente creando una cartella chiamata "immagini" ma non viene visualizzata nella barra laterale. Sai come arrivarci? Ho provato a fare clic e trascinare, ma inutilmente. @Alaa
carmatt95

3
Prego! Per l'altra domanda, crea un'altra domanda e ti risponderò. In questo modo, le persone che stanno cercando quel problema possono trovarlo.
Alaa Ali,

13
Vorrei poter votare questo ogni volta che torno a fare riferimento a questo ... avrebbe ormai molto.
sevenseacat,

4
sì, di nuovo qui per fare riferimento alla stessa cosa. Penseresti che me lo ricorderei ormai.
sevenseacat,

2
Un comando più conciso per eliminare tutti i vecchi kernel è:sudo apt-get autoremove --purge
ctrueden

42

Puoi installare Ubuntu-Tweak.Per installare segui i seguenti passi:

Apri il terminale Aggiungi il repository richiesto con il comando:

sudo add-apt-repository ppa:tualatrix/ppa

Aggiorna l'elenco software con il comando:

sudo apt-get update

Infine, installa Ubuntu Teak con il comando:

sudo apt-get install ubuntu-tweak

Successivamente, apri il trattino e digita "Ubuntu Tweak".

E poi vai a janitorscheda e selezionare Apps, Personale Systemcaselle di controllo e cliccare cleanil pulsante in basso a destra.


9
Molto meglio che scherzare con la riga di comando e provare a eliminare tutti i kernel ma non attuali quando hanno anche versioni diverse (non solo -32 alla fine) e anche pacchetti -extra. La modifica di Ubuntu mi ha fatto risparmiare 5 minuti, grazie!
POMATu,

Molto più conveniente.
Saeed Amiri,

Non ho potuto aggiungere il PPA ma, ho scaricato il .debdal sito Web del progetto ubuntu-tweak.com
Luigi Siri,

non è necessario aggiungere PPA su Ubuntu 14.04
Edward Torvalds il

1
@edwardtorvalds Naturalmente puoi installarlo senza aggiungere il suo PPA su 14.04 e anche 14.10 dal suo .debpacchetto, ma non è il più preferibile. Il motivo per cui si desidera installarlo tramite il suo PPA è perché garantisce aggiornamenti.
αғsнιη,

17

Un modo rapido per rimuovere tutti i kernel e le intestazioni inutilizzati (escluso l'attuale kernel in esecuzione) è stato indicato da @Lekensteyn nella sua risposta alla domanda Come posso liberare più spazio in / boot? :

sudo apt-get purge $(dpkg -l linux-{image,headers}-"[0-9]*" | awk '/ii/{print $2}' | grep -ve "$(uname -r | sed -r 's/-[a-z]+//')") 

Ciò dovrebbe liberare spazio sufficiente per l'aggiornamento.



3

Sul mio sistema Ubuntu di casa seguo un metodo simile a quello pubblicato, ma è un po 'più semplice e libera più spazio dalle intestazioni del kernel, ecc.

  1. Controllo quale kernel in esecuzione sto usando in quanto è imperativo non interferire con quello.

    uname -a
    
  2. Quindi, guardo / boot con l'obiettivo di rimuovere tutti i file relativi al kernel che non sono direttamente correlati al kernel in esecuzione. Questo mi dà un elenco di tutte le versioni del kernel che voglio rimuovere, ad esempio: 3.5.0-17, 3.5.0-18

    ls -l /boot
    
  3. Ora prendo la prima versione del kernel nella mia lista di eliminazione e trovo tutti i pacchetti ad essa correlati.

    dpkg -l | grep 3.5.0-17
    
  4. Eliminarli dal sistema

    sudo apt-get purge <list of packages separated by spaces>
    
  5. tornare a 3 e selezionare la prossima versione del kernel nel mio elenco di eliminazione.

  6. Fatto


1

Stavo ricevendo questo errore, questo articolo ha aiutato.

Ho usato df -hper identificare che l'avvio era pieno, uname -rper la versione, quindi ho usato la purgestringa sopra elencata per rimuovere i vecchi kernel. purge single kernel ha funzionato, multi no (per me).

Ho trovato i file nella cosa di Windows; Non ho potuto cancellarli, ho dovuto usare il terminale, ma mi ha mostrato le vecchie versioni che avevo lì dentro.

Non ho idea del perché / boot (sda2) sia partizionato e perché sia ​​così piccolo. ma ora posso usare di nuovo Ubuntu Updater.

Ho avuto un certo successo minore con sudo apt-get update, sudo apt-get upgrade, sudo apt-get clean, anche provato BleachBit software libero. Utilizzare la stringa di eliminazione ma non sulla versione corrente. Spero che questo aiuti qualcuno.


modifica: non credo che tu debba aggiungere "-generic" alla stringa di spurgo
Brian P

0

Hai installato dei vecchi pacchetti di immagini del kernel che non vengono utilizzati? Quelli possono occupare spazio su / boot. Consiglio di rivedere il set di pacchetti kernel installati con un comando come il seguente:

dpkg -l "linux-image*" | grep "^i"

Ciò dovrebbe fornire una panoramica del set di pacchetti di immagini del kernel installati. Per quei pacchetti di immagini linux che non vengono utilizzati e che non ci si aspetterebbe necessari per scopi di recupero - ad esempio, ad esempio, mi piace mantenere almeno una versione del kernel dietro la versione attiva installata, per il recupero - altrimenti, è possibile rimuovere tali pacchetti non utilizzati, utilizzando il proprio strumento di imballaggio preferito, come aptitude.

Consiglio anche di dare un'occhiata ai relativi inux-headers , linux-image-extra (se applicabile), anche i pacchetti linux-source e linux-tools , che possono essere installati insieme a qualsiasi pacchetto linux-image inutilizzato .


0

Dubito che molte persone si imbatteranno in questo problema, ma lo sto mettendo qui per la documentazione nel caso qualcuno ne avesse bisogno.

Il mio problema è che stavo compilando diversi kernel personalizzati fino a quando non ho esaurito lo spazio. Il modo in cui ho dovuto ripulire lo spazio era quello di entrare in ogni directory del kernel in cui avevo lavorato ed eseguire un sudo make clean.

  • $ cd /usr/src Directory in cui si trova l'origine del kernel
  • $ cd linux-image-custom_kernel_name
  • $ sudo make clean

0

La risposta di Marianoju mi ha davvero aiutato, tranne per il fatto che ho ricevuto un errore durante l'utilizzo apt purge. Non sono riuscito a trovare un'opzione di forza.

Combinando il livello inferiore dpkg mi ha permesso di procedere:

sudo dpkg -r $(dpkg -l linux-{image,headers}-"[0-9]*" | awk '/ii/{print $2}' \
               | grep -ve "$(uname -r | sed -r 's/-[a-z]+//')")

0

Puoi provare con il comando seguente per rimuovere i vecchi pacchetti di immagini del kernel se hai queste cose.

sudo apt autoremove

Dopodiché puoi eseguire l'aggiornamento

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.