Mantener limpio Arch Linux: Limpieza de caché y paquetes

Mantenimiento y limpieza de sistema Arch Linux
4 min. Lectura
0 Vistas
0 Valoración

Pacman, el administrador de paquetes de Arch Linux, 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 de caché

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 con paccache

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 <operation> [options] [targets...]

  Operations:
    -d, --dryrun          perform a dry run, only finding candidate packages.
    -m, --move <dir>      move candidate packages to "dir".
    -r, --remove          remove candidate packages.

  Options:
    --min-atime <time>
    --min-mtime <time>    keep packages with an atime/mtime that is not older
                          than the time given, even if this means keeping more
                          than specified through the '--keep' option.
    -a, --arch <arch>     scan for "arch" (default: all architectures).
    -c, --cachedir <dir>  scan "dir" for packages. can be used more than once.
    -f, --force           apply force to mv(1) and rm(1) operations.
    -h, --help            display this help message and exit.
    -i, --ignore <pkgs>   ignore "pkgs", comma-separated.
    -k, --keep <num>      keep "num" of each package in the cache (default: 3).
        --nocolor         remove color from output.
    -q, --quiet           minimize output
    -u, --uninstalled     target uninstalled packages.
    -v, --verbose         increase verbosity. specify up to 3 times.

Opción 1: Utilizar systemd timer

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

Activamos y arrancamos el timer:

sudo systemctl enable paccache.timer
sudo systemctl start paccache.timer

Opción 2: Al utilizar pacman (hook)

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 de ~/.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

Usar ncdu para analizar espacio

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

Eliminar carpetas específicas

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.


Resumen de mantenimiento

Con estas técnicas puedes mantener tu Arch Linux limpio:

  • Limpieza automática de caché de pacman con paccache
  • Eliminación de paquetes huérfanos
  • Análisis visual del espacio con ncdu
  • Detección y eliminación de archivos duplicados con rmlint

Un sistema limpio es un sistema feliz. Programa estas tareas de mantenimiento regularmente y tu Arch Linux funcionará siempre óptimo. 🧹✨

¿Te ha sido útil?

Ayúdame a mejorar con tu puntuación y comentarios.

0.0 (0 votos)
Jaume Ferré

Jaume Ferré

Soy un entusiasta de las nuevas tecnologías, apasionado por explorar su potencial innovador. Colecciono CDs en formato físico y disfruto creando mezclas musicales. Además, la fotografía es otra de mis pasiones, capturando momentos y expresiones con cada disparo. ¡Gracias por leerme!

💬 Comentarios

Los comentarios están gestionados por GitHub Discussions. Necesitas una cuenta de GitHub para participar. ¡Es gratis y rápido!