apt: erreur de relocalisation: la version GLIBCXX_3.4.21 n'est pas définie dans le fichier libstdc ++. so.6 avec la référence de temps de liaison

63

Depuis que j'essaie 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

quand simplement courir apt. Inutile de dire que cela rend la tâche difficile.

Des allusions?

Nico Schlömer
la source
wow… cela me rend vraiment méfiant du processus de mise à niveau d'Ubuntu / Canonical. Chaque fois que j'ai une version fonctionnelle mais obsolète, un membre du forum d'aide m'a dit que les mises à niveau résoudraient tous mes problèmes… Je ne sais pas ce qu'est un «disque de travail» et ne souhaite certainement pas avoir à interrompre le travail avec le GRUBdébogage …
isomorphismes le

Réponses:

55

J'ai eu le même problème causé par des problèmes de PPA pour la chaîne d'outils Ubuntu. Mon ordinateur ne veut pas démarrer à cause de cela. Après le commentaire de @ w00kie sur sa réponse, j'ai téléchargé (depuis le terminal tty) le fichier debian du paquet libstdc++6pour Xenialau lien https://packages.ubuntu.com/xenial/libstdc++6 et installé à l'aide de dpkg -i. L'ordinateur fonctionne très bien maintenant.

Pas

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
Sagar Jha
la source
5
Pouvez-vous s'il vous plaît mettre les commandes, étape par étape dans votre réponse? Je ne suis pas du tout au courant et ma machine Linux est bouchée ...
Zachary Fields
@ Zachary Quel est le problème exact auquel vous êtes confronté? Êtes-vous capable de démarrer?
Sagar Jha
1
Pas vraiment. Si je le laisse disparaître, l’écran scintille pendant environ 15 minutes, puis j’obtiens une invite du terminal tty2 de couleur gris très clair. Je ne peux pas utiliser apt(ni aucun outil vraiment). J'ai même essayé de télécharger libstdc++6...debdepuis une clé USB amorçable, de placer manuellement le paquet, de redémarrer le système en panne et d'installer le .debusing sudo dpkg -i libstdc++6...deb, mais il ne sait même pas ce que dpkgc'est.
Zachary Fields
13
Pour télécharger / installer le fichier .deb, vous pouvez faire: wget http://security.ubuntu.com/ubuntu/pool/main/g/gcc-5/libstdc++6_5.4.0-6ubuntu1~16.04.2_amd64.debet ensuite, une fois téléchargé, dpkg -i libstdc++6_5.4.0-6ubuntu1~16.04.2_amd64.deb(suppose un système 64 bits). Pour moi, ma connexion Internet ne fonctionnait pas, alors je l'ai téléchargée sur un lecteur USB depuis un autre ordinateur, puis j'ai dû monter manuellement le lecteur USB sur mon ordinateur problématique ( sudo mount /dev/sdc1 /media/usbsdc1on a trouvé en regardant la sortie du terminal juste après avoir branché l'USB) puis exécutez la dpkgcommande ci-dessus .
Garrett
7
Je devais utiliser dpkg --force-all -i libstdc+‌​+6_5.4.0-6ubuntu1~16‌​.04.2_amd64.debpour l'installer
virtualxtc
26

Les coupables sont des restes du PPA pour Ubuntu Toolchain Uploads (restreint) , en particulier

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

Il y a deux possibilités pour traiter ceci:

  • Vous avez déjà ppa-purgeinstallé. ensuite

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

    résout les problèmes.

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

Nico Schlömer
la source
4
Du
1
Devrait probablement être élargi avec des réponses venant d’en bas, car ppa-purgecela ne fonctionnerait évidemment pas (même python)
user64204
1
Je reçois:sudo: ppa-purge: command not found
Garrett
@ Garrettsudo apt install ppa-purge
Nico Schlömer
3
@ NicoSchlömer, merci, mais en fait, je pense que mon système aptne fonctionnait pas non plus (comme dans le message d'origine).
Garrett
8

Ma comp 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, a apt-getcommencé à fonctionner à nouveau et j'ai été en mesure de 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.

Matjaz
la source
2
j'ai essayé cela mais une erreur d'importation s'est produite sur le paquet apt_pkg
Mixone
Mixone, quelle était l'erreur exacte et sur quelle commande exactement?
Matjaz
sudo apt-get update l'erreur est venue du backend de python Je suppose, la pile était une trace de python et elle disait en gros que je ne peux pas trouver le module apt_pkg
Mixone
5
Le même problème pour moi aussi, en essayant d'utiliser la apt-add-repositorycommande dans votre réponse, donne:ImportError: /usr/lib/x86_64-linux-gnu/libapt-pkg.so.5.0: symbol _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareERKS4_, version GLIBCXX_3.4.21 not defined in the file libstdc++.so.6 with link time reference
Garrett
Pour les idiots comme moi qui essaient de mettre à jour 2 ans après la publication et qui pensent que tous les bugs sont corrigés. Le lien dans le commentaire ci-dessus est cassé. Voici le nouveau. http://security.ubuntu.com/ubuntu/pool/main/g/gcc-5/libstdc++6_5.4.0-6ubuntu1~16.04.10_amd64.deb(ou les i386deux) Et ne craignez pas que dpkg vous maudisse. Faites --auto--deconfigureet vous apt-getserez sur la bonne voie par la suite malgré les messages d'erreur. Et vous pourrez finir avec -f --install+ --upgradeet redémarrer dans un nouveau système.
Ufos
4

Je pensais que le problème était unique en mon genre et qu'il é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: https://answers.launchpad.net/ubuntu/+question/395832

Merci à tous...

SteelTrap
la source
J'ai utilisé cette astuce, mais j'ai effectué un double démarrage sur de l'espace disponible. J'ai pu monter facilement la partition d'origine. C'était assez facile.
Andrew
Génial - ces 3 commandes ont fonctionné pour moi: cd / usr / lib / x86_64-linux-gnu / >>> sudo rm libstdc ++. So.6 >>> sudo ln -s libstdc ++. So.6.0.21 libstdc ++. So.6
osman
3

Suivant l’ dpkg -iapproche retenue 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 upgradea pu télécharger les packages restants et terminer l'installation.

utilisateur1905416
la source
2

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

à cause de ce bug:

https://bugs.launchpad.net/snappy/+bug/1a677417

À l'heure actuelle, la seule solution que je connaisse est la suppression du composant logiciel enfichable de conjure-up (ou, éventuellement, le 'remplacement du composant logiciel enfichable' par une version précédente si vous en aviez déjà installé une auparavant).

Lierre
la source
1

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

sudo apt-add-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install -f
sudo apt-get upgrade
Christopher Roberts
la source
0

Vous devriez pouvoir le réparer en tapant:

sudo apt-get -f install

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

biljkus
la source
0

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

Pour résoudre le problème, je devais aussi déclasser gcc-5 de la version de base 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_nepomukvirtualbox pour supprimer leurs fichiers de configuration, ce qui posait problème (pour moi, VirtualBox est fourni par le paquet virtualbox-5.1, qui semble indemne de la mise à niveau. )

La clé était de se rendre dpkg --configure dbusau travail.

Pour activer wget dans un écran de type tty, les utilisateurs peuvent également avoir besoin de s’exécuter sudo dhclient eth0pour activer une connexion Ethernet câblée.

Richard Wordingham
la source
0

Je viens d'avoir ce problème lors de la mise à niveau de la distribution Ubuntu sur Linux, j'ai vu que:

# 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 changé 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ésultant:

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

Fábio Ricci
la source
0
  1. Téléchargez libstdc ++ 6 pour votre ubuntu à partir du site Web du gestionnaire de paquets Ubuntu. (utilisez uname -apour trouver l'architecture h / w et s / w).

  2. Courir

    sudo dpkg --install --auto-deconfigure libstdc++6...deb
    
  3. Redémarrer. Ubuntu devrait démarrer mais apt n’installe 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  
    
Vormos Zuke
la source