Primeiramente, eu consegui um shell de login gráfico copiando manualmente libstdc++.so.6.0.21
em seu lugar a partir de um pendrive USB e criando um link para ele a partir de libstdc++.so.6
. Eu usei essa versão exata porque parece ser o padrão para o Ubuntu 16.04 e também contém o "21" mencionado na mensagem de erro ("versão GLIBCXX_3.4.21").
Enquanto isso parecia satisfazer a pilha de gráficos, os mesmos erros permaneceram com apt
e outros programas dependendo do libstdc ++ 6. Depois de algumas tentativas, consegui resolver tudo com os seguintes passos, usando dpkg
para manualmente (des) instalar coisas:
-
Faça o download dos arquivos deb nas versões corretas para o 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 bloqueou a instalação da versão correta da libstdc ++ 6:
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, corrija a bagunça que deixei enquanto atualizava e experimentava:
sudo apt-get install -f