apt: erreur de déplacement: version GLIBCXX_3.4.21 non définie dans le fichier libstdc ++. so.6 avec référence de temps de lien

54

Depuis que j'ai essayé de passer à 16.04 xenial, je reçois

$ apt
apt: relocation error: /usr/lib/x86_64-linux-gnu/libapt-pkg.so.5.0: 
symbol _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareERKS4_, 
version GLIBCXX_3.4.21 not defined in file libstdc++.so.6 with link time reference

lorsque vous exécutez simplement apt . Inutile de dire que cela rend difficile toute activité.

Des astuces?

    
posée Nico Schlömer 26.05.2016 - 16:11
la source

11 réponses

25

Les coupables sont des restes de la PPA pour les téléchargements de chaînes d'outils Ubuntu (restreint) , spécifiquement

/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.22

Il existe deux possibilités pour traiter ce problème:

  • Vous avez déjà ppa-purge installé. Puis

    sudo ppa-purge ppa:ubuntu-toolchain-r/test
    

    corrige les problèmes.

  • Ignorez libstc ++ en téléchargeant libstdc ++ 6 pour Xenial et en l'installant via dpkg -i .

réponse donnée Nico Schlömer 26.05.2016 - 16:58
la source
47

J'ai eu le même problème causé par des problèmes de PPA pour Ubuntu toolchain. Mon ordinateur ne veut pas démarrer à cause de cela. Suite au commentaire de @ w00kie sur sa réponse, j'ai téléchargé (depuis le terminal tty) la debian du paquet libstdc++6 pour Xenial sur le lien link et installé à l'aide de dpkg -i . L’ordinateur fonctionne très bien maintenant.

Étapes

wget http://security.ubuntu.com/ubuntu/pool/main/g/gcc-5/libstdc++6_5.4.0-6ubuntu1~16.04.10_amd64.deb
sudo dpkg -i libstdc++6_5.4.0-6ubuntu1~16.04.10_amd64.deb

# I also found this helpful
sudo apt-get -f install
    
réponse donnée Sagar Jha 28.06.2016 - 22:47
la source
8

Mon ordinateur n'a pas pu démarrer correctement à cause de cette erreur. Apt-get ne fonctionnait pas, pas plus que Gnome. C'était immédiatement après une mise à niveau de 14.04 à 16.04. Je l'ai résolu en tty en entrant

sudo apt-add-repository --remove ppa:ubuntu-toolchain-r/test

À ce stade, apt-get a recommencé à fonctionner et j'ai pu résoudre tous les problèmes à partir de là:

sudo apt-get clean
sudo apt-get update
sudo apt-get install -f
sudo dpkg -a --configure
sudo apt-get dist-upgrade

J'ai également dû désinstaller Virtualbox (après la commande de mise à jour) et le rétablir plus tard, mais je pense que cela n'avait aucun rapport.

    
réponse donnée Matjaz 17.08.2016 - 17:48
la source
4

Je pensais que le problème était unique en mon genre et était dû à une erreur de téléchargement.

Cette discussion m’a donné l’indice dont j’avais besoin. Fondamentalement, tout ce dont nous avions besoin était de remplacer libstdc ++. So.6.0.22 par libstdc ++. So.6.0.21 dans / usr / lib / x86_64-linux-gnu du système défaillant. (Il semble y avoir une erreur dans la nouvelle version.)

Cela peut être fait à partir d'une clé USB ou, comme dans mon cas, à partir d'un disque de travail.

Tous les détails sur: lien

Merci à tous ...

    
réponse donnée SteelTrap 15.09.2016 - 21:12
la source
3

Suivant l'approche dpkg -i dans la réponse acceptée, ma mise à niveau de 14.04 à > 16.04 ne nécessitait pas un mais deux packages:

gcc-5-base_5.4.0-6ubuntu1~16.04.4_i386.deb
libstdc++6_5.4.0-6ubuntu1~16.04.4_i386.deb

Après cela, apt upgrade a été en mesure de télécharger les packages restants et de terminer l'installation.

    
réponse donnée user1905416 04.05.2017 - 05:51
la source
1

Si vous avez la dernière version du composant logiciel enfichable 'conjure-up' installée avec Snappy sur Yakkety, votre apt sera cassé avec une erreur très similaire:

apt: relocation error: /usr/lib/x86_64-linux-gnu/libapt-private.so.0.0: symbol _ZN13pkgSourceList16AddVolatileFilesER11CommandLinePSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS8_EE, version APTPKG_5.0 not defined in file libapt-pkg.so.5.0 with link time reference

en raison de ce bogue:

lien

À l'heure actuelle, la seule solution que je connaisse consiste à supprimer le composant logiciel enfichable de conjure-up (ou éventuellement à "rétablir" le composant logiciel enfichable dans une version précédente, le cas échéant).

    
réponse donnée Ivy 30.03.2017 - 14:57
la source
0

Vous devriez pouvoir y remédier en tapant:

sudo apt-get -f install

sans spécifier aucun package. Il devrait faire le travail.

    
réponse donnée biljkus 26.09.2016 - 13:32
la source
0

Il peut y avoir un problème très similaire avec les systèmes i386.

Pour résoudre ce problème, je devais également rétrograder gcc-5-base de la version 5.4.1-2ubuntu1~12.04 à 5.4.0-6ubuntu1~16.04.4 .

Pour terminer la mise à niveau vers un système à l'apparence raisonnable, j'ai également dû utiliser dpkg --purge on vituoso_nepomuk et virtualbox pour se débarrasser de leurs fichiers de configuration, qui posaient problème (pour moi, VirtualBox est fourni par le paquet virtualbox-5.1, semble indemne de la mise à niveau.)

La clé consistait à faire fonctionner dpkg --configure dbus .

Pour activer wget dans un écran de type tty, les utilisateurs doivent également exécuter sudo dhclient eth0 pour activer une connexion Ethernet câblée.

    
réponse donnée Richard Wordingham 20.11.2016 - 01:11
la source
0

La solution qui a fonctionné pour moi a été d’ajouter la chaîne d’outils Ubuntu ppa:

sudo apt-add-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install -f
sudo apt-get upgrade
    
réponse donnée Christopher Roberts 21.02.2017 - 22:31
la source
0

Je viens d'avoir ce problème lors de la mise à niveau de la distribution Ubuntu sur Linux J'ai vu ça:

# ls /usr/lib/x86_64-linux-gnu/libstdc++.so.6*
libstdc++.so.6 -> libstdc++.so.6cd*
libstdc++.so.6.0.20*
libstdc++.so.6.0.21
libstdc++.so.6cd -> libstdc++.so.6.0.20*

libstdc ++. so.6 - > libstdc ++. so.6cd - > libstdc ++. so.6.0.20

Mais il y avait deux fichiers: libstdc ++. so.6.0.21 et libstdc ++. so.6.0.20

J'ai modifié le lien symbolique pour qu'il pointe vers la dernière version de libstdc ++. so.6.0.21

cd /usr/lib/x86_64-linux-gnu
rm libstdc++.so.6cd
chmod +x libstdc++.so.6.0.21
ln -s  libstdc++.so.6.0.21 libstdc++.so.6cd

Résultat:

libstdc++.so.6 -> libstdc++.so.6cd*
libstdc++.so.6.0.20*
libstdc++.so.6.0.21*
libstdc++.so.6cd -> libstdc++.so.6.0.21*

et tout est revenu à la normale

    
réponse donnée Fábio Ricci 09.04.2017 - 14:26
la source
0
  1. Téléchargez libstdc ++ 6 pour votre Ubuntu à partir du site Web du gestionnaire de paquets Ubuntu. (utilisez uname -a pour trouver l’architecture h / w et s / w).

  2. Exécuter

    sudo dpkg --install --auto-deconfigure libstdc++6...deb
    
  3. Redémarrez. Ubuntu devrait démarrer mais apt n’installerait pas de nouveaux paquets.

  4. Pour réparer les dépendances et mettre le système à jour, exécutez ces commandes

    sudo apt-add-repository ppa:ubuntu-toolchain-r/test
    sudo apt-get update
    sudo apt-get install -f
    sudo apt-get upgrade
    sudo apt-get dist-upgrade
    sudo apt-get autoclean && sudo apt-get autoremove  
    
réponse donnée Vormos Zuke 26.07.2017 - 11:07
la source

Lire d'autres questions sur les étiquettes