如何修复损坏的 libstdc++6,它也会损坏 apt

phi*_*ler 6 package-management apt dpkg dependencies

我似乎gcc在过去的某个时候通过手动更新搞砸了一些事情,直到今天我从 14.04 升级到 16.04 时才成为问题。也就是说,系统似乎认为libstdc++6版本是可以的,而apt(和许多其他程序)抱怨它不是(因为共享库实际上是错误的版本):

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
Run Code Online (Sandbox Code Playgroud)

系统甚至没有启动图形模式,上面的输出是使用非图形控制台(使用Ctrl-Alt-F6)获得的,并且apt本身完全无法使用,所以我不能只做重新安装之类的事情。

当我用于管理它们的程序本身受到影响且无法使用时,如何修复和重新安装这些软件包?

phi*_*ler 7

起初,我能够通过libstdc++.so.6.0.21从 Live USB 记忆棒手动复制到它的位置,并从libstdc++.so.6. 我使用了这个确切版本,因为它似乎是 Ubuntu 16.04 的默认版本,并且还包含错误消息中提到的“21”(“版本 GLIBCXX_3.4.21”)。

虽然这似乎满足了图形堆栈,但apt依赖 libstdc++6 的其他程序仍然存在相同的错误。经过一些尝试,我可以通过以下步骤解决整个问题,dpkg用于手动(卸载)安装: