Recientemente instalé Arch Linux y descubrí que estoy consumiendo una gran cantidad de almacenamiento con relativa rapidez. Por alguna razón, ya he usado 17 GB en tan solo 2 semanas. No tengo una gran cantidad de software instalado, por lo que me hacen creer que todos los paquetes antiguos se mantienen en alguna parte.
Para respaldar esto, he notado que si instalé un paquete, lo elimino y luego lo reinstalo, Pacman simplemente descomprime y reinstala el software sin tener que volver a descargarlo.
Después de instalar mi sistema base, antes del software adicional, usé alrededor de 2 GB, tal vez. Desde entonces sólo instalé Matlab, Skype, Wine y algunos otros programas pequeños. Por supuesto, también instalé bibliotecas faltantes y similares, pero no valen ni cerca de 15 GB.
¿Estoy completamente equivocado aquí o Arch nunca elimina 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, usopacman -R ...
Respuesta1
No, pacman no elimina paquetes antiguos de tu caché ( /var/cache/pacman/pkg
), por lo que, con el tiempo, puede llenarse.
Puede adoptar dos enfoques para borrar el caché: el de fuerza bruta con pacman -Sc
:
-c, --clean
Elimina los paquetes que ya no están instalados del caché, así como las bases de datos de sincronización actualmente no utilizadas para liberar espacio en el disco. Cuando pacman descarga paquetes, los guarda en un directorio de caché. Además, las bases de datos se guardan para cada base de datos de sincronización que descargue y no se eliminan incluso si se eliminan del archivo de configuración pacman.conf(5). Utilice un parámetro --clean para eliminar únicamente los paquetes que ya no están instalados; use dos para eliminar todos los archivos del caché. En ambos casos, tendrá la 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 utilizar una de las utilidades que se incluyen con pacman-contrib paccache
:
paccache es una utilidad flexible de limpieza de caché de Pacman, que tiene numerosas opciones para ayudar a controlar cuánto y qué se elimina de cualquier directorio que contenga archivos comprimidos de paquetes de Pacman.
De forma predeterminada, paccache -r
eliminará todas las versiones excepto las tres últimas de un paquete instalado, pero puede cambiar este número con el -k, --keep
interruptor. También hay un -d, --dryrun
interruptor para obtener una vista previa de los cambios. También puede utilizar la -m, --move <dir>
opción para mover los paquetes a un directorio separado de su elección. Ver paccache -h
o paccache --help
para todos los interruptores.
Hay una serie de utilidades en el paquete pacman-contrib para ayudar con la administración de paquetes, vale la pena revisarlas todas y comprender 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}'
Respuesta2
La caché de su paquete está en formato /var/cache/pacman/pkg/
.
NOTA: pacman
Los paquetes se actualizaron en 2018 y, además, requieren instalación pacman-contrib
para usar scripts/herramientas como paccache
se describe a continuación.
Hacer:
paccache -d
Para hacer una prueba -dryrun
y ver qué podría eliminar una ejecución de esa utilidad la próxima vez que lo haga:
paccache -r
Para eliminar paquetes almacenados en caché. 17 GB suena caro. Asegúrate de no tener algunos registros fuera de control. Hacer:
du -h /var/log
O incluso simplemente:
du -h /var
Para tener una idea más general de lo que está pasando.
Respuesta3
Recomiendo fuertemente el uso depaccache
en lugar de pacman -Sc
. Incluso existe un indicador muy eficaz para eliminar selectivamente las versiones de paquetes desinstalados -u
. Las banderas que paccache
recomiendo son (como parte de paccache v5.0.2):
-d
,--dryrun
: realizar un ensayo y solo encontrar paquetes candidatos-r
,--remove
: eliminar paquetes candidatos-u
,--uninstalled
: apunta solo a paquetes desinstalados-k
,--keep <num>
: mantiene "num" de cada paquete en el caché (predeterminado: 3)
Ejemplo: comprobar las versiones de caché restantes de los paquetes desinstalados
paccache -dvuk0
Respuesta4
pacman -Scc
Hace lo que estás pidiendo, pero no es recomendado. Desde elwiki
También es posible vaciar completamente la carpeta de caché conpacman -Scc, pero hacerlo se considera una mala práctica, ya que, además de lo anterior, también impide reinstalar un paquete directamente desde la carpeta de caché en caso de necesidad, obligando así a volver a descargarlo. Nunca debes usarlo a menos que exista una necesidad desesperada de más espacio en disco.
Además, cuando desinstalo paquetes, prefiero usar pacman -Rnsc
, ya que también elimina las dependencias de los paquetes, así como los paquetes que dependen de éste. Como siempre, lee atentamente qué paquetes se están eliminando, ya que muy fácilmente podrías dejar nuestro sistema en un estado inutilizable.