Falso error de disco completo: apt-get no se puede instalar o eliminar

24

Encontré el siguiente error al actualizar mi servidor Ubuntu 12.04. Ahora apt-getno puede instalar ni eliminar ningún paquete.

Desempaquetado linux-headers-3.13.0-62 (de ... / linux-headers-3.13.0-62_3.13.0-62.102 ~ precise1_all.deb) ...
dpkg: error al procesar /var/cache/apt/archives/linux-headers-3.13.0-62_3.13.0-62.102~precise1_all.deb (--unpack):
 no se puede crear `/usr/src/linux-headers-3.13.0-62/arch/arm/include/asm/ptrace.h.dpkg-new ' 
(mientras se procesa `./usr/src/linux-headers-3.13.0-62/arch/arm/include/asm/ptrace.h '): No queda espacio en el dispositivo 
No se ha escrito ningún informe de informe porque el mensaje de error indica un disco error completo
 dpkg-deb: error: la señal mató la pasta del subproceso (tubería rota)
Se encontraron errores al procesar:
 /var/cache/apt/archives/linux-headers-3.13.0-62_3.13.0-62.102~precise1_all.deb
E: Subproceso / usr / bin / dpkg devolvió un código de error (1)

Aunque no estoy realmente sin espacio en disco,

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

De todos modos mis inodos están llenos

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

Tengo más de diez núcleos antiguos, pero no puedo eliminarlos, ya que mi apt-getpropio cojo. Por lo tanto, no puedo seguir esta publicación que informa un problema similar.

La única opción parece eliminar algunos núcleos antiguos manualmente. ¿Causará algún problema?

¿Hay alguna mejor salida? ¿Puedo usar espacio reservado para root por el momento y eliminar núcleos más antiguos?

souravc
fuente
1
De hecho, eliminé manualmente un par de núcleos más antiguos /usr/srcpara deshacerme de la situación. Afortunadamente todo salió bien y aptcomenzó a funcionar nuevamente. Pero le pediré que vuelva a realizar una copia de seguridad antes de hacer tal cosa en una máquina de producción. Lo hice en una máquina virtual que tenía copia de seguridad completa.
souravc
¡Funciona! Hice lo mismo aquí (ubutu 14.04.1) para actualizar al kernel 4.4.0-51-generic. No estoy seguro de si causará algún problema en el futuro. Gracias.
Moreno

Respuestas:

36

Sé que esta publicación es un poco antigua, pero encontré una respuesta aquí para cualquiera que pueda tropezar con esta publicación: https://help.ubuntu.com/community/RemoveOldKernels

En caso de que ese enlace se rompa, aquí está el fragmento relevante:

Eliminar de forma segura los granos viejos

Para los usuarios de sistemas LVM, sistemas encriptados o sistemas de almacenamiento limitado, el problema más frecuente es que la partición / boot está simplemente llena. El administrador de paquetes no puede instalar una actualización pendiente debido a la falta de espacio. Además, apt-get no puede eliminar un paquete debido a una dependencia rota.

Este problema se puede solucionar rápida y fácilmente desde el shell. Simplemente identifique uno o dos núcleos antiguos para eliminarlos manualmente, lo que proporcionará al administrador de paquetes suficiente espacio para instalar la actualización en cola.


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

Seguí esto con:

sudo apt-get autoremove --purge
Junkle
fuente
9

Ahora encontré una salida de la situación y eliminé un par de núcleos más antiguos /usr/srcpara deshacerme de la situación. Afortunadamente todo salió bien y apt comenzó a funcionar nuevamente.

Se recomienda realizar una copia de seguridad antes de eliminar los núcleos más antiguos en una máquina de producción.

souravc
fuente
Cualquier solución mejor es bienvenida. Publico este comentario como respuesta, ya que puede ayudar a alguien.
souravc
1
Después de quitar algunos núcleos viejos y ejecutar apt-get autoremove e instalar algunas dependencias, apt-get -f installsolucioné mis problemas
Thamaraiselvam
GRACIAS. Eliminé todos los linux- *, /bootpero no los usé, dkpgasí que todavía quedaban los *-headerarchivos/usr/src
Dylan Pierce