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 !
Ce matin, j'ai eu la désagréable surprise de ne plus pouvoir accéder à certains sites, tandis que d'autres répondaient bien. Après une recherche rapide, je me suis rendu compte que je n'avais pas d'adresse IPv4 locale. Par conséquent, tous les sites qui ne possèdent qu'une adresse IPv4 me sont devenus inaccessibles. Pas cool.
Pour celles et ceux qui se retrouveraient avec le même souci sur leur Arch Linux, sachez que le problème est en fait dû au client DHCP interne de NetworkManager. Pour corriger cela, il vous suffit donc d'installer un autre client DHCP :
sudo pacman -S dhclient
puis d'informer NetworkManager qu'il doit l'utiliser :
# /etc/NetworkManager/conf.d/dhcp-client.conf
[main]
dhcp=dhclient
et enfin, de redémarrer NetworkManager pour qu'il prenne en compte la nouvelle configuration :
sudo systemctl restart NetworkManager
Vous devriez avoir de nouveau accès aux sites possédant uniquement une IPv4. 😉
Et c'est à cet instant qu'on se rend compte du retard qu'on a sur l'implémentation d'IPv6 😰
Si vous êtes sous Arch Linux et que Pacman vous pose toutes les questions ci-dessous avant de répondre que la mise à jour casserait une dépendance pour libxfont
, supprimez simplement ce dernier. C'est une ancienne librairie qui a été supprimée des dépôts, plus aucun paquet n'en dépend aujourd'hui.
:: Replace compositeproto with extra/xorgproto? [Y/n]
:: Replace damageproto with extra/xorgproto? [Y/n]
:: Replace dmxproto with extra/xorgproto? [Y/n]
:: Replace fixesproto with extra/xorgproto? [Y/n]
...