apt: relocation error: version GLIBCXX_3.4.21 nicht in der datei libstdc ++. so.6 mit link time reference definiert


63

Seit dem Versuch, auf 16.04 xenial zu aktualisieren, bekomme ich

$ 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

wenn man einfach läuft apt. Das macht es natürlich schwierig, irgendetwas zu tun.

Irgendwelche Hinweise?


wow ... das macht mich wirklich misstrauisch Ubuntu / Canonicals Upgrade-Prozess. Jedes Mal, wenn ich eine funktionierende, aber veraltete Version habe, sagt mir jemand in einem Hilfeforum, dass Upgrades alle meine Probleme lösen werden. Ich weiß nicht, was eine "Arbeitsdiskette" ist, und möchte auf keinen Fall die Arbeit mit dem GRUBDebuggen unterbrechen müssen …
Isomorphismen

Antworten:


55

Ich hatte das gleiche Problem, das durch Probleme mit der PPA-Toolchain für Ubuntu verursacht wurde. Mein Computer würde deswegen nicht booten. Nach @ w00kies Kommentar zu seiner Antwort habe ich (vom tty-Terminal) das debian of-Paket libstdc++6für den XenialLink https://packages.ubuntu.com/xenial/libstdc++6 heruntergeladen und mit installiert dpkg -i. Der Computer funktioniert jetzt einwandfrei.

Schritte

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

5
Können Sie bitte die Befehle Schritt für Schritt in Ihre Antwort einfügen? Ich kenne mich damit überhaupt nicht aus und mein Linux-Rechner ist überlastet ...
Zachary Fields

@ Zachary Was ist das genaue Problem, mit dem Sie konfrontiert sind? Können Sie booten?
Sagar Jha

1
Nicht wirklich. Wenn ich es loslasse, flackert der Bildschirm ungefähr 15 Minuten lang, dann erhalte ich eine tty2-Eingabeaufforderung in einer sehr hellgrauen Farbe. Ich kann aptkein Werkzeug verwenden. Ich habe sogar versucht, libstdc++6...debvon einem bootfähigen USB-Laufwerk herunterzuladen , das Paket manuell zu platzieren, das defekte System neu zu starten und das .debUsing zu installieren sudo dpkg -i libstdc++6...deb, aber es weiß nicht einmal, was es dpkgist.
Zachary Fields

13
Um die .deb-Datei herunterzuladen / zu installieren, können Sie Folgendes ausführen: wget http://security.ubuntu.com/ubuntu/pool/main/g/gcc-5/libstdc++6_5.4.0-6ubuntu1~16.04.2_amd64.debund dann nach dem Herunterladen dpkg -i libstdc++6_5.4.0-6ubuntu1~16.04.2_amd64.deb(64-Bit-System vorausgesetzt). Für mich war meine Internetverbindung nicht funktioniert, so habe ich heruntergeladen es auf ein USB - Laufwerk von einem anderen Computer, dann das USB - Laufwerk auf meinem problematischen Computer manuell montieren mußte ( sudo mount /dev/sdc1 /media/usbwo sdc1wurde durch die Beobachtung Terminal - Ausgabe direkt nach dem Einstecken in USB gefunden) Führen Sie dann den obigen dpkgBefehl aus.
Garrett

7
Ich musste verwenden dpkg --force-all -i libstdc+‌​+6_5.4.0-6ubuntu1~16‌​.04.2_amd64.deb, um es zu installieren
virtualxtc

26

Die Täter sind left-overs aus der PPA für Ubuntu Toolchain Uploads (restricted) , und zwar

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

Es gibt zwei Möglichkeiten, damit umzugehen:

  • Sie haben bereits ppa-purgeinstalliert. Dann

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

    behebt die Probleme.

  • Überschreiben Sie libstc ++, indem Sie libstdc ++ 6 für Xenial herunterladen und über installieren dpkg -i.


4
Zumindest für mich schlägt dies mit der Meldung fehl, die mit der in der Frage
übereinstimmt

1
Sollte wahrscheinlich mit Antworten von unten erweitert werden, da offensichtlich ppa-purgenicht funktioniert (gleiche Python)
user64204

1
Ich bekomme:sudo: ppa-purge: command not found
Garrett

@ Garrettsudo apt install ppa-purge
Nico Schlömer

3
@NicoSchlömer, danke, aber eigentlich glaube ich, dass mein aptauch nicht funktioniert hat ( laut Originalpost).
Garrett

8

Mein Computer konnte aufgrund dieses Fehlers nicht richtig gestartet werden. Apt-get funktionierte nicht und Gnome auch nicht. Dies geschah unmittelbar nach einem Upgrade vom 14.04 auf den 16.04. Ich löste es in tty, indem ich eintrat

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

Zu diesem Zeitpunkt apt-getbegann die Arbeit wieder und ich konnte alle Probleme von dort aus beheben:

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

Ich musste Virtualbox auch deinstallieren (nach dem Update-Befehl) und später wieder installieren, aber ich denke, das hatte nichts damit zu tun.


2
Ich habe dies versucht, aber einen Importfehler auf Paket apt_pkg
Mixone

Mixone, was war der genaue Fehler und auf welchem ​​Befehl genau?
Matjaz

sudo apt-get update der fehler kam aus dem python backend ich schätze, der stacktrace war python und es hieß im grunde nicht modul apt_pkg
mixone august

5
Dasselbe Problem gibt es auch für mich, wenn Sie versuchen, den apt-add-repositoryBefehl in Ihrer Antwort zu verwenden: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,

Für Idioten wie mich, die 2 Jahre nach der Veröffentlichung versuchen, ein Upgrade durchzuführen und denken, dass alle Fehler behoben sind. Link im Kommentar oben ist kaputt. Hier ist der Neue. http://security.ubuntu.com/ubuntu/pool/main/g/gcc-5/libstdc++6_5.4.0-6ubuntu1~16.04.10_amd64.deb(oder i386beides) Und es macht dir nichts aus, wenn dpkg dich verflucht. Tun Sie --auto--deconfigureund Sie apt-getsind trotz Fehlermeldungen wieder auf dem richtigen Weg. Und Sie können mit dem richtigen -f --install+ --upgradeabschließen und ein neues System starten.
Ufos

4

Ich hatte gedacht, dass das Problem etwas Einzigartiges für mich ist und durch einen Download-Fehler verursacht wurde.

Diese Diskussion gab mir den Hinweis, den ich brauchte. Grundsätzlich musste libstdc ++. So.6.0.22 in / usr / lib / x86_64-linux-gnu des ausfallenden Systems durch libstdc ++. So.6.0.21 ersetzt werden. (Anscheinend liegt ein Fehler in der neueren Version vor.)

Dies kann von einem USB-Stick oder, wie in meinem Fall, von einer Arbeitsdiskette aus erfolgen.

Ausführliche Informationen unter: https://answers.launchpad.net/ubuntu/+question/395832

Dank an alle...


Ich habe diesen Trick angewendet, aber auf etwas freiem Speicherplatz einen Dual-Boot ausgeführt. Ich konnte die ursprüngliche Partition problemlos mounten. Es war ziemlich einfach.
Andrew

Genial - diese 3 Befehle haben bei mir funktioniert: 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

Nach dem dpkg -iAnsatz in der akzeptierten Antwort erforderte mein 14.04-> 16.04-Upgrade nicht nur ein, sondern zwei Pakete:

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

Danach apt upgradekonnten die restlichen Pakete heruntergeladen und die Installation abgeschlossen werden.


2

Wenn Sie die neueste Version des "Heraufbeschwörungs" -Snaps mit Snappy auf Yakkety installiert haben, wird Ihre Wohnung mit einem sehr ähnlichen Fehler beschädigt:

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

aufgrund dieses Fehlers:

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

Derzeit ist die einzige mir bekannte Problemumgehung, den Heraufbeschwörungs-Snap zu entfernen (oder ihn möglicherweise auf eine frühere Version zurückzusetzen, wenn Sie zuvor eine installiert hatten).


1

Das Problem wurde behoben, indem ich die Ubuntu-Toolchain ppa back hinzufügte:

sudo apt-add-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install -f
sudo apt-get upgrade

0

Sie sollten das Problem beheben können, indem Sie Folgendes eingeben:

sudo apt-get -f installieren

ohne Angabe eines Pakets. Es sollte die Arbeit machen.


0

Bei i386-Systemen kann ein sehr ähnliches Problem auftreten.

Um das Problem zu lösen, musste ich auch gcc-5-base von Version 5.4.1-2ubuntu1~12.04auf downgraden 5.4.0-6ubuntu1~16.04.4.

Um das Upgrade auf ein vernünftig dpkg --purge on vituoso_nepomukaussehendes System abzuschließen , musste ich auch und virtualbox verwenden, um die Konfigurationsdateien zu entfernen, die Probleme verursachten (für mich wird VirtualBox durch das Paket virtualbox-5.1 bereitgestellt, das vom Upgrade unbeschadet zu sein scheint). )

Der Schlüssel war, dpkg --configure dbuszur Arbeit zu kommen.

Um wget in einem Bildschirm vom Typ tty zu aktivieren, müssen Benutzer möglicherweise auch ausführen sudo dhclient eth0, um eine kabelgebundene Ethernet-Verbindung zu aktivieren.


0

Ich hatte gerade dieses Problem beim Upgrade der Ubuntu-Distribution unter Linux. Ich sah, dass:

# 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

Es gab jedoch zwei Dateien: libstdc ++. So.6.0.21 und libstdc ++. So.6.0.20

Ich habe den symbolischen Link geändert, um auf die neueste Version von libstdc ++ zu verweisen

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

Ergebnis:

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

und alles wurde wieder normal


0
  1. Laden Sie libstdc ++ 6 für Ihr Ubuntu von der Ubuntu-Paketmanager-Website herunter. (verwenden Sie uname -a, um die h / w- und s / w-Architektur zu finden).

  2. Lauf

    sudo dpkg --install --auto-deconfigure libstdc++6...deb
    
  3. Starten Sie neu. Ubuntu sollte booten, aber apt würde keine neuen Pakete installieren.

  4. Führen Sie diese Befehle aus, um Abhängigkeiten zu beheben und das System auf den neuesten Stand zu bringen

    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  
    
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.