Si tienes un disco duro de poca capacidad y usas Arch Linux, podría ser buena idea limpiar la caché de paquetes (pkg) del sistema

febrero 25, 2022 , 0 Comments

Limpiar caché de paquetes de Pacman

Hace año y medio escribí un artículo sobre algo que me gustó de Manjaro, por extensión también disponible en otros sistemas basados en Arch Linux. Estoy hablando de la posibilidad de hacer el downgrade (bajar de versión) de un paquete a una versión anterior. En parte esto es posible por la caché de paquetes de Arch, en la que se guardan, por defecto, las tres últimas versiones de cada paquete. Claro, esto suena bien, pero no tanto si tu disco duro no tiene mucho almacenamiento.

Hasta que los discos SSD sean tan baratos como los de toda la vida, si es que ese momento llega algún día, los discos duros pueden ser de una de estas tres opciones: grandes y caros; pequeños y baratos; o un híbrido, donde hay parte SSD y parte HDD. En la segunda y tercera opción podemos tener el mismo problema, ya que la HDD, la que ofrece más almacenamiento, la solemos dejar para datos y usamos la SSD para el sistema operativo. Es en estos casos en los que tenemos que vigilar la caché de paquetes de Arch Linux. Y, si fuera necesario, limpiarla.

Limpiar la caché de paquetes de Arch, eliminarla o dejarla como está

Esta caché guardará las tres últimas versiones de cada paquete en /var/cache/pacman/pkg. Hay que vigilarla, porque aún con el límite de tres, puede pasar que la carpeta crezca y crezca hasta rozar o superar los 10GB de almacenamiento, dependiendo de la cantidad de software que tengamos instalado. Y, recordad, hablamos de caché, es decir, algo que está ahí por si acaso, pero que puede no ser necesario.

Pacman tiene una opción para eliminar las versiones viejas de la caché. sudo pacman -Sc eliminará sólo las viejas versiones y dejará la última que tengamos instalada, es decir, el pkg de la que tenemos instalada. Aunque es una opción de Pacman, se dice que no es algo recomendado, pero el argumento sería que no podríamos hacer el downgrade como se supone que deberíamos hacerlo. En este caso tendríamos que acudir a los repositorios oficiales y elegir una versión anterior.

El que gestiona esto de las últimas tres versiones es Paccache, y podemos recuperar espacio con estos comandos:

Lo primero sería mirar cuántos paquetes tenemos instalados y ver lo que ocupan, en mi caso un total de 1981 paquetes con un peso total de 13GB:

sudo ls /var/cache/pacman/pkg/ | wc -l
du -sh /var/cache/pacman/pkg/

Ver número de paquetes y su peso

Si queremos eliminar todos los paquetes, menos los últimos tres, algo que suele ser automático pero podría no estar funcionando, escribiremos:

sudo paccache -r

Si os dais cuenta, a mí me ha recuperado poco (1.52GB), y no me preocupa no poder volver a una versión anterior, por lo que luego he usado el sudo pacman -Sc:

sudo pacman -Sc

Con esto último, de 13GB que tenía en la caché de paquetes de Arch, Manjaro en mi caso, me que quedado con sólo 4GB. Nos hará dos preguntas: en la primera nos consulta si queremos eliminar los paquetes, y ahí hay que decirle que sí; en la segunda nos dice de quitar repositorios, y ahí es mejor decirle que no.

IMPORTANTE: todo lo explicado aquí funciona tal cual, pero que nadie borre la carpeta /pkg o de lo contrario el sistema no tendrá donde meter las nuevas instalaciones. Eso «me lo contó un amigo» hace años.

¿Aún quieres eliminar más?

Muy mal tiene que estar un disco duro o hay que tener muchas manías para que haga falta realizar una limpieza más profunda, pero se puede. El comando sería sudo paccache -rk 1, donde la k indica el número de paquetes a mantener. Si se quieren eliminar todos los paquetes ya desinstalados, se puede hacer con el comando sudo paccache -ruk0. De lo anterior, la u indica paquetes desinstalados.

Si se quiere eliminar toda la cache, y dejarla en 0GB, el comando sería sudo pacman -Scc, pero esto lo recomendaría sólo en casos extremos donde ya no tengamos espacio en el disco duro. Todo lo eliminado con los comandos expuestos aquí no se puede recuperar.

Automatizar el proceso

Todo esto de limpiar la cache de paquetes de Arch Linux se puede hacer automáticamente, pero creando un archivo y añadiéndole algunas líneas. Los pasos a seguir para automatizar esta tarea de limpieza serían:

  1. Abrimos un terminal y escribimos:
sudo mkdir /etc/pacman.d/hooks
  1. Ahora escribimos este otro comando:
sudo nano /etc/pacman.d/hooks/clean_package_cache.hook
  1. Dentro del editor, añadimos estas líneas:
[Trigger]
Operation = Upgrade
Operation = Install
Operation = Remove
Type = Package
Target = *
[Action]
Description = Cleaning pacman cache...
When = PostTransaction
Exec = /usr/bin/paccache -r
  1. Salvamos y guardamos. A partir de ahora, la caché de paquetes se limpiará automáticamente cada vez que Pacman trabaje actualizando, instalando o eliminando paquetes.

Y así se puede conseguir un poco de espacio extra. Está claro que si el disco duro es lo suficientemente grande, lo mejor es dejar las cosas como tal y como han sido diseñadas, pero estas opciones existen y nos pueden sacar de un apuro.


Some say he’s half man half fish, others say he’s more of a seventy/thirty split. Either way he’s a fishy bastard.