¿Cómo eliminar paquetes antiguos instalados por pacman en Arch Linux?

51

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 me hacen creer 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 de manera que 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 ...

sherrellbc
fuente
1
Probablemente sea una buena idea configurar el paccache como un trabajo habitual crono regular systemd.
Sparhawk

Respuestas:

59

No, pacman no elimina los paquetes antiguos de su caché ( /var/cache/pacman/pkg), por lo que, con el tiempo, puede llenarse.

Puede adoptar dos enfoques para borrar el caché: la fuerza bruta con pacman -Sc:

-c, --clean
Elimina los paquetes que ya no están instalados de la memoria caché, así como las bases de datos de sincronización no utilizadas actualmente 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 de limpieza de caché pacman flexible, 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 manera predeterminada, paccacheeliminará todas las últimas tres versiones de un paquete instalado, pero puede cambiar este número con el -k, --keepinterruptor. También hay un -d, --dryruninterruptor para previsualizar sus cambios. Ver paccache --helptodos 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 la ejecución de Arch sea mucho más fácil. Puedes ver la lista completa con:

pacman -Ql pacman-contrib | awk -F"[/ ]" '/\/usr\/bin/ {print $NF}'
jasonwryan
fuente
jasonwryan lo dijo :) También tenga mucho cuidado con el --cleaninterruptor doble : eso prohíbe volver fácilmente al paquete de trabajo, en caso de que ocurra algún problema con la última versión (por ejemplo, el nuevo paquete se basa en una versión anterior de lib o Python; lo mismo con el hardware y la última versión núcleo). Encuentro configurar el caché pacman en otro lugar que no sea /una solución mucho mejor (solo configure la ruta en /etc/pacman.conf ).
tuk0z
2
Si no lo tiene paccache, puede obtenerlo instalando el pacman-contribpaquete.
pfrenssen 01 de
+1, pero sugiero $ pacman -Ql pacman-contrib | awk -F"[/ ]" '/\/usr\/bin\/./ {print $NF}'evitar una línea en blanco en los resultados? ;-)
Cbhihe
Welp, rm -rf /var/cache/pacman/pkgera lo incorrecto
Post Self
13

Su paquete de caché está en /var/cache/pacman/pkg/.

NOTA: los pacman paquetes se actualizaron en 2018 y además requieren instalación pacman-contribpara usar scripts / herramientas como se paccachedescribe a continuación.

Hacer:

paccache -d

Para hacer -dryruny ver 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.

mikeserv
fuente
7

pacman -Scchace lo que pides, pero no es recomendable. De la 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, forzando así para 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 usarlos pacman -Rnsc, ya que también elimina las dependencias de paquetes y 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.

aprad046
fuente
Eso es genial, ¿entonces es equivalente a rm /var/cache/pacman/pkg/*entonces? O bien, al menos por defecto, supongo. He reubicado mi caché de paquetes /tmpen la mayoría de las máquinas hace mucho tiempo y dejé squidmanejar una única caché central en el enrutador. No es tan fácil como pacman -Sccsi.
mikeserv
@mikeserv ¿Un caché central de paquetes Pacman en su enrutador? ¿Cómo lo configuró? Me gusta cómo suena, ya que tengo una computadora de escritorio y una computadora portátil Arch.
Severen
6

Sugiero encarecidamente el uso de en paccachelugar de pacman -Sc. Incluso hay un indicador muy efectivo para eliminar selectivamente las versiones de paquetes desinstalados -u. Las banderas de paccacheRecomiendo 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
  • -k, --keep <num>: mantenga "num" de cada paquete en el caché (predeterminado: 3)

Ejemplo: compruebe las versiones de caché restantes de los paquetes desinstalados

paccache -dvuk0
strpeter
fuente
1
¿Cómo se agrega esto a las respuestas existentes, además de imprimir las opciones?
jasonwryan
Si eliminó muchos paquetes grandes no utilizados, desea eliminarlos del caché de pacman. Esto es posible con la bandera -ude paccache. Ejemplos de paquetes grandes son, por ejemplo, Gnome, KDE o Texlive para darle una idea.
2017
1
Sí, estoy familiarizado con la bandera. Mi punto es que solo agregar más indicadores a la respuesta no cambia el hecho de que solo replica lo que ya está aquí.
jasonwryan
la -kbandera era nueva para mí y no estaba muy bien explicada en el diálogo de ayuda, por lo que su uso aquí fue útil.
hLk