我刚刚升级到 Ubuntu xenial,16.04。当我尝试执行 apt-get 时,出现错误
apt-get: relocation error: /usr/lib/i386-linux-gnu/libapt-pkg.so.5.0: symbol [long symbol omitted] version GLIBCXX_3.4.21 not defined in file libstdc++.so.6 with link time reference
我尝试过解决方案apt:重定位错误:版本 GLIBCXX_3.4.21 未在文件 libstdc++.so.6 中定义,带有链接时间参考:
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
但是系统抱怨说这将回到旧版本的 libstdc++6:
dkpg: warning: downgrading libstdc++6:i386 from 8.1.0-5ubuntu1!14.04 to 5.4.0-6ubuntu~16.04.10
并拒绝继续,因为libstdc++6:i386 break libkolabxml1
。
该页面还建议使用ppa-purge
(但未安装)和apt-add-repository
(但apt
不起作用)。
我也尝试过aptitude
自行安装适用于 i386 的 xenial 版本。它抱怨说需要libcwidget3v5
和libsigc++-2.0-0v5
。但它无法安装这些,因为如果尝试安装,它会破坏依赖关系。
当我以前遇到过像这样的一堆依赖关系时,结果发现顶层的东西是错误的。
有什么解决办法?我想如果我能开始apt
工作,我就能修复其他东西。我愿意再次运行升级过程,但do-release-upgrade
由于无法使用而失败apt
。
一些人进一步要求提供详细信息。
输出dpkg --print-architecture
:i386
输出dpkg --print-foreign-architecture
:[无输出]
输出ldd /usr/lib/i386-linux-gnu/libapt-pkg.so.5.0 | grep local
:[无输出]
输出ldd /usr/lib/i386-linux-gnu/libstdc++.so.6 | grep local
:[无输出]
答案1
尝试使用以下命令强制安装 libstdc++6:
dpkg -i --force-downgrade --force-depends libstdc++6...
如果它们不起作用,您也可以尝试--force-all
。