apt-get: nessuno spazio lasciato sul dispositivo (12.04)


42

Ho letto tutti i thread che sono riuscito a trovare, anche quelli che affermano che la domanda ha avuto risposta altrove, ma nessuno di essi affronta il problema specifico che sto riscontrando. Update Manager ha eseguito e prodotto errori relativi alla dipendenza non soddisfatta e ha suggerito di utilizzare apt-get install -f che non riesce con questo messaggio:

Unpacking linux-headers-3.5.0-36 (from .../linux-headers-3.5.0-36_3.5.0-36.57~precise1_all.deb) ...
dpkg: error processing /var/cache/apt/archives/linux-headers-3.5.0-36_3.5.0-36.57~precise1_all.deb (--unpack):
 unable to create `/usr/src/linux-headers-3.5.0-36/arch/arm/mach-iop32x/include/mach/glantank.h.dpkg-new' (while processing `./usr/src/linux-headers-3.5.0-36/arch/arm/mach-iop32x/include/mach/glantank.h'): No space left on device

Ho il sospetto che le ultime 5 parole Nessuno spazio lasciato sul dispositivo sia significativo ma df e du mostrano entrambi uno spazio adeguato. Quindi mi chiedo, quale dispositivo ha bisogno di più spazio?

Uscita da df -h

Filesystem 
Size Used Avail Use% 
Mounted on /dev/sda1 5.5G 4.4G 786M 86% 
/ udev 996M 4.0K 996M 1% 
/dev tmpfs 402M 880K 401M 1% 
/run none 5.0M 0 5.0M 0% /run/lock none 1004M 156K 1004M 1% 
/run/shm /dev/sdb1 30G 1.4G 27G 5% 
/home /dev/sdc1 299G 31G 268G 11% /media/HD-PCTU2 

Hai spazio sulla partizione di root?
don.joey,

1
Incollare (i) l'output di df -he (ii) l'output di mount. dpkg ripulirà i file dopo che ha finito di funzionare, quindi potrebbe sembrare che tu abbia abbastanza spazio quando in realtà non lo fai. Prendi in considerazione di correre apt-get cleanprima di iniziare dpkg.
Gennaio

1
monitorare do watch -n 1 df -hin un terminale mentre si esegue apt-get install(rallenterà un po 'i / o ma si saprà quale file system è troppo piccolo)
Emmanuel

Problema che si verifica anche con Ubuntu 14.04 e la versione del kernel 3.13.0.108 in un computer su tre. Ho iniziato con askubuntu.com/questions/223143/… ma le risposte mostrate qui sono sulla stessa riga.
XavierStuvw,

Risposte:


48

Ho appena riscontrato questo stesso problema. Altrove ho trovato una menzione di inode e ho eseguito nel mio terminale per verificare l'utilizzo degli inode:

  df -i 

Ciò ha mostrato un uso dell'inode al 99%. Quindi, mentre sul mio disco era rimasto molto spazio, non ero in grado di creare più file a causa del limite nel numero di inode. Un po 'di pulizia del disco era la soluzione al mio problema.


6
Ho avuto lo stesso problema causato dagli aggiornamenti del kernel che non rimuovono automaticamente i vecchi kernel. Le intestazioni Linux di ogni aggiornamento del kernel occupano un numero considerevole di inode! --- La mia soluzione "sicura" è stato quello di spostare due directory header del kernel per un filesystem differente: cd /usr/src ; cp -a linux-headers-3.2.0-3{2,3}* /home/tmp-hdr ; rm -r linux-headers-3.2.0-3{2,3}*, apt-get-install -f, rimuovere alcune altre intestazioni nel modo giusto: apt-get purge linux-headers-..., spostare le intestazioni dal retro tmp: cd /usr/src ; cp -a /home/tmp-hdr/* .. Rimuovi più vecchi kernel usando apt-get purge.
pabouk,

1
Prendi in considerazione la possibilità di partecipare alle segnalazioni di bug a bassa attività: Bug # 1089195 Le intestazioni di Linux mangeranno i tuoi inode su LTS. , Bug # 690911 L' installazione senza formattazione non riesce a rimuovere i vecchi kernel
pabouk,

@pabouk Mi chiedo se avresti potuto usarlo in dpkg --purge linux-headers-3.2.0-3{2,3}*; apt-get -f installmodo che non fosse necessaria alcuna copia?
jarno,

@jarno È passato molto tempo, ma penso che tutti i comandi che usano il database dpkg o apt stiano fallendo. Penso che sia stato a causa di dipendenze rotte e altre incoerenze causate da un numero insufficiente di inode durante un aggiornamento automatico.
pabouk,

La pulizia del disco richiesta potrebbe essere eseguita sudo linux-purge --fixuna volta pubblicato lo script .
jarno,

37

Sto pensando che la tua partizione di avvio sia piena di vecchie immagini del kernel, senza lasciare spazio a quella nuova che apt-getsta cercando di installare. Puoi digitare

dpkg -l linux-headers-\* linux-image-\* | grep ^ii

in una finestra terminale. Quando lo faccio, ottengo

ii  linux-headers-3.8.0-18                    3.8.0-18.28                            all          Header files related to Linux kernel version 3.8.0
ii  linux-headers-3.8.0-18-generic            3.8.0-18.28                            amd64        Linux kernel headers for version 3.8.0 on 64 bit x86 SMP
ii  linux-headers-3.8.0-19                    3.8.0-19.30                            all          Header files related to Linux kernel version 3.8.0
ii  linux-headers-3.8.0-19-generic            3.8.0-19.30                            amd64        Linux kernel headers for version 3.8.0 on 64 bit x86 SMP
ii  linux-headers-3.8.0-21                    3.8.0-21.32                            all          Header files related to Linux kernel version 3.8.0
ii  linux-headers-3.8.0-21-generic            3.8.0-21.32                            amd64        Linux kernel headers for version 3.8.0 on 64 bit x86 SMP
ii  linux-headers-3.8.0-22                    3.8.0-22.33                            all          Header files related to Linux kernel version 3.8.0
ii  linux-headers-3.8.0-22-generic            3.8.0-22.33                            amd64        Linux kernel headers for version 3.8.0 on 64 bit x86 SMP
ii  linux-headers-3.8.0-23                    3.8.0-23.34                            all          Header files related to Linux kernel version 3.8.0
ii  linux-headers-3.8.0-23-generic            3.8.0-23.34                            amd64        Linux kernel headers for version 3.8.0 on 64 bit x86 SMP
ii  linux-headers-3.8.0-25                    3.8.0-25.37                            all          Header files related to Linux kernel version 3.8.0
ii  linux-headers-3.8.0-25-generic            3.8.0-25.37                            amd64        Linux kernel headers for version 3.8.0 on 64 bit x86 SMP
ii  linux-headers-generic                     3.8.0.25.43                            amd64        Generic Linux kernel headers

Dato che ne ho un bel po ', potrei eliminare alcuni dei più vecchi con

sudo apt-get remove linux-headers-3.8.0-18

Se apt-getfallisce perché manca alcune dipendenze del pacchetto (che non è possibile installare a causa della mancanza di inode gratuiti), è possibile invece ricorrere dpkgdirettamente a:

sudo dpkg --remove linux-headers-3.8.0-18

Fallo un paio di volte al più vecchio linux-headers-*e dovresti avere spazio.


4
Questo porta alla luce l'altro problema. Ogni volta che tento di eseguire dpkg mi dice che ha una dipendenza non soddisfatta I seguenti pacchetti hanno dipendenze non soddisfatte: linux-headers-3.5.0-36-generic: Dipende: linux-headers-3.5.0-36 ma non lo è verrà installato e questa è la cosa che non verrà installata perché non c'è abbastanza spazio
Don A

Forse un backup dei tuoi file utente è in ordine, prima di pasticciare con la tua partizione di avvio? Non ho mai avuto problemi a farlo, ma se lo avessi, avrei tutto ciò di cui avevo bisogno per una reinstallazione. Certo, faccio comunque un backup ogni giorno.
Marc

Speravo di non dover fare confusione con la partizione di avvio e che ci fosse un modo per uscire dal ciclo infinito di dipendenza. Vedo ora che probabilmente sarà più facile eseguire il backup dei dati e ricominciare. Ora che conosco l'importanza di ripulire gli oggetti più vecchi, ne prenderò l'abitudine. Grazie a tutti per la loro assistenza.
Don A

Affatto . . . il backup è sempre una buona idea e non stai davvero scherzando molto con la partizione di avvio, semplicemente disinstallando alcuni pacchetti con apt-get. Dovrebbe essere un gioco da ragazzi. Ho appena suggerito di eseguire il backup dei tuoi dati perché suggerisco sempre di eseguire il backup dei dati se riscontri un problema (o anche se non lo sei!) Ho effettivamente eseguito quei comandi sul mio sistema per testarli. Mi ci sono voluti tre minuti per rimuovere linux-headers-3.8.0-18.
Marc

1
Se fallisce di nuovo per sudo dpkg --remove linux-headers-3.8.0-18, rimuovi sudo dpkg --remove linux-headers-3.8.0-18-generice porterà con sé l'altra intestazione.
Giovedì

17

Ho usato sudo apt-get autoremovee rimosso un sacco di vecchi pacchetti kernel-headers. Buono a seguirlo.


Nel mio caso apt-get ha rifiutato di fare autoremove dando la precedenza al fatto che c'era un pacchetto rotto da risolvere. Quale pacchetto rotto era stato causato dalla saturazione dell'inode. Vedi anche questo thread
AskUbuntu

Bene, questo mi ha appena salvato! Dopo un aggiornamento la mia sessione x non è mai entrata, chiedendo semplicemente di accedere di nuovo e spesso non ho ricevuto il messaggio senza spazio. Pensavo di dover formattare il mio hd, ma il tuo trucco mi ha appena salvato :)
user5193682

1
Lol Non posso eseguirlo perché ho troppi file ...
Brian dice Reinstate Monica il

2

Per quanto ne so, il limite degli inode nei file system ext * di Linux è di circa 4 miliardi, ma non di meno, che è un'enorme quantità di file. Quindi il tuo problema è che qualcosa sta generando molti file. Posso proporti di verificare prima questo: http://blog.scoutapp.com/articles/2014/10/08/understanding-disk-inodes Quindi troverai ciò che sta riempiendo gli inode del tuo FS. Posso proporre anche di pulire la cache apt:

sudo apt-get clean

e

sudo apt-get autoclean
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.