No hay suficiente espacio libre en el disco al actualizar

142

Recibo un error en el actualizador de software cuando intento realizar mis actualizaciones diarias. dice:

The upgrade needs a total of 25.3 M free space on disk `/boot`.
Please free at least an additional 25.3 M of disk space on `/boot`.
Empty your trash and remove temporary packages of former installations 
using `sudo apt-get clean`.

Traté de escribir en sudo apt-get cleanla Terminal pero aún recibo el mensaje. Todas las páginas que leo parecen ser para Ubuntuers experimentados. Estoy ejecutando Ubuntu 12.10. Quiero actualizar a 13.04 pero entiendo que tengo que terminarlos primero.

Este es el resultado de escribir en cat /etc/fstabla Terminal:

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
/dev/mapper/ubuntu-root /               ext4    errors=remount-ro 0       1
# /boot was on /dev/sda1 during installation
UUID=fa55c082-112d-4b10-bcf3-e7ffec6cebbc /boot           ext2    defaults        0       2
/dev/mapper/ubuntu-swap_1 none            swap    sw              0       0
/dev/fd0        /media/floppy0  auto    rw,user,noauto,exec,utf8 0       0
matty@matty-G41M-ES2L:~$ 

Salida de df -h:

Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/ubuntu-root  915G   27G  842G   4% /
udev                     984M  4.0K  984M   1% /dev
tmpfs                    397M  1.1M  396M   1% /run
none                     5.0M     0  5.0M   0% /run/lock
none                     992M  1.8M  990M   1% /run/shm
none                     100M   52K  100M   1% /run/user
/dev/sda1                228M  222M     0 100% /boot
matty@matty-G41M-ES2L:~$ 

Y dpkg -l | grep linux-imageda:

ii linux-image-3.5.0-17-generic 3.5.0-17.28 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP
ii linux-image-3.5.0-18-generic 3.5.0-18.29 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP
ii linux-image-3.5.0-19-generic 3.5.0-19.30 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP
ii linux-image-3.5.0-21-generic 3.5.0-21.32 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP
ii linux-image-3.5.0-22-generic 3.5.0-22.34 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP
ii linux-image-3.5.0-23-generic 3.5.0-23.35 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP
ii linux-image-3.5.0-24-generic 3.5.0-24.37 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP
ii linux-image-3.5.0-25-generic 3.5.0-25.39 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP
ii linux-image-3.5.0-26-generic 3.5.0-26.42 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP
iF linux-image-3.5.0-28-generic 3.5.0-28.48 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP
carmatt95
fuente
1
Además, el contenido de su / etc / fstab puede ser útil. Lo que parece es que / boot está montado en una partición separada.
Chuck R
1
Como dice @Githlar, su fstab puede darnos información sobre sus particiones hd.
ssoto
1
fstab es un archivo que contiene información sobre las particiones que se montan cuando inicia su computadora. Para mostrar el contenido de este archivo, escriba cat /etc/fstabun terminal. Copie el resultado y agréguelo a su pregunta (puede editar su pregunta). Además, copie la salida de df -hy dpkg -l | grep linux-image.
Alaa Ali
1
Su problema es que todos los linux-image...archivos adicionales en la /bootpartición usan espacio, solo tiene 6 MB libres en la partición. sudo dpkg -P purge 'older_linux_image_filename'eliminar todas las versiones menos las últimas = 3.5.0-28.48 y 3.5.0-26.42 Esto debería permitirle actualizar / actualizar.
douggro
2
Solo tuve que correr sudo apt-get autoremovepara arreglar esto.
Juampy NR

Respuestas:

192

Nota: esta respuesta pretende ser más una "explicación" que proporcionar la mejor / más fácil forma de eliminar los núcleos antiguos. Para conocer la forma mejor / más fácil de eliminar núcleos antiguos, revise las otras respuestas.

Bien, entonces, a partir de la salida /etc/fstabque publicaste, parece que tu /bootestá montado en una partición separada, y desde la salida de df -hesa partición está llena. Esto se debe a que hay núcleos antiguos instalados que no son necesarios; puedes dpkg -l | grep linux-imageverlo mirando el resultado que publicaste, donde puedes ver más de una " imagen de linux " con diferentes versiones. Necesitamos eliminar las versiones anteriores.

Primero, quiero que ejecute el comando uname -ren una terminal, esto le mostrará la versión del kernel que está utilizando actualmente. Nunca queremos eliminar esa versión del kernel. El comando dirá algo como esto . ¡Tome nota de ese número ! Los siguientes comandos supondrán que ese es el núcleo que está ejecutando.3.5.0-26-generic26

El comando para eliminar una versión antigua del núcleo es:

sudo apt-get purge linux-image-x.x.x-xx-generic

... donde los caracteres x son números. Entonces, en su caso, debido a que tiene muchas versiones antiguas (17, 18, 19, etc.), tendríamos que ejecutar este comando para cada una de las versiones, así:

  • sudo apt-get purge linux-image-3.5.0-17-generic
  • sudo apt-get purge linux-image-3.5.0-18-generic
  • sudo apt-get purge linux-image-3.5.0-19-generic

...y así. Pero, hay una manera de hacer todo esto a través de un comando. El comando es este ( ¡NO EJECUTE EL COMANDO AÚN! Lea lo siguiente ):

sudo apt-get purge linux-image-3.5.0-{17,18,19,21,22,23,24}-generic

Este comando eliminará las versiones mencionadas entre paréntesis. No incluí las versiones 25, 26 y 28 por las siguientes razones:

  • ¡Obviamente no incluí 26 porque esa es la versión del núcleo que está ejecutando actualmente! Esa es la versión que obtuvimos del comando uname -r, ¿recuerdas? ¡Nunca queremos eliminar eso!
  • No incluyó 28 porque esa es la que su actualización estaba tratando de actualizar (puede iFverlo en el estado siguiente, lo que significa que está "medio configurado").
  • No incluyó 25 porque generalmente es una buena práctica dejar al menos una versión anterior. Entonces, como está ejecutando 26, conservaremos 25, por lo que no lo incluiremos en el comando anterior.

Entonces, si el último número uname -res 26 (o 28, o incluso 25), entonces es seguro ejecutar el comando anterior. Ingrese su contraseña cuando se le solicite y escriba ycuando se le solicite . Esto mostrará un montón de líneas y eventualmente volverá al símbolo del sistema (en su caso matty@matty-G41M-ES2L:~$), con suerte sin errores. Cuando haya terminado, haz df -hy mira la última línea, la que comienza /dev/sda1. Debería descubrir que ahora tiene más espacio y que el porcentaje utilizado es inferior al 100% como era antes. Ahora puede continuar con su actualización nuevamente.

Alaa Ali
fuente
1
¡¡¡Funcionó!!! ¡Muchas gracias! Pregunta extra: cuando descargué Ubuntu por primera vez, eliminé accidentalmente la carpeta "imágenes" en el área de inicio. Debido a esto, no hay una pestaña de "imágenes" en el lateral. He solucionado esto creando una carpeta llamada "imágenes" pero no aparece en la barra lateral. ¿Sabes cómo llegar allí? Intenté hacer clic y arrastrar, pero fue en vano. @Alaa
carmatt95
3
¡De nada! Para la otra pregunta, cree otra pregunta y la responderé. De esta manera, las personas que están buscando ese problema pueden encontrarlo.
Alaa Ali
13
Desearía poder votar esto cada vez que vuelva a consultarlo ... ya tendría mucho.
sevenseacat
44
Sí, de nuevo aquí para hacer referencia a la misma cosa. Pensarías que ya lo recordaría.
sevenseacat
2
Un comando más conciso para purgar todos los núcleos antiguos es:sudo apt-get autoremove --purge
ctrueden
42

Puede instalar Ubuntu-Tweak. Para instalar siga los siguientes pasos:

Abre la terminal. Agregue el repositorio requerido con el comando:

sudo add-apt-repository ppa:tualatrix/ppa

Actualice la lista de software con el comando:

sudo apt-get update

Finalmente, instale Ubuntu Teak con el comando:

sudo apt-get install ubuntu-tweak

Después de eso, abre el guión y escribe "ubuntu tweak".

Y luego vaya a la janitorpestaña y seleccione Apps, Personaly Systemmarque las casillas y haga cleanclic en el botón en la parte inferior derecha.

αғsнιη
fuente
99
Mucho mejor que jugar con la línea de comando e intentar eliminar todos los núcleos, pero no los actuales cuando tienen incluso versiones diferentes (no solo -32 al final) y también paquetes extra. El ajuste de Ubuntu me ahorró 5 minutos, ¡gracias!
POMATu
Mucho más conveniente.
Saeed Amiri
No pude agregar el PPA pero lo descargué .debdel sitio web del proyecto ubuntu-tweak.com
Luigi Siri
no es necesario agregar PPA en ubuntu 14.04
Edward Torvalds
1
@edwardtorvalds Por supuesto, puede instalarlo sin agregar su PPA en 14.04 y también 14.10 por su .debpaquete, pero no es lo más preferible. La razón por la que desea instalar eso a través de su PPA es porque garantiza actualizaciones.
αғsнιη
17

@Lekensteyn ha señalado una forma rápida de eliminar todos los núcleos y encabezados no utilizados (excluyendo el núcleo actual en ejecución) en su respuesta a la pregunta ¿Cómo libero más espacio en / arranque? :

sudo apt-get purge $(dpkg -l linux-{image,headers}-"[0-9]*" | awk '/ii/{print $2}' | grep -ve "$(uname -r | sed -r 's/-[a-z]+//')") 

Esto debería liberar suficiente espacio para que pueda actualizar.

marianoju
fuente
3

En mi sistema Ubuntu doméstico, sigo un método similar al publicado, pero es un poco más simple y borra más espacio en los encabezados del kernel, etc.

  1. Compruebo qué kernel en ejecución estoy usando, ya que es imperativo no interferir con eso.

    uname -a
    
  2. Luego, miro / boot con el objetivo de eliminar todos los archivos relacionados con el kernel que no están relacionados directamente con el kernel en ejecución. Esto me da una lista de todas las versiones del kernel que quiero eliminar, por ejemplo: 3.5.0-17, 3.5.0-18

    ls -l /boot
    
  3. Ahora tomo la primera versión del kernel en mi lista de purga y encuentro todos los paquetes relacionados con ella.

    dpkg -l | grep 3.5.0-17
    
  4. Purgarlos del sistema

    sudo apt-get purge <list of packages separated by spaces>
    
  5. regrese a 3 y seleccione la próxima versión del kernel en mi lista de purga.

  6. Hecho

Kiat
fuente
1

Estaba recibiendo este error, este artículo me ayudó.

Solía df -hidentificar que el arranque estaba lleno, uname -rpara la versión, luego usé la purgecadena mencionada anteriormente para eliminar los núcleos antiguos. la purga de un solo núcleo funcionó, no lo hizo el múltiple (para mí).

Encontré los archivos en lo de Windows; No pude eliminarlos, tuve que usar el terminal, pero me mostró las versiones anteriores que tenía allí.

No tengo idea de por qué / boot (sda2) está particionado y por qué es tan pequeño. pero ahora puedo usar Ubuntu Updater nuevamente.

Yo tenía un poco de éxito menor con sudo apt-get update, sudo apt-get upgrade, sudo apt-get clean, también trató bleachbit software libre. Use la cadena de purga pero no en su versión actual. Espero que esto ayude a alguien.

Brian P
fuente
editar: no creo que tenga que agregar "-generic" a la cadena de purga
Brian P
0

¿Tiene instalados paquetes de imágenes de kernel antiguos que no se están utilizando? Esos pueden ocupar espacio en / boot. Recomiendo revisar el conjunto de paquetes de kernel instalados con un comando como el siguiente:

dpkg -l "linux-image*" | grep "^i"

Eso debería proporcionar una descripción general del conjunto de paquetes de imágenes del kernel instalados. Para aquellos paquetes de linux-image que no se están utilizando y que no se espera que sean necesarios para fines de recuperación, por ejemplo, me gusta mantener al menos una versión del núcleo detrás de la versión activa instalada, para la recuperación; de lo contrario, puede eliminar cualquier paquete no utilizado, utilizando su herramienta de empaque favorita, como aptitude.

También recomendaría echar un vistazo a los encabezados inux-headers , linux-image-extras (si corresponde), linux-source y linux-tools , que pueden instalarse junto con los paquetes de linux-image no utilizados .

Sean Champ
fuente
0

Dudo que muchas personas, si es que hay alguna, se encuentren con este problema, pero lo estoy poniendo aquí para documentación en caso de que alguien lo necesite.

Mi problema es que estaba compilando diferentes núcleos personalizados hasta que me quedé sin espacio. La forma en que tuve que limpiar el espacio fue ingresar a cada directorio del kernel en el que había estado trabajando y ejecutar a sudo make clean.

  • $ cd /usr/src Directorio donde está la fuente del núcleo
  • $ cd linux-image-custom_kernel_name
  • $ sudo make clean
Jacksonkr
fuente
0

La respuesta de marianoju realmente ayudó, excepto que recibí un error al usar apt purge. No pude encontrar una opción de fuerza.

La combinación del dpkg de nivel inferior me permitió continuar:

sudo dpkg -r $(dpkg -l linux-{image,headers}-"[0-9]*" | awk '/ii/{print $2}' \
               | grep -ve "$(uname -r | sed -r 's/-[a-z]+//')")
PascalVKooten
fuente
0

Puede intentar con el siguiente comando para eliminar los paquetes de imágenes de kernel antiguos si tiene esas cosas.

sudo apt autoremove

Después de eso puedes hacer una actualización

Dinusha Dilanka
fuente