Recientemente instalé Arch Linux y descubrí que estoy consumiendo mucho almacenamiento relativamente rápido. Por alguna razón, ya he usado 17GB en solo 2 semanas. No tengo una gran cantidad de software instalado, así que creo que todos los paquetes antiguos se mantienen en algún lugar.
Para respaldar esto, he notado que si instalé un paquete, lo elimino y luego lo reinstalo, pacman simplemente desempaqueta y reinstala el software sin tener que volver a descargarlo.
Después de instalar mi sistema base, antes del software adicional, usé aproximadamente 2 GB o menos. Desde entonces solo he instalado Matlab, Skype, Wine y algunos otros pequeños programas. Por supuesto, también he instalado bibliotecas faltantes y similares, pero no valen casi 15 GB.
¿Estoy completamente equivocado aquí o Arch nunca borra los paquetes antiguos al descargar/actualizar a nuevas versiones?
Si es así, ¿cómo elimino estos paquetes no utilizados?
Además, cuando elimino los paquetes instalados, uso pacman -R ...
No, pacman no elimina los paquetes antiguos de su caché (/var/cache/pacman/pkg
) entonces, con el tiempo, puede llenarse.
Puede adoptar dos enfoques para borrar el caché: la fuerza bruta con pacman -Sc
:
-c, --clean
Elimine los paquetes que ya no están instalados de la memoria caché, así como las bases de datos de sincronización actualmente no utilizadas para liberar espacio en disco. Cuando pacman descarga paquetes, los guarda en un directorio de caché. Además, las bases de datos se guardan para cada DB de sincronización que descargue, y no se eliminan incluso si se eliminan del archivo de configuración pacman.conf (5). Use un interruptor de limpieza para eliminar solo los paquetes que ya no están instalados; use dos para eliminar todos los archivos del caché. En ambos casos, tendrá una opción de sí o no para eliminar paquetes y/o bases de datos descargadas no utilizadas.
O, para un enfoque más matizado, puede usar una de las utilidades que se incluye con pacman-contrib, paccache
:
paccache es una utilidad flexible de limpieza de caché pacman, que tiene numerosas opciones para ayudar a controlar cuánto y qué se elimina de cualquier directorio que contenga paquetes de paquetes de pacman.
De forma predeterminada, paccache
eliminará todas las versiones de un paquete instalado excepto las últimas tres, pero puede cambiar este número con el -k, --keep
interruptor. También hay una -d, --dryrun
cambie para obtener una vista previa de los cambios. Ver paccache --help
para todos los interruptores.
Hay una serie de utilidades en el paquete pacman-contrib para ayudar con la administración del paquete, vale la pena analizarlas todas y obtener una comprensión de cómo funcionan y pueden hacer que ejecutar Arch sea mucho más fácil. Puedes ver la lista completa con:
pacman -Ql pacman-contrib | awk -F"[/ ]" '/\/usr\/bin/ {print $NF}'
El paquete de caché está en /var/cache/pacman/pkg/
.
NOTA:pacman
los paquetes se actualizaron en 2018 y adicionalmente requieren instalación pacman-contrib
para usar scripts/herramientas como paccache
se describe a continuación.
Hacer:
paccache -d
Para hacer un -dryrun
y vea qué puede eliminar una ejecución de esa utilidad la próxima vez que lo haga:
paccache -r
Para eliminar paquetes en caché. 17 gbs suena empinado. Asegúrese de no tener algunos registros de fuga. Hacer:
du -h /var/log
O incluso solo:
du -h /var
Para una idea más general de lo que está sucediendo.
Sugiero encarecidamente el uso de paccache
en lugar de pacman -Sc
. Incluso hay un indicador muy efectivo para eliminar selectivamente las versiones de paquetes desinstalados -u
. Las banderas de paccache
que recomiendo son (como parte de paccache v5.0.2):
-d
, --dryrun
: realiza una ejecución en seco, solo encuentra paquetes candidatos-r
, --remove
: eliminar paquetes candidatos-u
, --uninstalled
: solo paquetes desinstalados de destino-k
, --keep <num>
: mantenga "num" de cada paquete en el caché (predeterminado: 3)paccache -dvuk0
pacman -Scc
hace lo que pides, pero no es recomendable. Desde el Wiki
También es posible vaciar completamente la carpeta de caché con pacman -Scc , pero hacerlo se considera una mala práctica, ya que, además de lo anterior, también evita reinstalar un paquete directamente desde la carpeta de caché en caso de necesidad, lo que obliga a volver a descargarlo. Nunca debe usarlo a menos que haya una necesidad desesperada de más espacio en disco.
Por otro lado, cuando desinstalo paquetes, prefiero usar pacman -Rnsc
, ya que también elimina las dependencias de paquetes, así como los paquetes que dependen de este. Como siempre, lea cuidadosamente qué paquetes se están eliminando, ya que podría dejar nuestro sistema en un estado inutilizable.