Il est une règle d’or sur Archlinux : il ne faut jamais forcer la main à pacman. S’il veut pas faire une mise à jour, faut l’écouter. D’ailleurs, c’est vrai pour les autres distributions.
L’exemple parfait est une énorme connerie que j’ai fait cet après-midi. Une nouvelle version de test de la glibc 2.16 était disponible. Or une des nouveautés de cette version, c’est le remplacement de /lib par un lien symbolique vers /usr/lib, surement pour une raison lié à systemd.
Ayant un logiciel qui avait installé des liens dans le répertoire /lib, la mise à jour a raté, car un logiciel y avait laissé des petits… J’ai commis l’erreur de forcer la mise à jour, ce qui m’a planté en beauté le système, le noyau ne retrouvant plus ses petits.
J’ai commis une deuxième erreur : ouvrir un bug alors que j’avais fait la connerie. Après une remontée de bretelles justifiée, ayant eu une meilleure idée, celle de poster sur la liste arch-general, j’ai eu la solution par Tom Gundersen. Petite note préliminaire : à n’appliquer que si vous ne pouvez pas faire autrement. Je ne garantis pas qu’elle fonctionnera partout.
Je la donne ici, histoire de pouvoir être utile à des personnes ayant le même problème. Il faut avoir une clé ou un CD-RW avec une ISO d’archlinux, l’idéal étant une archboot récente. On démarre dessus, et on quitte l’installateur.
Il faut monter la partition root – dans mon cas /dev/sda5 – sous /mnt
mount /dev/sda5 /mnt
Ensuite, on entre dans /mnt, et on vire /lib.
cd /mnt
rm -rf /lib
Et enfin, on applique le lien qui permet de solutionner le problème.
ln -sf /usr/lib lib
Et tout ce merdier à cause d’un paquet – je pensais au début à yaourt, mais finalement, non, c’était kvm-git (vilain paquet !) qui m’avait laissé quelques règles dans /lib/udev :/
En tout cas, j’en ai été bon pour une sacrée claque et une frayeur que je ne suis pas prêt d’oublier. Morale de l’histoire : ne pas forcer une mise à jour, et lire les notes de publications avec minutie. Même si je sens que le passage de la glibc 2.16 sur Archlinux en version stable ne sera pas de tout repos.