Mi partición / inicio llega al 100% y ahora no puedo actualizar. No se pueden eliminar los granos viejos para hacer espacio

137

Mi primer problema fue cuando intenté apt-get update o apt-get upgrade . En la actualización me sale el siguiente error:

You might want to run 'apt-get -f install' to correct these.
The following packages have unmet dependencies:
linux-image-server : Depends: linux-image-3.2.0-27-generic but it is not installed
E: Unmet dependencies. Try using -f.

Intenté ejecutar apt-get install -f y este fue el resultado (después de decir sí en el prompt)

(Reading database ... 186183 files and directories currently installed.)
Unpacking linux-image-3.2.0-27-generic (from .../linux-image-3.2.0-27-generic_3.2.0-27.43_amd64.deb) ...
Done.
dpkg: error processing /var/cache/apt/archives/linux-image-3.2.0-27-generic_3.2.0-27.43_amd64.deb (--unpack):
 failed in write on buffer copy for backend dpkg-deb during './boot/System.map-3.2.0-27-generic': 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)
Examining /etc/kernel/postrm.d .
run-parts: executing /etc/kernel/postrm.d/initramfs-tools 3.2.0-27-generic   /boot/vmlinuz-3.2.0-27-generic
run-parts: executing /etc/kernel/postrm.d/zz-update-grub 3.2.0-27-generic /boot/vmlinuz-3.2.0-27-generic
Errors were encountered while processing:
/var/cache/apt/archives/linux-image-3.2.0-27-generic_3.2.0-27.43_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

Intenté ejecutar apt-get autoremove y me da el mismo error que apt-get upgrade .

Cuando ejecuto df , obtengo esto para /boot :

/dev/sda1                    233191     230297         0 100% /boot

Entonces, leí en otra parte que debería tratar de purgar granos viejos. Comprobé los núcleos que tenía:

$ dpkg -l linux-image-\* | grep ^ii
ii  linux-image-2.6.38-13-server  2.6.38-13.52  Linux kernel image for version 2.6.38 on x86_64
ii  linux-image-3.0.0-13-server   3.0.0-13.22   Linux kernel image for version 3.0.0  on x86_64
ii  linux-image-3.0.0-14-server   3.0.0-14.23   Linux kernel image for version 3.0.0  on x86_64
ii  linux-image-3.0.0-15-server   3.0.0-15.26   Linux kernel image for version 3.0.0  on x86_64
ii  linux-image-3.0.0-16-server   3.0.0-16.29   Linux kernel image for version 3.0.0  on x86_64
ii  linux-image-3.0.0-17-server   3.0.0-17.30   Linux kernel image for version 3.0.0  on x86_64
ii  linux-image-3.2.0-24-generic  3.2.0-24.39   Linux kernel image for version 3.2.0  on 64 bit x86 SMP
ii  linux-image-3.2.0-25-generic  3.2.0-25.40   Linux kernel image for version 3.2.0  on 64 bit x86 SMP
ii  linux-image-3.2.0-26-generic  3.2.0-26.41   Linux kernel image for version 3.2.0  on 64 bit x86 SMP

Cuando intento eliminar el más antiguo con esto:

$ sudo apt-get purge linux-image-2.6.38-13-server
Reading package lists... Done
Building dependency tree
Reading state information... Done
You might want to run 'apt-get -f install' to correct these:
The following packages have unmet dependencies:
linux-image-server : Depends: linux-image-3.2.0-27-generic but it is not going to be     installed
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).

¿Cómo puedo liberar o extender el inicio sin estropear mi instalación?

    
pregunta Strifey16 02.08.2012 - 17:17

11 respuestas

115

Liberando espacio en el sistema de archivos raíz

Para liberar espacio en el sistema de archivos raíz, puede intentar ejecutar apt-get clean .

Si eso no funciona, puede ir a /var/cache/apt/archives y eliminar manualmente algunos archivos del caché para recuperar espacio, por ejemplo:

sudo rm linux-headers-*

No hará daño eliminar todos los archivos .deb aquí si es necesario, eso es lo que hace apt-get clean . Se volverán a descargar automáticamente por apt si se necesitan nuevamente.

Liberando espacio en el / Sistema de archivos de arranque

El Póster original tiene una partición /boot separada, y eso es lo que está lleno e impide que el sistema apt funcione. Será necesario que libere espacio allí.

Si hay suficiente espacio, vaya a /boot y elimine uno o dos archivos de configuración:

sudo rm config-3.2.0-19-generic-pae

por ejemplo, pero usando el nombre de una de las versiones del núcleo que intenta eliminar de todos modos. Esto liberará un poco de espacio (aproximadamente 144 K cada uno).

Si necesita más espacio, elimine los viejos archivos vmlinuz , initrd , abi y System.map hasta que tenga suficiente espacio (aproximadamente 22M para una de las versiones de mi i386 kernel).

Hagas lo que hagas, no los elimines a todos . Al menos debe mantener las últimas dos versiones coincidentes de cada tipo de archivo, para cada tipo de kernel que utilice.

Luego, continúe con los comandos de instalación de apt-get. Como se mencionó anteriormente, es posible que tengan que volver a descargar algunas de las debas que eliminaste, pero si es así, eso sucederá automáticamente. Cuando tenga que volver a trabajar, limpie usando apt-get para eliminar los paquetes correspondientes a los archivos que eliminó, para que todo coincida.

El archivo de configuración en /boot es la configuración del kernel que se utilizó por el equipo kernel para compilar el kernel del mismo nombre. Sería inofensivo eliminarlo a menos que lo desee como referencia o para ayudarlo a construir sus propios núcleos.

Finalmente, está eliminando manualmente un paquete kernel antiguo o dos de la partición /boot para hacer aún más espacio para el nuevo.

    
respondido por el John S Gruber 02.08.2012 - 17:54
60

En mi caso, los comandos apt y dpkg no pudieron finalizar y no pudieron eliminarse. La actualización automática no se pudo instalar 2.6.32-56-server .

Mi primer paso fue identificar el espacio que se usará,

cd /boot
du -sk *|sort -n

Tenía alrededor de 30 kernels y archivos de apoyo.

Hice un uname -a para obtener el kernel en ejecución, Identifiqué que estaba en Linux alternar 2.6.32-43-server e hice un tar de 6 de las versiones que no estaban en ejecución y que eran antiguas.

tar -cvf ~username/boot.tar *2.6.32-44-server *2.6.32-45-server *2.6.32-46-server *2.6.32-47-server *2.6.32-48-server *2.6.32-49-server

Hice un rm -rf de lo que había hecho una copia de seguridad:

rm -rf *2.6.32-44-server *2.6.32-45-server *2.6.32-46-server *2.6.32-47-server *2.6.32-48-server *2.6.32-49-server

Estoy mostrando estos comandos como ejemplos, tendrá que decidir con qué trabajará para su situación.

Ahora que tenía espacio en /boot , pude ejecutar

apt-get -f install 

Para limpiar la instalación fallida de 2.6.32-56-server .

Luego hice una

apt-get remove linux-headers-2.6.32-38 linux-headers-2.6.32-38-server linux-image-2.6.32-38-server
apt-get remove linux-headers-2.6.32-39 linux-headers-2.6.32-39-server linux-image-2.6.32-39-server

Esto me dio espacio para devolver lo que había respaldado.

tar -xf ~username/boot.tar
rm  ~username/boot.tar    

Para limpiar, podría ejecutar:

apt-get autoremove

Reinicié y ahora estoy usando 4% de /boot .

    
respondido por el A.G. Russell 20.02.2014 - 17:48
19

Puedes usar dpkg en lugar de apt-get para eliminar kernels más viejos:

sudo dpkg -r linux-image-3.2.0-29-generic
    
respondido por el psusi 08.04.2014 - 16:38
9

Noté que todavía había algunos archivos de las versiones anteriores en el directorio de inicio:

$ ls /boot
vmcoreinfo-2.6.31-17-server

Y el administrador del paquete enumeraría las versiones anteriores:

dpkg -l | grep linux-image

Por lo tanto, utilicé este comando ( autoremove también eliminaría imágenes más recientes que no quiero eliminar)

sudo apt-get purge linux-image-2.6.31-17-server

Aún me quedaban algunos encabezados:

dpkg -l | grep linux-headers

Así que hice esto:

sudo apt-get purge linux-headers-2.6.32-34

Finalmente me quedó un paquete que no pude eliminar con apt-get purge:

$ dpkg -l | grep linux-image
rc  linux-image-2.6.28-11-server

Fuente: Eliminar un paquete marcado como rc por dpkg

sudo dpkg --purge linux-image-2.6.28-11-server
    
respondido por el mreiter 24.10.2012 - 15:56
2

Esto es lo que utilicé:

sudo apt-get autoremove linux-image-xxxx

Hazlo para todos los kernels viejos y solo conserva los dos más recientes.

Si quiere eliminar automáticamente los kernels viejos y actualizar GRUB mira esto: Documentación de Ubuntu

    
respondido por el Samer 22.11.2015 - 18:33
2

No puede actuar sobre los paquetes, pero puede puede actuar sobre otros archivos. Primero, revise su carpeta de inicio y vea si hay cualquier cosa que pueda eliminar. Si no, intente mover una buena cantidad de archivos a otra partición (o unidad flash) y luego pruebe sudo apt-get install -f para solucionar los problemas de dependencia del paquete (lo más probable es que haya instalado un archivo .deb a través de dpkg ), y luego purgar cualquier grano viejo Una vez que tenga al menos 10 MB de seguridad, intente depurar software o archivos innecesarios.

    
respondido por el hexafraction 02.08.2012 - 17:20
1

Utiliza el administrador de paquetes Synaptic. Simplemente elija el paquete que desea eliminar y le pedirá que también elimine los paquetes que dependen de él. En mi experiencia, los paquetes kernel siempre vienen en grupos de dos (o más, dependiendo de cómo cuentes) que son interdependientes. Generalmente puede encontrar los viejos rápidamente usando el filtro "local / obsoleto".

    
respondido por el Wegko 03.08.2012 - 04:39
1

Simplemente ejecutando sudo apt-get -f autoremove resolvió mi problema.

    
respondido por el forzagreen 26.04.2018 - 10:26
1

Compruebe el uso de /var/tmp con du -sh /var/tmp/ . Todos los archivos en esa carpeta se pueden eliminar para hacer espacio.

A continuación, puede ejecutar lo siguiente para eliminar los núcleos antiguos:

sudo apt-get clean
sudo apt install byobu
sudo purge-old-kernels
sudo apt autoremove
sudo update-grub
    
respondido por el Tertius 06.11.2017 - 10:29
1

Ejecuta esto:

sudo apt-get autoremove
sudo apt-get --purge remove && sudo apt-get autoclean
sudo apt-get -f install
sudo dpkg-reconfigure -a

Fuente: Recibo este error después de upgade. ayuda

    
respondido por el Ardi Nusawan 15.02.2017 - 19:41
0

Descubrí que lo único que funcionaba para mí era usar Aptitude.

sudo aptitude

Luego, cuando se abre, generalmente dice algo sobre las dependencias no satisfechas en la parte inferior. Puede presionar la letra g para continuar con la eliminación sugerida. Te llevará a una página donde se enumera lo que va a suceder.

Debería haber un menos - junto a los núcleos rotos. Presione g nuevamente y eliminará los núcleos rotos. Presione q para salir. Entonces deberías poder usar sudo apt-get autoremove para deshacerte de los kernels viejos y liberar espacio.

    
respondido por el Matthew Swanson 04.04.2017 - 01:29

Lea otras preguntas en las etiquetas