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 -ScEn cambio, si queremos eliminar todos los paquetes de la caché, incluidos los que estén instalados:
sudo pacman -SccPara listar todos los paquetes instalados:
ls /var/cache/pacman/pkg/ | lessLimpieza automática con paccache
Para limpiar la caché automáticamente, necesitaremos instalar pacman-contrib para poder utilizar el script paccache:
sudo pacman -S pacman-contribUna vez instalado, podremos ver todas las posibles opciones con el comando:
paccache -hpaccache 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.targetActivamos y arrancamos el timer:
sudo systemctl enable paccache.timer
sudo systemctl start paccache.timerOpció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 -rAhora 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 pruningEliminar 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 -QtdqPara 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 ncduUsar 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 [# ] /electronEliminar 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 rmlintPodremos conocer todas las opciones, que son muchas, ejecutando:
rmlint --helpPero 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 -gEn 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.
💬 Comentarios
Los comentarios están gestionados por GitHub Discussions. Necesitas una cuenta de GitHub para participar. ¡Es gratis y rápido!