web-dev-qa-db-fra.com

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

J'ai récemment installé Arch Linux et j'ai constaté que je rongeais beaucoup de stockage assez rapidement. Pour une raison quelconque, j'ai déjà utilisé 17 Go en seulement 2 semaines environ. Je n'ai pas beaucoup de logiciels installés, je suis donc amené à croire que tous les anciens packages sont conservés quelque part.

Pour prendre en charge cela, j'ai remarqué que si j'ai installé un package, supprimez ce package, puis réinstallez-le, pacman ne fait que décompresser et réinstaller le logiciel sans avoir à le télécharger à nouveau.

Après avoir installé mon système de base, avant les logiciels supplémentaires, 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 similaires, mais pas près de 15 Go.

Suis-je complètement dans l'erreur ici ou Arch ne supprime-t-il jamais les anciens packages lors du téléchargement/de la mise à niveau vers de nouvelles versions?

Si oui, comment supprimer ces packages inutilisés?

De plus, lorsque je supprime des packages installés, j'utilise pacman -R ...

54
sherrellbc

Non, pacman ne supprime pas les anciens packages de votre cache (/var/cache/pacman/pkg) donc, au fil du temps, il peut se remplir.

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

-c, --clean
Supprimez les packages qui ne sont plus installés du cache ainsi que les bases de données de synchronisation actuellement inutilisées pour 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 que 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 un commutateur --clean pour supprimer uniquement les packages qui ne sont plus installés; utilisez deux pour supprimer tous les fichiers du cache. Dans les deux cas, vous aurez une option oui ou non pour 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 flexible, qui dispose de nombreuses options pour aider à contrôler la quantité et le contenu supprimé de tout répertoire contenant les archives tar du paquet pacman.

Par défaut, paccache supprimera toutes les versions d'un package installé, à l'exception des trois dernières versions, mais vous pouvez modifier ce numéro avec le -k, --keep commutateur. Il y a aussi -d, --dryrun basculez pour prévisualiser vos modifications. Voir paccache --help pour tous les commutateurs.

Il y a un certain nombre d'utilitaires dans le paquet pacman-contrib pour aider à la gestion des paquets, il vaut la peine de les regarder tous et de comprendre comment ils fonctionnent et peuvent rendre l'exécution d'Arch beaucoup plus facile. Vous pouvez voir la liste complète avec:

pacman -Ql pacman-contrib | awk -F"[/ ]" '/\/usr\/bin/ {print $NF}'
65
jasonwryan

Le cache de votre package est dans /var/cache/pacman/pkg/.

REMARQUE:pacman les packages ont été mis à jour en 2018 et nécessitent en outre l'installation de pacman-contrib pour utiliser des scripts/outils comme paccache décrits ci-dessous.

Faire:

paccache -d

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

paccache -r

Pour supprimer les packages mis en cache. 17 Go semblent raides. Assurez-vous que vous n'avez pas de journaux de fuite. 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.

15
mikeserv

Je suggère fortement l'utilisation de paccache au 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 paccache que je recommande sont (dans le cadre de paccache v5.0.2):

  • -d, --dryrun: effectuer un essai à sec, en ne trouvant que les packages candidats
  • -r, --remove: supprimer les packages candidats
  • -u, --uninstalled: cible uniquement les packages désinstallés
  • -k, --keep <num>: conserver "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
8
strpeter

pacman -Scc fait ce que vous demandez, mais ce n'est pas recommandé. Depuis le 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, en plus de ce qui précède, il empêche également de réinstaller un package directement depuis le dossier cache en cas de besoin, forçant ainsi à le retélécharger. Vous ne devriez jamais l'utiliser à moins qu'il y ait un besoin désespéré d'espace disque supplémentaire.

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

7
aprad046