Erreur de disque complète: apt-get incapable d'installer ou de supprimer

20

J'ai rencontré l'erreur suivante lors de la mise à niveau de mon serveur Ubuntu 12.04. Maintenant, apt-get est incapable d'installer ou de supprimer un paquet.

Unpacking linux-headers-3.13.0-62 (from .../linux-headers-3.13.0-62_3.13.0-62.102~precise1_all.deb) ...
dpkg: error processing /var/cache/apt/archives/linux-headers-3.13.0-62_3.13.0-62.102~precise1_all.deb (--unpack):
 unable to create '/usr/src/linux-headers-3.13.0-62/arch/arm/include/asm/ptrace.h.dpkg-new' 
(while processing './usr/src/linux-headers-3.13.0-62/arch/arm/include/asm/ptrace.h'): No space left on device
No apport report written because the error message indicates a disk full error
 dpkg-deb: error: subprocess paste was killed by signal (Broken pipe)
Errors were encountered while processing:
 /var/cache/apt/archives/linux-headers-3.13.0-62_3.13.0-62.102~precise1_all.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

Bien que je ne sois pas vraiment à court d’espace disque,

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

De toute façon mes inodes sont pleins,

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

J'ai plus de dix noyaux anciens, mais je ne peux pas les supprimer car mon apt-get lui-même est boiteux. Je ne suis donc pas en mesure de suivre cet article qui rapporte un problème similaire.

La seule option semble supprimer manuellement quelques noyaux plus anciens. Cela causera-t-il un problème?

Y a-t-il une meilleure issue? Puis-je utiliser un espace réservé pour root et supprimer les anciens noyaux?

    
posée souravc 02.09.2015 - 22:18
la source

2 réponses

26

Je sais que cet article est un peu vieux, mais j'ai trouvé une réponse ici pour quiconque pourrait tomber sur ce post: lien

Si ce lien est rompu, voici l'extrait pertinent:

Suppression en toute sécurité d'anciens noyaux

Pour les utilisateurs de systèmes LVM, de systèmes cryptés ou de systèmes à stockage limité, le problème le plus fréquent est que la partition / boot est simplement remplie. Le gestionnaire de paquets ne peut pas installer une mise à niveau en attente en raison d'un manque d'espace. En outre, apt-get ne peut pas supprimer un paquet en raison d'une dépendance rompue.

Ce problème peut être résolu rapidement et facilement à partir du shell. Identifiez simplement un ou deux noyaux à supprimer manuellement, ce qui donnera au gestionnaire de paquets suffisamment d’espace pour installer la mise à niveau en attente.


$ 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.

J'ai suivi ceci avec:

sudo apt-get autoremove --purge
    
réponse donnée Junkle 18.04.2017 - 04:22
la source
7

J'ai maintenant trouvé le moyen de sortir de la situation et de retirer quelques noyaux plus âgés de /usr/src pour se débarrasser de la situation. Heureusement, tout s'est bien passé et a commencé à fonctionner à nouveau.

Il est fortement recommandé de faire une reprise avant de supprimer les anciens noyaux sur une machine de production.

    
réponse donnée souravc 26.12.2016 - 08:16
la source

Lire d'autres questions sur les étiquettes