Quantcast
Channel: fred – memo-linux.com
Viewing all articles
Browse latest Browse all 515

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

$
0
0

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 :

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

    Viewing all articles
    Browse latest Browse all 515

    Trending Articles