
Parece que estraguei alguma coisa com uma gcc
atualização manual em algum momento no passado, o que não se tornou um problema até hoje, quando atualizei de 14.04 para 16.04. Ou seja, o sistema parece pensar que a libstdc++6
versão está OK, enquanto apt
(e muitos outros programas) reclamam que não (porque a biblioteca compartilhada está na versão errada):
sudo apt-get install --fix-broken --fix-missing
apt-get: 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
O sistema nem inicia o modo gráfico, a saída acima foi obtida usando um console não gráfico (usando Ctrl-Alt-F6
) e apt
é completamente inutilizável, então não posso simplesmente fazer algo como reinstalar.
Como posso corrigir e reinstalar esses pacotes, quando o programa que estou usando para gerenciá-los está afetado e inutilizável?
Responder1
No início, consegui obter um shell de login gráfico copiando manualmentelibstdc++.so.6.0.21
em seu lugar a partir de um pendrive Live USB e criando um link para ele a partir de libstdc++.so.6
. Usei exatamente esta versão porque parece ser o padrão para Ubuntu 16.04 e também contém o "21" mencionado na mensagem de erro ("versão GLIBCXX_3.4.21").
Embora isso parecesse satisfazer a pilha de gráficos, os mesmos erros permaneceram em apt
outros programas que dependem do libstdc++6. Depois de algumas tentativas, consegui resolver tudo com os seguintes passos, usando dpkg
para (des)instalar manualmente as coisas:
Baixe os arquivos deb nas versões corretas para 16.04:
wget http://mirrors.kernel.org/ubuntu/pool/main/a/apt/apt_1.2.10ubuntu1_amd64.deb http://mirrors.kernel.org/ubuntu/pool/main/g/gcc-5/libstdc++6_5.4.0-6ubuntu1~16.04.4_amd64.deb
Removendo esta versão específica, que bloqueava a instalação da libstdc++6 correta:
sudo dpkg --force-depends -r libstdc++6:i386
Em seguida, instale a versão "boa" dos arquivos:
sudo dpkg -i libstdc++6_5.4.0-6ubuntu1~16.04.4_amd64.deb apt_1.2.10ubuntu1_amd64.deb
E, finalmente, conserte a bagunça que deixei enquanto atualizava e testava:
sudo apt-get install -f