Comment supprimer les anciens paquets installés par pacman dans Arch Linux?

51

J'ai récemment installé Arch Linux et constaté que je ronge assez rapidement beaucoup de stockage. Pour une raison quelconque, j'ai déjà utilisé 17 Go en à peine 2 semaines. Je n'ai pas beaucoup de logiciels installés, alors je suis persuadé que tous les anciens paquets sont conservés quelque part.

Pour supporter cela, j’ai remarqué que si j’installais un paquet, le supprimais puis le réinstallait, pacman se contentait de le décompresser et de réinstaller le logiciel sans devoir le télécharger à nouveau.

Après avoir installé mon système de base, avant le logiciel supplémentaire, j'ai utilisé environ 2 Go environ. Depuis, je n’ai installé que Matlab, Skype, Wine et quelques autres petits programmes. Bien sûr, j'ai également installé des bibliothèques manquantes et autres, mais pas plus de 15 Go.

Est-ce que je me trompe complètement ou Arch ne supprime-t-il jamais les anciens paquets lors du téléchargement / de la mise à niveau vers de nouvelles versions?

Si tel est le cas, comment puis-je supprimer ces packages non utilisés?

Aussi, quand je supprime les paquets installés que j'utilise pacman -R ...

sherrellbc
la source
1
Il est probablement une bonne idée de mettre en place paccache comme régulier cronou d' systemdemploi.
Sparhawk

Réponses:

59

Non, pacman ne supprime pas les anciens paquets de votre cache ( /var/cache/pacman/pkg), donc, avec le temps, il peut se remplir.

Vous pouvez adopter deux approches pour vider le cache: la brute force one avec pacman -Sc:

-c, --clean
Supprime les packages qui ne sont plus installés du cache, ainsi que les bases de données de synchronisation actuellement inutilisées, afin de libérer de l'espace disque. Lorsque pacman télécharge des packages, il les enregistre dans un répertoire cache. De plus, les bases de données sont enregistrées pour chaque base de données de synchronisation à partir de laquelle vous téléchargez et ne sont pas supprimées, même si elles sont supprimées du fichier de configuration pacman.conf (5). Utilisez le commutateur one -clean pour ne supprimer que les paquetages qui ne sont plus installés. utilisez deux pour supprimer tous les fichiers du cache. Dans les deux cas, vous aurez l'option oui ou non de supprimer les packages et / ou les bases de données téléchargées non utilisées.

Ou, pour une approche plus nuancée, vous pouvez utiliser l'un des utilitaires fournis avec pacman-contrib paccache:

paccache est un utilitaire de nettoyage de cache pacman souple, doté de nombreuses options permettant de contrôler la quantité et le type d'objets supprimés de tout répertoire contenant des archives tarman du paquet pacman.

Par défaut, paccachetoutes les versions d'un package installé sont supprimées, à l'exception des trois dernières. Toutefois, vous pouvez modifier ce nombre à l'aide du -k, --keepcommutateur. Il existe également un -d, --dryruncommutateur pour prévisualiser vos modifications. Voir paccache --helppour tous les commutateurs.

Le paquet pacman-contrib contient un certain nombre d’utilitaires qui facilitent la gestion des paquets. Il est intéressant de tous les examiner et de comprendre leur fonctionnement et de faciliter leur utilisation d’Arch. Vous pouvez voir la liste complète avec:

pacman -Ql pacman-contrib | awk -F"[/ ]" '/\/usr\/bin/ {print $NF}'
jasonwryan
la source
jasonwryan a dit :) Faites également très attention avec le double --cleancommutateur: cela empêche de revenir facilement au paquet de travail, au cas où un problème surviendrait avec la dernière version (par exemple, le nouveau paquet repose sur une version plus ancienne de lib ou Python; même avec le dernier matériel noyau). Je trouve installer le cache de pacman ailleurs qu’une /bien meilleure solution (il suffit de définir le chemin dans /etc/pacman.conf ).
tuk0z
2
Si vous n'en avez pas, paccachevous pouvez l'obtenir en installant le pacman-contribpaquet.
pfrenssen
+1, mais je suggère $ pacman -Ql pacman-contrib | awk -F"[/ ]" '/\/usr\/bin\/./ {print $NF}'d'éviter une ligne blanche dans les résultats? ;-)
Cbhihe le
Welp, rm -rf /var/cache/pacman/pkgc'était la mauvaise chose à faire
Post Self
la page correspondante de l'ArchWiki: wiki.archlinux.org/index.php/pacman#Cleaning_the_package_cache
wxyz le
13

Votre cache de paquets est en /var/cache/pacman/pkg/.

REMARQUE: les pacman packages ont été mis à jour en 2018 et nécessitent en outre une installation pacman-contribpour utiliser des scripts / outils tels que paccachedécrits ci-dessous.

Faire:

paccache -d

Pour faire un -dryrunet voir ce qu'une exécution de cet utilitaire pourrait supprimer la prochaine fois:

paccache -r

Pour supprimer les packages en cache. 17gbs ne sonne raide. Assurez-vous de ne pas avoir de bûches fugitives. Faire:

du -h /var/log

Ou même simplement:

du -h /var

Pour une idée plus générale de ce qui se passe.

Mikeserv
la source
7

pacman -Sccfait ce que vous demandez, mais ce n'est pas recommandé. Du wiki

Il est également possible de vider complètement le dossier de cache avec pacman -Scc , mais le faire est considéré comme une mauvaise pratique car, outre ce qui précède, il est également impossible de réinstaller un paquet directement à partir du dossier de cache en cas de besoin, ce qui oblige pour le télécharger à nouveau. Vous ne devriez jamais l'utiliser sauf s'il existe un besoin urgent de disposer de plus d'espace disque.

Par ailleurs, lorsque je désinstalle des packages, je préfère les utiliser pacman -Rnsc, car cela supprime également les dépendances des packages ainsi que les packages qui dépendent de celle-ci. Comme toujours, lisez attentivement les paquets supprimés, car vous pourriez très facilement laisser notre système inutilisable.

aprad046
la source
C'est cool - alors c'est équivalent à rm /var/cache/pacman/pkg/*? Ou - comme au moins par défaut, je suppose. Il y a /tmplongtemps, j'ai déplacé mon cache pkg sur la plupart des machines et laissé le squidsoin de gérer un seul cache central sur le routeur. Pas aussi facile que pacman -Sccsi.
mikeserv
@mikeserv Un cache de paquets Pacman central sur votre routeur? Comment l'avez-vous mis en place, j'aime bien le son, car j'ai à la fois un ordinateur de bureau Arch et un ordinateur portable.
Sept
6

Je suggère fortement l'utilisation de paccacheau lieu de pacman -Sc. Il existe même un indicateur très efficace pour supprimer sélectivement les versions des packages désinstallés -u. Les drapeaux de paccacheI recommend sont (dans le cadre de paccache v5.0.2):

  • -d, --dryrun: effectue un essai, ne trouvant que des packages candidats
  • -r, --remove: supprimer les packages candidats
  • -u, --uninstalled: packages désinstallés cibles uniquement
  • -k, --keep <num>: conserve "num" de chaque paquet dans le cache (par défaut: 3)

Exemple: recherchez les versions de cache restantes des packages désinstallés

paccache -dvuk0
strpeter
la source
1
Comment cela ajoute-t-il aux réponses existantes, autre que l’impression des options?
jasonwryan
Si vous avez supprimé un grand nombre de gros paquets inutilisés, vous souhaitez les supprimer du cache de pacman. C'est possible avec le drapeau -ude paccache. Gnome, KDE ou Texlive sont des exemples de gros packages pour vous donner une idée.
strpeter
1
Oui, je connais le drapeau. Mon propos est simplement d'ajouter plus de drapeaux à la réponse ne change pas le fait qu'il ne fait que reproduire ce qui est déjà là.
jasonwryan
le -kdrapeau était nouveau pour moi et pas très bien expliqué dans la boîte de dialogue d’aide; son utilisation ici était donc utile.
hlk