apt: błąd relokacji: wersja GLIBCXX_3.4.21 nie zdefiniowana w pliku libstdc ++. so.6 z odniesieniem do czasu łącza

63

Ponieważ próbuję uaktualnić do xenial 16.04, otrzymuję

$ 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

kiedy po prostu biegniesz apt. Nie trzeba dodawać, że utrudnia to robienie czegokolwiek.

Jakieś wskazówki?

Nico Schlömer
źródło
wow… to sprawia, że ​​naprawdę nie ufam procesowi aktualizacji Ubuntu / Canonical. Za każdym razem, gdy mam działającą, ale nieaktualną wersję, ktoś na forum pomocy mówi mi, że aktualizacje rozwiążą wszystkie moje problemy… Nie wiem, co to jest „dysk scratch”, a na pewno nie chcę przerywać pracy przy GRUBdebugowaniu …
izomorfizm

Odpowiedzi:

55

Miałem ten sam problem spowodowany problemami z PPA dla łańcucha narzędzi Ubuntu. Mój komputer nie uruchomił się z tego powodu. Następujący komentarz @ w00kie na jego odpowiedź, Pobrałem (od terminala tty) debian pakietu libstdc++6dla Xenialw linku https://packages.ubuntu.com/xenial/libstdc++6 i zainstalowany przy użyciu dpkg -i. Komputer działa teraz dobrze.

Kroki

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
źródło
5
Czy umiesz wstawiać polecenia krok po kroku w swojej odpowiedzi? Wcale nie jestem tego zaznajomiony, a moja maszyna do Linuksa jest zaniepokojona ...
Zachary Fields,
@Zachary Jaki dokładnie problem napotykasz? Czy jesteś w stanie uruchomić?
Sagar Jha,
1
Nie całkiem. Jeśli pozwolę temu odejść, ekran migocze przez około 15 minut, to pojawia się monit terminala tty2 w bardzo jasnoszarym kolorze. Nie jestem w stanie używać apt(ani żadnego narzędzia tak naprawdę). Mam nawet próbował ściągnąć libstdc++6...debz rozruchowego dysku USB, ręcznie umieścić pakiet, uruchom ponownie do systemu i zainstalowaniu złamaną .debużyciu sudo dpkg -i libstdc++6...deb, ale to nawet nie wiem co dpkgjest.
Zachary Fields,
13
Aby pobrać / zainstalować plik .deb, możesz: wget http://security.ubuntu.com/ubuntu/pool/main/g/gcc-5/libstdc++6_5.4.0-6ubuntu1~16.04.2_amd64.deba następnie pobrać plik dpkg -i libstdc++6_5.4.0-6ubuntu1~16.04.2_amd64.deb(system 64-bitowy). Dla mnie moje połączenie internetowe nie działało, więc pobrałem go na dysk USB z innego komputera, a następnie musiałem ręcznie zamontować dysk USB na moim problematycznym komputerze ( sudo mount /dev/sdc1 /media/usbgdzie sdc1znaleziono go, oglądając wyjście terminala zaraz po podłączeniu USB) a następnie uruchom powyższe dpkgpolecenie.
Garrett,
7
Musiałem użyć, dpkg --force-all -i libstdc+‌​+6_5.4.0-6ubuntu1~16‌​.04.2_amd64.debaby go zainstalować
virtualxtc
26

Winowajca jest resztki żywności z PPA Ubuntu Toolchain przesyłania (ograniczony) , w szczególności

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

Istnieją dwie możliwości rozwiązania tego problemu:

  • Już ppa-purgezainstalowałeś. Następnie

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

    naprawia problemy.

  • Zastąp libstc ++, pobierając libstdc ++ 6 dla Xenial i instalując go za pośrednictwem dpkg -i.

Nico Schlömer
źródło
4
Przynajmniej dla mnie nie udaje się to z komunikatem identycznym z tym w pytaniu ...
mbdevpl
1
Powinny być prawdopodobnie rozszerzone o odpowiedzi od dołu, ponieważ oczywiście ppa-purgenie będą działać (ten sam python)
user64204
1
Dostaję:sudo: ppa-purge: command not found
Garrett,
@Garrettsudo apt install ppa-purge
Nico Schlömer,
3
@ NicoSchlömer, dziękuję, ale tak naprawdę uważam, że mój aptrównież nie działał (jak w oryginalnym poście).
Garrett,
8

Mój komputer nie uruchomił się poprawnie z powodu tego błędu. Apt-get nie działał, podobnie jak Gnome. Było to natychmiast po aktualizacji z 14.04 do 16.04. Rozwiązałem go w tty, wchodząc

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

W tym momencie apt-getznów zaczął działać i mogłem naprawić wszystkie błędy stamtąd:

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

Musiałem też odinstalować Virtualbox (po poleceniu aktualizacji) i zainstalować go później, ale myślę, że to nie było związane.

Matjaz
źródło
2
próbowałem tego, ale dostałem błąd importu na pakiecie apt_pkg
Mixone
Mixone, jaki był dokładny błąd i na którym dokładnie poleceniu?
Matjaz
sudo apt-get update błąd pochodzi z backendu Pythona, myślę, że stacktrace był pythonem i po prostu powiedział, że nie można znaleźć modułu apt_pkg
Mixone
5
Ten sam problem dla mnie, próbując użyć apt-add-repositorypolecenia w swojej odpowiedzi daje: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
Dla idiotów takich jak ja, którzy próbują uaktualnić 2 lata po wydaniu i myślą, że wszystkie błędy zostały naprawione. Link w powyższym komentarzu jest uszkodzony. Oto nowy. http://security.ubuntu.com/ubuntu/pool/main/g/gcc-5/libstdc++6_5.4.0-6ubuntu1~16.04.10_amd64.deb(lub i386jedno i drugie) I nie przejmuj się przekleństwem dpkg. Zrób, --auto--deconfigurea apt-getpotem wrócisz na właściwe tory pomimo komunikatów o błędach. Będziesz mógł zakończyć z poprawnym -f --install+ --upgradei zrestartować komputer do nowego systemu.
Ufos
4

Myślałem, że problem był dla mnie czymś wyjątkowym i był spowodowany błędem pobierania.

Ta dyskusja dała mi wskazówkę, której potrzebowałem. Zasadniczo wystarczyło zastąpić libstdc ++. So.6.0.22 libstdc ++. So.6.0.21 w / usr / lib / x86_64-linux-gnu systemu, w którym wystąpił błąd. (Wygląda na to, że w nowszej wersji wystąpił błąd).

Można to zrobić z pendrive'a lub, jak w moim przypadku, z dysku scratch.

Pełne szczegóły na: https://answers.launchpad.net/ubuntu/+question/395832

Dziękuje za wszystko...

Stalowa pułapka
źródło
Użyłem tej sztuczki, ale wykonałem podwójny rozruch na wolnej przestrzeni. Byłem w stanie łatwo zamontować oryginalną partycję. To było dość łatwe.
Andrew
Niesamowite - te 3 polecenia działały dla mnie: 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

Zgodnie z dpkg -ipodejściem przyjętym w odpowiedzi moja aktualizacja 14.04-> 16.04 wymagała nie jednego, ale dwóch pakietów:

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

Następnie apt upgradeudało się pobrać pozostałe pakiety i dokończyć instalację.

użytkownik1905416
źródło
2

Jeśli masz najnowszą wersję przystawki „wyczarowania” zainstalowaną w Snappy na Yakkety, twój apt zostanie uszkodzony z bardzo podobnym błędem:

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

z powodu tego błędu:

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

Obecnie jedynym znanym mi obejściem jest usunięcie przystawki wyczarowania (lub „przywrócenie” przywrócenia poprzedniej wersji, jeśli wcześniej ją zainstalowałeś).

Bluszcz
źródło
1

Rozwiązaniem, które zadziałało, było dodanie ppa z powrotem do zestawu narzędzi 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
źródło
0

Powinieneś być w stanie to naprawić, wpisując:

sudo apt-get -f install

bez określania żadnego pakietu. Powinien wykonać pracę.

biljkus
źródło
0

Może być bardzo podobny problem z systemami i386.

Aby rozwiązać ten problem, miałem również downgrade gcc-5-bazą Wersja 5.4.1-2ubuntu1~12.04do 5.4.0-6ubuntu1~16.04.4.

Aby dokończyć aktualizację do rozsądnie dpkg --purge on vituoso_nepomukwyglądającego systemu, musiałem również użyć i virtualbox, aby pozbyć się plików konfiguracyjnych, które powodowały problemy (dla mnie VirtualBox jest dostarczany przez pakiet virtualbox-5.1, który wydaje się być nietknięty przez aktualizację. )

Kluczem było zabranie się dpkg --configure dbusdo pracy.

Aby włączyć wget na ekranie typu tty, użytkownicy mogą również wymagać wykonania, sudo dhclient eth0aby umożliwić przewodowe połączenie Ethernet.

Richard Wordingham
źródło
0

Właśnie miałem ten problem podczas aktualizacji dystrybucji Ubuntu na Linuksie. Widziałem:

# 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

Ale były dwa pliki: libstdc ++. So.6.0.21 i libstdc ++. So.6.0.20

Zmieniłem dowiązanie symboliczne, aby wskazywało na najnowszą wersję 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

Wynikły:

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

i wszystko wróciło do normy

Fábio Ricci
źródło
0
  1. Pobierz libstdc ++ 6 dla swojego Ubuntu ze strony menedżera pakietów Ubuntu. (użyj, uname -aaby znaleźć architekturę h / w i s / w).

  2. Biegać

    sudo dpkg --install --auto-deconfigure libstdc++6...deb
    
  3. Restart. Ubuntu powinno się uruchomić, ale apt nie instalowałby nowych pakietów.

  4. Aby naprawić zależności i zaktualizować system, uruchom te polecenia

    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
źródło