Errore completo del falso disco: apt-get non può essere installato o rimosso


24

Ho riscontrato il seguente errore durante l'aggiornamento del mio server Ubuntu 12.04. Ora apt-getnon è possibile installare o rimuovere alcun pacchetto.

Disimballare linux-headers-3.13.0-62 (da ... / linux-headers-3.13.0-62_3.13.0-62.102 ~ precise1_all.deb) ...
dpkg: errore nell'elaborazione di /var/cache/apt/archives/linux-headers-3.13.0-62_3.13.0-62.102~precise1_all.deb (--unpack):
 impossibile creare `/usr/src/linux-headers-3.13.0-62/arch/arm/include/asm/ptrace.h.dpkg-new ' 
(durante l'elaborazione di `./usr/src/linux-headers-3.13.0-62/arch/arm/include/asm/ptrace.h '): Nessuno spazio lasciato sul dispositivo 
Nessun rapporto apportato scritto perché il messaggio di errore indica un disco errore completo
 dpkg-deb: errore: la pasta del sottoprocesso è stata interrotta dal segnale (tubo rotto)
Si sono verificati errori durante l'elaborazione:
 /var/cache/apt/archives/linux-headers-3.13.0-62_3.13.0-62.102~precise1_all.deb
E: Il processo secondario / usr / bin / dpkg ha restituito un codice di errore (1)

Anche se non sono davvero a corto di spazio su disco,

# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       6.8G  4.7G  1.8G  69% /  

Comunque i miei inode sono pieni,

# df -i
Filesystem     Inodes   IUsed  IFree IUse% Mounted on
/dev/sda1      458752  455214   3538  100% /

Ho più di dieci kernel vecchi ma non riesco a rimuoverli perché il mio apt-getstesso è zoppo. Quindi non riesco a seguire questo post che riporta un problema simile.

L'unica opzione sembra eliminare manualmente alcuni kernel più vecchi. Causerà qualche problema?

Esiste una via d'uscita migliore? Posso usare lo spazio riservato per root per il momento e rimuovere i kernel più vecchi?


1
In effetti ho rimosso manualmente un paio di kernel più vecchi /usr/srcper liberarmi della situazione. Fortunatamente tutto è andato bene e aptha ripreso a funzionare. Ma ti chiederò di riprenderti prima di fare una cosa del genere su una macchina di produzione. L'ho fatto su una macchina virtuale con backup completo.
Souravc,

Funziona! Ho fatto lo stesso qui (ubutu 14.04.1) per aggiornare al kernel 4.4.0-51-generico. Non sono sicuro che possa causare problemi in futuro. Grazie.
Moreno,

Risposte:


36

So che questo post è un po 'vecchio, ma ho trovato una risposta qui per chiunque possa imbattersi in questo post: https://help.ubuntu.com/community/RemoveOldKernels

Nel caso in cui il collegamento venga interrotto, ecco lo snippet pertinente:

Rimozione sicura dei vecchi kernel

Per gli utenti di sistemi LVM, sistemi crittografati o sistemi di archiviazione limitata, il problema più frequente è che la partizione / boot è semplicemente piena. Il gestore pacchetti non può installare un aggiornamento in sospeso a causa della mancanza di spazio. Inoltre, apt-get non può rimuovere un pacchetto a causa della dipendenza interrotta.

Questo problema può essere risolto rapidamente e facilmente dalla shell. È sufficiente identificare uno o due kernel vecchi da rimuovere manualmente, il che fornirà al gestore pacchetti spazio sufficiente per installare l'aggiornamento in coda.


$ sudo rm -rv ${TMPDIR:-/var/tmp}/mkinitramfs-*  
                                  ## In Ubuntu 16.04 and earlier there may be leftover temporary
                                  ## files to delete.
                                  ## See: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=814345

$ uname -r                        ## This command identifies the currently-running kernel
4.2.0-21-generic                  ## This is the current kernel.
                                  ## DO NOT REMOVE it!

$ dpkg -l | tail -n +6 | grep -E 'linux-image-[0-9]+' | grep -Fv $(uname -r)
                                  ## This command lists all the kernels excluding the booted
                                  ## kernel in the package database, and their status.
rc  linux-image-4.2.0-14-generic  ## The oldest kernel in the database
                                  ## Status 'rc' means it's already been removed
ii  linux-image-4.2.0-15-generic  ## The oldest installed kernel. Eligible for removal.
                                  ## Status 'ii' means Installed.
ii  linux-image-4.2.0-16-generic  ## Another old installed kernel. Eligible for removal
ii  linux-image-4.2.0-18-generic  ## Another old installed kernel. Eligible for removal
ii  linux-image-4.2.0-19-generic  ## The previous good kernel. Keep
iU  linux-image-4.2.0-22-generic  ## DO NOT REMOVE. Status 'iU' means it's not installed,
                                  ## but queued for install in apt.
                                  ## This is the package we want apt to install.

                                  ## Purge the oldest kernel package using dpkg instead of apt.
                                  ## First you need to remove the image initrd.img file manually
                                  ## due to Bug #1678187.
$ sudo update-initramfs -d -k 4.2.0-15-generic
$ sudo dpkg --purge linux-image-4.2.0-15-generic linux-image-extra-4.2.0-15-generic
                                  ## If the previous command fails, some installed package
                                  ## depends on the kernel. The output of dpkg tells the name
                                  ## of the package. Purge it first.

                                  ## Also purge the respective header package.
$ sudo dpkg --purge linux-headers-4.2.0-15-generic
                                  ## Try also purging the common header package.
$ sudo dpkg --purge linux-headers-4.2.0-15
                                  ## Do not worry, if the previous command fails.

$ sudo apt-get -f install         ## Try to fix the broken dependency.

Ho seguito questo con:

sudo apt-get autoremove --purge

9

Ho trovato ora una via d'uscita dalla situazione e ho rimosso un paio di kernel più vecchi /usr/src per liberarmi della situazione. Fortunatamente tutto è andato bene e apt ha ricominciato a funzionare.

Si consiglia vivamente di eseguire il backup prima di rimuovere i kernel più vecchi su una macchina di produzione.


Qualsiasi soluzione migliore è ancora benvenuta. Pubblico questo commento come risposta in quanto può aiutare qualcuno.
Souravc,

1
Dopo aver rimosso alcuni vecchi kernel e eseguito apt-get autoremove e installato alcune dipendenze apt-get -f installrisolto i miei problemi
Thamaraiselvam,

GRAZIE. Ho rimosso tutto il Linux- * sotto /bootma non l'ho usato dkpgquindi c'erano ancora i *-headerfile in/usr/src
Dylan Pierce
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.