¿Qué hacer cuando te encuentras esta 💩 en la terminal?
➤ sudo apt-get remove linux-image-generic
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
Tal vez quiera ejecutar «apt-get -f install» para corregirlo:
Los siguientes paquetes tienen dependencias incumplidas:
linux-generic : Depende: linux-image-generic (= 4.4.0.143.151) pero no va a instalarse
linux-modules-extra-4.4.0-143-generic : Depende: linux-image-4.4.0-143-generic pero no va a instalarse o
linux-image-unsigned-4.4.0-143-generic pero no va a instalarse
linux-signed-image-generic : Depende: linux-image-generic pero no va a instalarse
E: Dependencias incumplidas. Intente «apt-get -f install» sin paquetes (o especifique una solución).
Complicadete, pero vamos a ello…
¿Qué está pasando?
En seguida lo vas a saber si ejecutas esto:
➤ sudo df -h | grep /boot /dev/md126p2 473M 473M 0 100% /boot /dev/md126p1 513M 3,4M 509M 1% /boot/efi
¿Observas ese 100% /boot
tan simpático? Te está diciendo que no te caben más kernels
en la partición de arranque.
Ubuntu es una <sarcasm>
maravilla</sarcasm>
que te permite acumular kernels hasta el
infinito. Además, el tamaño de la partición /boot
que te recomienda por defecto es
bastante pequeño. Y además, cuando se te llena, no puedes ejecutar
sudo apt-get autoremove
para borrar kernels antiguos porque, como no puede construir
un árbol de dependencias correcto, da error antes de poder llegar a borrar nada.
La solución
Vamos por pasos:
1. Liberar espacio en /boot
Para ello, primero que nada, necesitas saber qué kernel estás usando:
➤ uname -r
4.4.0-142-generic
Ahora que tienes eso claro, recuerda: no borres ese kernel ni ninguno de una versión superior.
Ahora vamos a ver qué está llenando /boot
:
➤ ls -lh /boot/initrd.img-*
-rw-r--r-- 1 root root 9,3M dic 15 2018 /boot/initrd.img-4.4.0-109-generic
-rw-r--r-- 1 root root 39M dic 15 2018 /boot/initrd.img-4.4.0-130-generic
-rw-r--r-- 1 root root 39M dic 15 2018 /boot/initrd.img-4.4.0-133-generic
-rw-r--r-- 1 root root 39M dic 15 2018 /boot/initrd.img-4.4.0-134-generic
-rw-r--r-- 1 root root 39M dic 15 2018 /boot/initrd.img-4.4.0-137-generic
-rw-r--r-- 1 root root 39M dic 15 2018 /boot/initrd.img-4.4.0-138-generic
-rw-r--r-- 1 root root 39M dic 15 2018 /boot/initrd.img-4.4.0-139-generic
-rw-r--r-- 1 root root 39M ene 12 2019 /boot/initrd.img-4.4.0-141-generic
-rw-r--r-- 1 root root 39M feb 7 2019 /boot/initrd.img-4.4.0-142-generic
En mi caso, puedo borrar todos salvo el último (que es el que estoy usando), pero en realidad con borrar 3 ó 4 seguramente tenga suficiente espacio libre. Vamos a ello. ⚠ Cuidadito, que es una operación destructiva:
➤ rm /boot/initrd.img-4.4.0-109-generic /boot/initrd.img-4.4.0-130-generic /boot/initrd.img-4.4.0-133-generic /boot/initrd.img-4.4.0-134-generic
Vemos que ya hay espacio libre:
➤ sudo df -h | grep /boot /dev/md126p2 473M 349M 100M 78% /boot /dev/md126p1 513M 3,4M 509M 1% /boot/efi
2. Reconstruir el índice de apt
Ahora, para que apt deje de dar la lata, tenemos que seguir la sugerencia que el propio apt nos estaba dando en el primer mensaje:
➤ sudo apt-get -f installe
Esto instalará las nuevas dependencias y reconstruirá el menú de arranque. Si ha
fallado, la solución es borrar algún /boot/initrd.img-*
más, para liberar más espacio.
Si ha funcionado, comprobemos que apt vuelve a ser feliz:
➤ sudo apt-get check
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
3. Borrar los kernels viejos, esta vez usando apt
Efectivamente, ahora apt se piensa que existen unos archivos que no existen porque los hemos borrado a lo cowboy 🤠, así que vamos a decirle a apt que nos borre los kernels viejos de forma oficial 👮:
➤ sudo apt-get autoremove --purge
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
Los siguientes paquetes se ELIMINARÁN:
linux-headers-4.4.0-130* linux-headers-4.4.0-130-generic* linux-headers-4.4.0-133* linux-headers-4.4.0-133-generic* linux-headers-4.4.0-134* linux-headers-4.4.0-134-generic* linux-headers-4.4.0-137* linux-headers-4.4.0-137-generic*
linux-headers-4.4.0-138* linux-headers-4.4.0-138-generic* linux-headers-4.4.0-139* linux-headers-4.4.0-139-generic* linux-headers-4.4.0-141* linux-headers-4.4.0-141-generic* linux-image-4.4.0-130-generic* linux-image-4.4.0-133-generic*
linux-image-4.4.0-134-generic* linux-image-4.4.0-137-generic* linux-image-4.4.0-138-generic* linux-image-4.4.0-139-generic* linux-image-4.4.0-141-generic* linux-image-extra-4.4.0-130-generic* linux-image-extra-4.4.0-133-generic*
linux-image-extra-4.4.0-134-generic* linux-image-extra-4.4.0-137-generic* linux-image-extra-4.4.0-138-generic* linux-image-extra-4.4.0-139-generic* linux-image-extra-4.4.0-141-generic* linux-signed-image-4.4.0-130-generic*
linux-signed-image-4.4.0-133-generic* linux-signed-image-4.4.0-134-generic* linux-signed-image-4.4.0-137-generic* linux-signed-image-4.4.0-138-generic* linux-signed-image-4.4.0-139-generic* linux-signed-image-4.4.0-141-generic*
0 actualizados, 0 nuevos se instalarán, 35 para eliminar y 73 no actualizados.
Se liberarán 2.119 MB después de esta operación.
¿Desea continuar? [S/n]
Si estamos de acuerdo con esa lista (que por lo visto son todos los kernels viejos), pulsamos Enter y apt hará el resto.
Reinicia si quieres, para usar algún nuevo kernel que se te haya instalado.
¡Listo!