apt:重定位错误:版本 GLIBCXX_3.4.21 未在文件 libstdc++.so.6 中定义,带有链接时间参考

apt:重定位错误:版本 GLIBCXX_3.4.21 未在文件 libstdc++.so.6 中定义,带有链接时间参考

自从尝试升级到 16.04 xenial 以来,我得到了

$ 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

当只是跑步时apt。不用说,这使得做任何事情都变得困难。

有什么提示吗?

答案1

我遇到了同样的问题,这是由 Ubuntu 工具链的 PPA 问题引起的。我的电脑因此无法启动。根据 @w00kie 对他的回答的评论,我(从 tty 终端)下载了链接中libstdc++6的debian 软件包Xenialhttps://packages.ubuntu.com/xenial/libstdc++6并使用 安装dpkg -i。计算机现在运行正常。

脚步

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

答案2

罪魁祸首是Ubuntu 工具链上传的 PPA(受限), 具体来说

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

处理这个问题有两种可能性:

  • 您已经ppa-purge安装。然后

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

    修复了问题。

  • 通过下载覆盖 libstc++Xenial 的 libstdc++6并通过 安装dpkg -i

答案3

由于这个错误,我的电脑无法正常启动。Apt-get 无法工作,Gnome 也无法工作。这是从 14.04 升级到 16.04 后立即发生的。我在 tty 中输入以下命令解决了这个问题

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

此时apt-get又开始工作了,并且我能够从那里解决所有问题:

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

我还必须卸载 Virtualbox(在更新命令之后)并稍后重新安装它,但我认为这无关紧要。

答案4

按照dpkg -i接受的答案中的方法,我的 14.04->16.04 升级需要的不是一个包,而是两个包:

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

此后,apt upgrade能够下载剩余的软件包并完成安装。

相关内容