2

Réparer pacman : error while loading shared libraries: libstdc++.so.6

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/
  • Créer un répertoire temporaire, exemple gcc :
  • mkdir gcc
  • Déplacer l’archive dans ce répertoire :
  • mv gcc-libs-7.1.1-2-x86_64.pkg.tar.xz gcc/
  • Aller dans ce répertoire :
  • cd gcc/
  • Décompresser l’archive :
  • 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
    
  • Aller dans le répertoire usr/lib/ créé dans le répertoire courant :
  • cd usr/lib/
  • Copier les librairies libstdc++.so.6 libgcc_s.so libgcc_s.so.1 dans /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
    
  • Enfin pour effectuer la mise à jour de mon système et reconstruire toutes les dépendances, il faut installer le paquet gcc-libs avec l’option --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

Partager l'article :





fred

Administrateur Système autodidacte et utilisateur au quotidien de GNU/Linux (Debian, Ubuntu, Manjaro et un peu de CentOS).

2 Comments

  1. même connerie, sauf que je ne m’en serais pas sorti tout seul…
    merci BEAUCOUP !!

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *