apt-get: no queda espacio en el dispositivo (12.04)

42

He leído todos los hilos que pude encontrar, incluso los que dicen que la pregunta ha sido respondida en otro lugar, pero ninguno de ellos aborda el problema específico que estoy teniendo. Update Manager ejecutó y produjo errores relacionados con la dependencia no satisfecha y sugirió usar apt-get install -f que falla con este mensaje:

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

Sospecho que las últimas 5 palabras No queda espacio en el dispositivo son significativas, pero df y du muestran espacio suficiente. Entonces me pregunto, ¿qué dispositivo necesita más espacio?

Salida de 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 
Don A
fuente
¿Tiene espacio en la partición raíz?
don.joey
1
Pegue (i) la salida de df -hy (ii) la salida de mount. dpkg limpiará los archivos una vez que haya terminado de funcionar, por lo que puede parecer que tiene suficiente espacio cuando de hecho no lo tiene. Considere correr apt-get cleanantes de comenzar dpkg.
Enero
1
para monitorear hacer watch -n 1 df -hen una terminal mientras se hace apt-get install(se ralentizará un poco tu E / S pero sabrás qué sistema de archivos es demasiado pequeño)
Emmanuel
Problema que ocurre también con Ubuntu 14.04 y la versión del kernel 3.13.0.108 en una computadora de cada tres. Comencé con askubuntu.com/questions/223143/… pero las respuestas que se muestran aquí están en la misma línea.
XavierStuvw

Respuestas:

48

Acabo de encontrar este mismo problema. En otro lugar me encontré con una mención de inodes, y corrí en mi terminal para verificar el uso de inodes:

  df -i 

Esto mostró un uso de inodo al 99%. Entonces, aunque mi disco tenía mucho espacio restante, no pude crear más archivos debido al límite en el número de inodos. Un poco de limpieza de disco fue la solución a mi problema.

Kevin
fuente
66
Tuve el mismo problema causado por las actualizaciones del núcleo que no eliminan los núcleos antiguos automáticamente. ¡Los encabezados de Linux de cada actualización del kernel ocupan un número considerable de inodos! --- Mi solución "segura" era pasar dos directorios cabeceras del núcleo de un sistema de archivos diferente: 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, eliminar algunas otras cabeceras de la manera correcta: apt-get purge linux-headers-..., mover los encabezados de la parte posterior tmp: cd /usr/src ; cp -a /home/tmp-hdr/* .. Elimine más de los núcleos antiguos usando apt-get purge.
pabouk
1
Considere participar en los informes de errores con baja actividad: el error n. ° 1089195 de Linux-headers comerá sus inodos en LTS. , Error # 690911 La instalación sin formato no puede eliminar los núcleos antiguos
pabouk
@pabouk Me pregunto, ¿podría haberlo usado dpkg --purge linux-headers-3.2.0-3{2,3}*; apt-get -f installpara que no se necesitara copiar?
jarno
@jarno Pasó mucho tiempo, pero creo que todos los comandos que utilizan la base de datos dpkg o apt estaban fallando. Creo que se debió a dependencias rotas y otras inconsistencias causadas por un número insuficiente de inodos durante una actualización automática.
pabouk
La limpieza de disco requerida podría realizarse sudo linux-purge --fixuna vez que se publique el script .
jarno
37

Estoy pensando que su partición de arranque está llena de imágenes antiguas del kernel, sin dejar espacio para la nueva que apt-getestá tratando de instalar. Puedes escribir

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

en una ventana de terminal. Cuando hago esto, me sale

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

Como tengo bastantes, podría eliminar algunas de las más antiguas con

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

Si apt-getfalla porque pierde algunas dependencias del paquete (que no puede instalar debido a la falta de inodes libres), puede recurrir dpkgdirectamente a:

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

Hazlo un par de veces a tu hijo mayor linux-headers-*y deberías tener espacio.

Bagazo
fuente
44
Esto saca a la luz el otro problema. Cada vez que intento ejecutar dpkg me dice que tiene una dependencia insatisfecha. Los siguientes paquetes tienen dependencias insatisfechas: linux-headers-3.5.0-36-generic: depende: linux-headers-3.5.0-36 pero no lo es va a ser instalado y eso es lo que no se instalará porque no hay suficiente espacio
Don A
¿Quizás sea necesario hacer una copia de seguridad de sus archivos de usuario antes de meterse con su partición de arranque? Nunca he tenido problemas para hacer esto, pero si lo hiciera, tendría todo lo que necesito para una reinstalación. Por supuesto, hago una copia de seguridad todos los días de todos modos.
Marc
Esperaba no tener que meterme con la partición de arranque y que había una manera de salir del ciclo interminable de dependencia. Ahora veo que probablemente será más fácil hacer una copia de seguridad de los datos y comenzar de nuevo. Ahora que sé la importancia de limpiar artículos antiguos, lo convertiré en un hábito. Gracias a todos por su ayuda.
Don A
De ningún modo . . . hacer copias de seguridad siempre es una buena idea, y realmente no estás jugando mucho con la partición de arranque, solo desinstalas algunos paquetes con apt-get. Debería ser pan comido. Solo sugerí hacer una copia de seguridad de sus datos porque siempre sugiero hacer una copia de seguridad de los datos si tiene un problema (¡o incluso si no lo tiene!) De hecho, ejecuté esos comandos en mi propio sistema para probarlos. Me llevó tres minutos quitarlo linux-headers-3.8.0-18.
Marc
1
Si falla nuevamente sudo dpkg --remove linux-headers-3.8.0-18, elimine sudo dpkg --remove linux-headers-3.8.0-18-genericy tomará el otro encabezado con él.
Theson
17

Usé sudo apt-get autoremovey eliminó un montón de viejos paquetes de encabezados de kernel. Es bueno ir después de eso.

Frank Sfalanga Jr.
fuente
En mi caso, apt-get se negó a hacer autoremove, dando prioridad al hecho de que había un paquete roto para resolver. Qué paquete roto había sido causado por la saturación del inodo. Ver también este hilo de AskUbuntu
XavierStuvw
¡Bueno, esto me salvó! Después de una actualización, mi sesión x nunca ingresó, solo pedí iniciar sesión nuevamente y a menudo recibí el mensaje de no queda espacio. Pensé que tenía que formatear mi
disco duro
1
Lol, no puedo ejecutar esto porque tengo demasiados archivos ...
Brian dice Reinstate Monica
2

Hasta donde yo sé, el límite de los inodes en los sistemas de archivos ext * de Linux es de alrededor de 4 mil millones, pero no menos, que es una gran cantidad de archivos. Entonces, su problema es que algo está generando muchos archivos. Puedo proponerle que primero verifique esto: http://blog.scoutapp.com/articles/2014/10/08/understanding-disk-inodes Para que encuentre lo que está llenando los inodos de su FS. También puedo proponer limpiar el caché de apt:

sudo apt-get clean

y

sudo apt-get autoclean
Stefan
fuente