Pacman, el administrador de paquetes de Archlinux, almacena todos los paquetes descargados en /var/cache/pacman/pkg/ sin eliminar las versiones anteriores o desinstaladas. Esto nos permitirá degradar un paquete sin la necesidad de recuperar la versión anterior, pero tiene el inconveniente de que la carpeta aumenta de tamaño constantemente.
Limpieza manual
Si queremos eliminar los paquetes almacenados en caché que no estén instalados actualmente, ejecutaremos el siguiente comando:
sudo pacman -Sc
En cambio, si queremos eliminar todos los paquetes de la caché, incluidos los que estén instalados:
sudo pacman -Scc
Para listar todos los paquetes instalados:
ls /var/cache/pacman/pkg/ | less
Limpieza automática
Para limpiar la caché automáticamente, necesitaremos instalar pacman-contrib para poder utilizar el script paccache:
sudo pacman -S pacman-contrib
Una vez instalado, podremos ver todas las posibles opciones con el comando:
paccache -h
paccache v1.4.0 A flexible pacman cache cleaning utility. Usage: paccache[options] [targets...] Operations: -d, --dryrun perform a dry run, only finding candidate packages. -m, --move move candidate packages to "dir". -r, --remove remove candidate packages. Options: --min-atime
Utilizar systemd
sudo nano /etc/systemd/system/paccache.timer
[Unit] Description=Clean-up old pacman pkg cache [Timer] OnCalendar=monthly Persistent=true [Install] WantedBy=multi-user.target
sudo systemctl enable paccache.timer sudo systemctl start paccache.timer
Al utilizar pacman
sudo nano /usr/share/libalpm/hooks/paccache.hook
[Trigger] Operation = Upgrade Operation = Install Operation = Remove Type = Package Target = * [Action] Description = Limpiando cache de pacman mediante paccache... When = PostTransaction Exec = /usr/bin/paccache -r
Ahora cada vez que ejecutemos pacman, paccache intentará eliminar los paquetes innecesarios:
1/5) actualizando harfbuzz [######################] 100% (2/5) actualizando harfbuzz-icu [######################] 100% (3/5) actualizando lib32-harfbuzz [######################] 100% (4/5) actualizando llvm-libs [######################] 100% (5/5) actualizando python-pyqt5-sip [######################] 100% :: Ejecutando los «hooks» de posinstalación... (1/2) Arming ConditionNeedsUpdate... (2/2) Limpiando cache de pacman mediante paccache... ==> no candidate packages found for pruning
Eliminar paquetes huérfanos
Conocer qué paquetes huérfanos tenemos en nuestro sistema y que podrían ser eliminados es muy fácil utilizando:
sudo pacman -Qtdq
Para eliminarlos de forma recursiva:
sudo pacman -Rsn $(pacman -Qdtq)
Mantenimiento ~/.cache
Además de /var/cache/pacman/pkg/, también tendremos que controlar la caché de nuestro usuario, en ~/.cache.
Para saber únicamente qué tamaño ocupa la carpeta ~/.cache:
sudo du -sh ~/.cache/
4,4G /home/user/.cache/
No me gusta borrar todo, y creo que tampoco es lo recomendable. Para saber qué carpetas son las que ocupan más espacio y decidir después qué hacer con ellas, utilizaré ncdu:
sudo pacman -S ncdu
Y se utiliza de una manera muy sencilla, indicándole solamente la carpeta que queremos analizar:
ncdu ~/.cache/
En unos instantes, tendremos las subcarpetas ordenadas por tamaño de mayor a menor.
Con las flechas del cursor, podremos recorrer las carpetas y entrar en ellas con la tecla ENTER
.
/home/user/.cache 972,0 MiB [##########] /winetricks 868,2 MiB [######## ] /yarn 539,2 MiB [##### ] /thumbnails 474,5 MiB [#### ] /wine 395,7 MiB [#### ] /mozilla 389,7 MiB [#### ] /darktable 276,0 MiB [## ] /google-chrome 144,7 MiB [# ] /electron
Una vez decidido qué carpetas queremos borrar, utilizaremos:
rm -rf ~/.cache/thumbnails/
Si consideramos que toda la carpeta caché puede ser eliminada, entonces:
rm -rf ~/.cache/*
Buscar y eliminar archivos duplicados
Instalaremos rmlint:
sudo pacman -S rmlint
Podremos conocer todas las opciones, que son muchas, ejecutando:
rmlint --help
Pero si queremos algo rápido y simple, utilizaremos el parámetro -g para que nos muestre una barra de progreso y escanee de manera recursiva la carpeta en la que estemos situados:
rmlint - g
En algunos minutos, dependiendo del tamaño, tendremos a nuestra disposición los ficheros rmlint.sh y rmlint.json, que, una vez verificados, podremos ejecutar para que elimine, ahora sí, los ficheros que en ellos se relacionan.