apt: errore di trasferimento: versione GLIBCXX_3.4.21 non definita nel file libstdc ++. so.6 con riferimento al tempo di collegamento


63

Da quando ho provato ad aggiornare a 16.04 xenial, sto ottenendo

$ 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

quando semplicemente corri apt. Inutile dire che questo rende difficile fare qualsiasi cosa.

Qualche suggerimento?


wow ... questo mi fa davvero sfidare il processo di aggiornamento di Ubuntu / Canonical. Ogni volta che ho una versione funzionante ma obsoleta, qualcuno in un forum di aiuto mi dice che gli aggiornamenti risolveranno tutti i miei problemi ... Non so cosa sia un "disco di memoria virtuale" e certamente non voglio interrompere il lavoro con il GRUBdebug ...
Isomorfismi,

Risposte:


55

Ho avuto lo stesso problema causato da problemi di PPA per Ubuntu toolchain. Il mio computer non si avviava per questo. A seguito del commento di @ w00kie sulla sua risposta, ho scaricato (dal terminale tty) il debian del pacchetto libstdc++6per il Xeniallink https://packages.ubuntu.com/xenial/libstdc++6 e installato utilizzando dpkg -i. Il computer funziona bene ora.

passi

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
Puoi per favore inserire i comandi, passo dopo passo nella tua risposta? Non ho alcuna familiarità con questo e la mia macchina linux è maledetta ...
Zachary Fields,

@Zachary Qual è il problema esatto che stai affrontando? Sei in grado di avviare?
Sagar Jha,

1
Non proprio. Se lo lascio andare sullo schermo lampeggia per circa 15 minuti, quindi ricevo un prompt del terminale tty2 in un colore grigio molto chiaro. Non riesco a usare apt(o qualsiasi strumento davvero). Ho anche provato a scaricare libstdc++6...debda un'unità USB avviabile, posizionare manualmente il pacchetto, riavviare nel sistema rotto e installare l' .debutilizzo sudo dpkg -i libstdc++6...deb, ma non sa nemmeno cosa dpkgsia.
Zachary Fields,

13
Per scaricare / installare il file .deb, puoi fare: wget http://security.ubuntu.com/ubuntu/pool/main/g/gcc-5/libstdc++6_5.4.0-6ubuntu1~16.04.2_amd64.debe una volta scaricato, dpkg -i libstdc++6_5.4.0-6ubuntu1~16.04.2_amd64.deb(presuppone un sistema a 64 bit). Per quanto mi riguarda, la mia connessione Internet non funzionava, quindi l'ho scaricata su un'unità USB da un altro computer, quindi ho dovuto montare manualmente l'unità USB sul mio computer problematico ( sudo mount /dev/sdc1 /media/usbdove è sdc1stato trovato guardando l'uscita del terminale subito dopo aver collegato USB) e quindi eseguire il dpkgcomando sopra .
Garrett,

7
Ho dovuto usare dpkg --force-all -i libstdc+‌​+6_5.4.0-6ubuntu1~16‌​.04.2_amd64.debper installarlo
virtualxtc il

26

Il colpevole è lasciato dal PPA per Ubuntu Toolchain Uploads (limitato) , in particolare

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

Esistono due possibilità per affrontare questo:

  • Hai già ppa-purgeinstallato. Poi

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

    risolve i problemi.

  • Sostituisci libstc ++ scaricando libstdc ++ 6 per Xenial e installandolo tramite dpkg -i.


4
Almeno per me, questo fallisce con un messaggio identico a quello nella domanda ...
mbdevpl,

1
Probabilmente dovrebbe essere espanso con le risposte dal basso, perché ovviamente ppa-purgenon funzionerà (stesso pitone)
user64204

1
Ricevo:sudo: ppa-purge: command not found
Garrett il

@Garrettsudo apt install ppa-purge
Nico Schlömer,

3
@ NicoSchlömer, grazie, ma in realtà, credo che anche il mio aptnon funzionasse (come da post originale).
Garrett,

8

Il mio computer non è stato avviato correttamente a causa di questo errore. Apt-get non funzionava, né Gnome. Questo è stato subito dopo un aggiornamento dal 14.04 al 16.04. L'ho risolto in tty entrando

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

A questo punto apt-getho iniziato a lavorare di nuovo e sono stato in grado di risolvere tutti gli aspetti da lì:

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

Ho anche dovuto disinstallare Virtualbox (dopo il comando di aggiornamento) e ripristinarlo in seguito, ma penso che questo non fosse correlato.


2
ho provato ma ho riscontrato un errore di importazione sul pacchetto apt_pkg
Mixone,

Mixone, qual è stato l'errore esatto e su quale comando esattamente?
Matjaz,

sudo apt-get update l'errore proviene dal backend di Python, suppongo, lo stacktrace era Python e in pratica diceva che non è possibile trovare il modulo apt_pkg
Mixone,

5
Lo stesso problema anche per me, cercando di usare il apt-add-repositorycomando nella tua risposta dà: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

Per gli idioti come me che cercano di aggiornare 2 anni dopo il rilascio e pensano che tutti i bug siano stati corretti. Il link nel commento sopra è rotto. Ecco quello nuovo. http://security.ubuntu.com/ubuntu/pool/main/g/gcc-5/libstdc++6_5.4.0-6ubuntu1~16.04.10_amd64.deb(o i386entrambi) E non importa dpkg che ti maledice. Fai --auto--deconfiguree apt-getsarai di nuovo in pista dopo nonostante i messaggi di errore. E sarai in grado di finire con il -f --install+ corretto --upgradee riavviare in un nuovo sistema.
Ufo

4

Avevo pensato che il problema fosse qualcosa di unico per me ed è stato causato da un errore di download.

Questa discussione mi ha dato la chiave di cui avevo bisogno. Fondamentalmente, tutto ciò che serviva era sostituire libstdc ++. So.6.0.22 con libstdc ++. So.6.0.21 in / usr / lib / x86_64-linux-gnu del sistema in errore. (Sembra che ci sia un errore nella versione più recente.)

Questo può essere fatto da una chiavetta USB o, come nel mio caso, da un disco di memoria virtuale.

Tutti i dettagli su: https://answers.launchpad.net/ubuntu/+question/395832

Grazie a tutti...


Ho usato questo trucco, ma ho fatto un doppio avvio su un po 'di spazio libero. Sono stato in grado di montare facilmente la partizione originale. È stato abbastanza facile.
Andrew,

Fantastico - questi 3 comandi hanno funzionato per me: 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

Seguendo l' dpkg -iapproccio nella risposta accettata, il mio aggiornamento 14.04-> 16.04 ha richiesto non uno ma due pacchetti:

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

Successivamente, è apt upgradestato in grado di scaricare i pacchetti rimanenti e completare l'installazione.


2

Se hai installato l'ultima versione dello snap 'evocazione' con Snappy su Yakkety, il tuo apt verrà rotto con un errore molto simile:

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

a causa di questo errore:

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

Attualmente l'unica soluzione che conosco è rimuovere lo snap evocazione (o possibilmente 'snap ripristinarlo' a una versione precedente se ne avevi installato uno in precedenza).


1

La correzione che ha funzionato per me è stata quella di aggiungere effettivamente la toolchain Ubuntu indietro ppa:

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

0

Dovresti essere in grado di risolverlo digitando:

sudo apt-get -f install

senza specificare alcun pacchetto. Dovrebbe fare il lavoro.


0

Può esserci un problema molto simile con i sistemi i386.

Per risolvere il problema, ho anche dovuto effettuare il downgrade di gcc-5-base dalla versione 5.4.1-2ubuntu1~12.04a 5.4.0-6ubuntu1~16.04.4.

Per completare l'aggiornamento a un sistema apparentemente ragionevole, ho anche dovuto usare dpkg --purge on vituoso_nepomukvirtualbox per eliminare i file di configurazione, che stavano causando problemi (per me VirtualBox è fornito dal pacchetto virtualbox-5.1, che sembra non incolume dall'aggiornamento. )

La chiave era mettersi dpkg --configure dbusal lavoro.

Per abilitare wget in una schermata di tipo tty, gli utenti potrebbero anche dover eseguire sudo dhclient eth0per abilitare una connessione Ethernet cablata.


0

Ho appena avuto questo problema durante l'aggiornamento della distribuzione di Ubuntu su Linux, ho visto che:

# 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

Ma c'erano due file: libstdc ++. So.6.0.21 e libstdc ++. So.6.0.20

Ho modificato il collegamento simbolico in modo che punti all'ultima versione 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

Con conseguente:

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

e tutto è tornato alla normalità


0
  1. Scarica libstdc ++ 6 per il tuo Ubuntu dal sito Web del gestore di pacchetti Ubuntu. (usare uname -aper trovare l'architettura h / w e s / w).

  2. Correre

    sudo dpkg --install --auto-deconfigure libstdc++6...deb
    
  3. Reboot. Ubuntu dovrebbe avviarsi ma apt non installa i nuovi pacchetti.

  4. Per correggere le dipendenze e aggiornare il sistema, eseguire questi comandi

    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  
    
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.