Suite à un problème de mise à jour de ma Manjaro, j’ai cassé les gestionaire de paquet pacman.
Mon problème initial :
sudo pacman -Su
:: Début de la mise à jour complète du système... résolution des dépendances... recherche des conflits entre paquets... avertissement : supprime « gcc-libs » de la liste de cible car il est en conflit avec « gcc-libs-multilib » erreur : la préparation de la transaction a échoué (la satisfaction des dépendances a échoué) :: gcc : requiert gcc-libs=7.1.1-2
Impossible de mettre à jour mon système. Après quelques recherche sur le web, je suis tombé sur cet article : https://bbs.archlinux.org/viewtopic.php?id=226723 et j’ai suivie le dernier message.
Allez, j’ouvre mon terminal et j’exécute la première commande sans réfléchir :
pacman -Rdd gcc-libs-multilib
Et là survient le drame, car oui cela m’a bien supprimé le paquet gcc-libs-multilib mais ça m’a cassé pacman ! Du coup, impossible de suivre les étapes de l’article cité précédemment et je me retrouve avec un nouveau problème :
pacman: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
Analysons les options -Rdd :
- -R : cette option est utlisé pour supprimer simplement un paquet.
- dd : cette option signifie à pacman d’ignorer tous les contrôles de dépendance (un seul d permet d’ignorer les vérifications de la version de la dépendance)
Donc pour résumer, j’ai demandé à pacman de supprimer le paquet gcc-libs-multilib en ignorant toutes les dépendances, ce qui est très très risqué !!! La preuve, j’ai cassé pacman et tous les autres paquets qui sont liés à cette dépendance…
Bref, voici comment j’ai réussi à réparer pacman :
- Ouvrir firefox et télécharger la librairie à cette adresse (pas possible d’utiliser wget car cassé) : https://www.archlinux.org/packages/core/x86_64/gcc-libs/
- Aller dans le répertoire où a été téléchargée l’archive :
cd ~/Téléchargements/
mkdir gcc
mv gcc-libs-7.1.1-2-x86_64.pkg.tar.xz gcc/
cd gcc/
xz -d gcc-libs-7.1.1-2-x86_64.pkg.tar.xz tar -xvf gcc-libs-7.1.1-2-x86_64.pkg.tar
usr/lib/
créé dans le répertoire courant :cd usr/lib/
/usr/lib/
:sudo cp libstdc++.so.6 /usr/lib/libstdc++.so.6 sudo cp libgcc_s.so /usr/lib/libgcc_s.so sudo cp libgcc_s.so.1 /usr/lib/libgcc_s.so.1
--force
:sudo pacman -S --force gcc-libs
Moralité de cette histoire, faire très attention et ne pas copier bêtement des lignes de commandes trouvées sur des forums ou articles de blog (comme le mien) sans réfléchir à deux fois :-)
Sinon, pour résoudre le problème initial de la mise à jour du système lié à la version de gcc, il faut simplement installer le paquet gcc-fortran
:
sudo pacman -S gcc-fortran
Ensuite faire la mise à jour :
sudo pacman -Su
Salut,
merci ça m’a bien aidé ;)
même connerie, sauf que je ne m’en serais pas sorti tout seul…
merci BEAUCOUP !!