Mantener limpio archlinux

Mantener limpio Archlinux

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.

Soy Jaume Ferré, aficionado a los nuevas tecnologias, aunque ya no lo son tanto.
¡Gracias por leerme!

Valora este artículo1 2 3 4 5 (0 votos)

(0 votos)

Categorias del blog

twitter

Últimos tweets