Quotidien Shaarli

Tous les liens d'un jour sur une page.

February 5, 2023

Note: désinstaller les anciennes dépendances pacman devenues inutilisées sur Arch Linux

Une des choses que j'aime le plus sur les distributions Linux, c'est leur gestionnaire paquets. Je ne parle pas d'un gestionnaire en particulier, mais du concept même de gestionnaire de paquets. Il faut dire que pouvoir installer n'importe quel logiciel en une commande (ou en un clic si vous préférez les interfaces graphiques) tout en étant assuré à quasiment 100% que ce que vous installez n'est pas un fork vérolé de VLC, ça apporte tout de même une certaine sérénité, en plus d'éviter aux logiciels installés d'embarquer leur propre système de mise à jour.

Une des spécificités d'un gestionnaire de paquets est par ailleurs de gérer les dépendances des programmes, de sorte que si deux programmes ont besoin d'une même librairie pour fonctionner, ils n'ont pas besoin de l'incorporer eux-mêmes et ils profitent directement de la librairie qui sera considéré comme une dépendance des deux programmes. Un gain de temps pour les mainteneurs du programme, et de place pour les utilisateurs.

Il arrive fréquemment cependant au fil des évolutions des programmes qu'un paquet initialement installé sous forme de dépendance devienne inutile. Selon la distribution, il pourra être supprimé automatiquement par le gestionnaire de paquets, mais ce n'est pas toujours le cas. Certains gestionnaires proposent par ailleurs une commande simple pour faciliter leur désinstallation, comme APT (apt autoremove). Ce n'est pas le cas de pacman sur Arch Linux, cependant, il est possible de s'en sortir en jouant un peu avec les options. Dans mon cas, je suis arrivé à cette commande qui semble tout à fait convenir :

pacman -Rs $(pacman -Qdt | sed -E "s/^([^ ]+).+$/\\1/")

Décortiquons un peu ça :

  • pacman -Qdt permet de lister (Q) les paquets ayant été installés sous forme de dépendance (d), mais dont aucun autre paquet ne dépend actuellement (t)
  • On passe le résultat de cette commande à sed avec une expression régulière pour ne conserver que la première partie de chaque ligne (donc on retire les numéros de version)
  • On donne le résultat de tout cela à pacman pour suppression (R). On en profite pour supprimer également les dépendances de ces paquets (s), puisqu'elles ne serviront plus.

Et c'est fini !

Notez que cette commande semble fonctionner également avec yay, mais chez moi elle semblait avoir oublié certains paquets. Dans le doute, je préférerais donc utiliser pacman directement.

Je vous souhaite un bon gain de place !