Contents

Reducir el tamaño de Raspbian eliminando paquetes no usados

En esta entrada eliminaremos de una tacada todos los paquetes que nos plazca con tal de reducir el tamaño de Raspbian, ganando así espacio en la tarjeta SD (cosa muy útil si no disponemos de mucho) y haciendo que nuestra Raspberry Pi actualice paquetes más rápido gracias a que deberá actualizar menor cantidad de ellos.

/wp-content/uploads/2013/04/Raspi-e1370273700225.jpg
Raspberry Pi logo

Raspbian es un sistema que trata de ser amigable con la mayor cantidad de usuarios posibles, por lo cual incorpora una serie de herramientas que es muy probable que no utilicemos, en mi caso lo primero que se me pasa por la cabeza es el entorno gráfico, que no tengo ninguna intención de utilizar. En la entrada desinstalaremos paquetes relacionados con el entorno gráfico, pero se puede utilizar el mismo sistema para eliminar distintas familias de paquetes que no queramos mantener en el sistema.

IMPORTANTE: Recomiendo antes de realizar este proceso crear una copia de seguridad de nuestra tarjeta SD, especialmente si no estamos seguros de las selecciones que estamos haciendo.

Crear archivo con la lista de paquetes a eliminar

Una buena forma de ver la lista de archivos instalados en el sistema es utilizar el comando “dpkg” con su opción “-l”, que nos ofrecerá dichos paquetes junto con su descripción, lo que nos ayudará a identificar para qué son utilizados.

En el momento en el que listamos todos los paquetes podemos optar por varias soluciones. La más ineficiente sería leer cada uno de los paquetes listados, apuntar su nombre en el caso de que queramos eliminarlos y cuando tengamos la lista completa removerlos todos con el gestor de paquetes. Esto está estupendo y es totalmente lícito, pero yo si ejecuto:

1
$ dpkg -l | wc -l

Me da casi 700 líneas (sin tener instalada demasiada cosa), y como decía un antiguo profesor: si no tienes novia, amigos, perro ni aficiones, adelante! Cierto que es un poco exagerado, pero no le veo nada enriquecedor a esto, así que guiado por mi vagancia crónica vamos a hacer que el cacharro trabaje por nosotros:

1
$ dpkg -l | grep -i -e LXDE -e X11 -e "xserver" -e desktop -e gtk -e alsa | awk '{print $2}' > paquetes.txt
  • dpkg -l: Lista todos los paquetes instalados en el sistema.
  • grep -i -e: Filtra los paquetes (grep) ignorando si son mayúsculas o minúsculas (-i) en base a un patrón (-e).
  • awk ‘{print $2}’: Mostramos sólo la segunda columna.
  • > paquetes.txt: Redirigimos la salida al archivo de texto paquetes.txt.

Hay que indicar que los patrones indicados con el comando -e tienen una razón de ser, no son aleatorios:

  • LXDE: El entorno de escritorio instalado en Raspbian por defecto.
  • X11: El encargado de mostrar los gráficos del sistema.
  • xserver: Implementación del sistema X11.
  • desktop: Paquetes relacionados con el escritorio.
  • gtk: Conjunto de bibliotecas gráficas.
  • alsa: Gestor del sonido del sistema.

Cierto que con la propuesta anterior tenemos mayor control sobre lo que estamos desinstalando, pero con esto podemos estar seguros de que estamos removiendo del sistema casi todo lo relacionado con el entorno gráfico.

Eliminar paquetes masivamente de Raspbian

Llegados a este punto tenemos nuestro archivo “paquetes.txt” con una lista de archivos a eliminar a archivo por línea. Solo necesitamos pasarle al gestor de paquetes nuestra lista para que lo haga todo por nosotros:

1
$ sudo apt-get remove $(cat paquetes.txt)

IMPORTANTE: Si antes queremos hacer una simulación de lo que pasaría al ejecutar el comando (recomendado) podemos utilizar la opción -s.

Después de eliminar los paquetes deseados podemos eliminar los que han quedado huérfanos del sistema con la siguiente orden:

1
$ sudo apt-get autoremove

Recomendaciones y resultado de reducir el tamaño de Raspbian

Podemos experimentar con los argumentos que le pasamos a grep y jugar con distintas familias de paquetes pero con mucho cuidado, con estos filtros podemos estar eliminando dependencias de programas importantes y acabar eliminandolos con apt-get. Es por eso que recomiendo que antes de eliminar paquetes echemos un buen ojo a los que se van a eliminar para no evitarnos futuros llantos (en mi caso estuve a punto de eliminar bind del sistema).

1
2
Filesystem Size Used Avail Use% Mounted on
rootfs 15G 2.1G 12G 15% /
1
2
Filesystem Size Used Avail Use% Mounted on
rootfs 15G 1.4G 13G 10% /

Después de hacer esto en mi caso he conseguido cerca de 600 MB de espacio adicional, que si bien no me hacía falta en este momento ya que la SD de mi Raspberry Pi es de 16 GB me ha servido para experimentar con un par de cosas. Donde veo realmente útil la limpieza es a la hora de reducir los tiempos de actualización de Raspbian que son bastante infernales.

EDIT: Como apunta fpalacios en los comentarios además de lo anteriormente apuntado en la entrada reduciremos riesgos de seguridad innecesarios al reducir el número de paquetes con potenciales vulnerabilidades. No solo eso, con la reducción de paquetes conseguiremos también una buena reducción de procesos en ejecución con el consiguiente ahorro de memoria.