apt: erro de relocação: versão GLIBCXX_3.4.21 não definida no arquivo libstdc ++. so.6 com referência de tempo de link

62

Desde que tentei atualizar para o 16.04 xenial, estou recebendo

$ 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 simplesmente executar apt . Escusado será dizer que isso torna difícil fazer qualquer coisa.

Alguma dica?

    
por Nico Schlömer 26.05.2016 / 16:11

11 respostas

25

Os culpados são remanescentes do PPA para uploads do Ubuntu Toolchain (restrito) especificamente

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

Existem duas possibilidades de lidar com isso:

  • Você já tem ppa-purge instalado. Então

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

    corrige os problemas.

  • Substitua o libstc ++ baixando libstdc ++ 6 para o Xenial e instalando-o via dpkg -i .

por Nico Schlömer 26.05.2016 / 16:58
53

Eu tive o mesmo problema causado por problemas de PPA para o conjunto de ferramentas do Ubuntu. Meu computador não inicializaria por causa disso. Seguindo o comentário de @ w00kie sobre sua resposta, eu baixei (do terminal tty) o debian do pacote libstdc++6 para Xenial no link link e instalado usando dpkg -i . O computador funciona bem agora.

Etapas

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
    
por Sagar Jha 28.06.2016 / 22:47
8

Minha compilação falhou ao inicializar corretamente devido a esse erro. Apt-get não estava funcionando, nem o Gnome. Isso foi imediatamente após uma atualização de 14.04 para 16.04. Eu resolvi isso em tty digitando

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

Neste ponto, apt-get começou a funcionar novamente e eu consegui corrigir todos os problemas daí:

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

Eu também tive que desinstalar o Virtualbox (após o comando update) e reinstalá-lo mais tarde, mas acho que isso não estava relacionado.

    
por Matjaz 17.08.2016 / 17:48
4

Eu estava pensando que o problema era algo único para mim e foi causado por um erro de download.

Essa discussão me deu a pista de que eu precisava. Basicamente, tudo o que era necessário era substituir libstdc ++. So.6.0.22 com libstdc ++. So.6.0.21 em / usr / lib / x86_64-linux-gnu do sistema com falha. (Parece que há um erro na versão mais recente.)

Isso pode ser feito a partir de um thumb-drive ou, como no meu caso, de um disco de trabalho.

Detalhes completos em: link

Obrigado a todos ...

    
por SteelTrap 15.09.2016 / 21:12
3

Seguindo a abordagem dpkg -i na resposta aceita, minha atualização 14.04- > 16.04 exigiu não um, mas dois pacotes:

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

Depois disso, apt upgrade conseguiu baixar os pacotes restantes e concluir a instalação.

    
por user1905416 04.05.2017 / 05:51
2

Se você tiver a versão mais recente do snap 'conjure-up' instalado com o Snappy no Yakkety, seu apt será quebrado com um erro muito semelhante:

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

devido a este bug:

link

Atualmente, a única solução que conheço é a remoção do snap conjure-up (ou possivelmente 'snap reverti-lo' para uma versão anterior, se você tivesse um instalado antes).

    
por Ivy 30.03.2017 / 14:57
1

A correção que funcionou para mim foi realmente adicionar o toolchain do Ubuntu ppa de volta:

sudo apt-add-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install -f
sudo apt-get upgrade
    
por Christopher Roberts 21.02.2017 / 22:31
0

Você deve conseguir corrigi-lo digitando:

sudo apt-get -f instalar

sem especificar nenhum pacote. Deve fazer o trabalho.

    
por biljkus 26.09.2016 / 13:32
0

Pode haver um problema muito semelhante com os sistemas i386.

Para resolver o problema, eu também tive que rebaixar o gcc-5-base da versão 5.4.1-2ubuntu1~12.04 para 5.4.0-6ubuntu1~16.04.4 .

Para completar a atualização para um sistema razoavelmente parecido, eu também tive que usar dpkg --purge on vituoso_nepomuk e virtualbox para me livrar de seus arquivos de configuração, que estavam causando problemas (para mim, o VirtualBox é fornecido pelo pacote virtualbox-5.1, que parece incólume com a atualização.)

A chave era fazer com que dpkg --configure dbus funcionasse.

Para ativar o wget enquanto estiver em uma tela do tipo tty, os usuários também podem precisar executar sudo dhclient eth0 para ativar uma conexão ethernet com fio.

    
por Richard Wordingham 20.11.2016 / 01:11
0

Acabei de ter este problema ao atualizar a distribuição do ubuntu no linux Eu vi isso:

# 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

Mas havia dois arquivos: libstdc ++. so.6.0.21 e libstdc ++. so.6.0.20

Eu mudei o link simbólico para apontar para a última versão 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

Resultante:

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 tudo voltou ao normal

    
por Fábio Ricci 09.04.2017 / 14:26
0
  1. Faça o download do libstdc ++ 6 para o seu ubuntu no site do gerenciador de pacotes do Ubuntu. (use uname -a para encontrar a arquitetura h / we s / w).

  2. Executar

    sudo dpkg --install --auto-deconfigure libstdc++6...deb
    
  3. Reinicie. O Ubuntu deve inicializar, mas o apt não instala novos pacotes.

  4. Para corrigir dependências e tornar o sistema atualizado, execute estes comandos

    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  
    
por Vormos Zuke 26.07.2017 / 11:07