首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将ubuntu 14升级到ubuntu 16时出现的问题

将ubuntu 14升级到ubuntu 16时出现的问题
EN

Ask Ubuntu用户
提问于 2022-10-28 18:14:20
回答 1查看 161关注 0票数 -4

当通过发布升级从Ubuntu 14升级到Ubuntu 16时,我最后出现了以下重定位错误:

代码语言:javascript
复制
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

就像这里描述的。https://github.com/Microsoft/WSL/issues/1216

再也不能用apt了。我通过安装以下程序解决了这个问题(如上面的链接中所建议的):

代码语言:javascript
复制
sudo dpkg -i libstdc++6_5.4.0-6ubuntu1~16.04.12_amd64.deb

现在,apt又起作用了,但我以坏的依赖关系结束了:

代码语言:javascript
复制
 libstdc++-5-dev : Depends: libstdc++6 (>= 5.5.0-12ubuntu1~14.04) but 5.4.0-6ubuntu1~16.04.12 is installed
 libstdc++-6-dev : Depends: libstdc++6 (>= 6.5.0-2ubuntu1~14.04.1) but 5.4.0-6ubuntu1~16.04.12 is installed
 libstdc++-7-dev : Depends: libstdc++6 (>= 7.5.0-3ubuntu1~14.04.1) but 5.4.0-6ubuntu1~16.04.12 is installed
 libstdc++6 : Depends: gcc-5-base (= 5.4.0-6ubuntu1~16.04.12) but 5.5.0-12ubuntu1~14.04 is installed

有人知道怎么解决这个问题吗?

如果升级过程没有正确地将gcc5从可信的升级到异种,请参见:

代码语言:javascript
复制
sudo dpkg --list gcc-5
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                                           Version                      Architecture                 Description
+++-==============================================-============================-============================-=================================================================================================
ii  gcc-5                                          5.5.0-12ubuntu1~14.04        amd64                        GNU C compiler

提前感谢!

EN

回答 1

Ask Ubuntu用户

回答已采纳

发布于 2022-10-28 18:47:06

好的,我刚找到解决办法。这里对于任何遇到类似问题的人来说:

代码语言:javascript
复制
wget http://security.ubuntu.com/ubuntu/pool/main/g/gcc-5/libstdc++6_5.4.0-6ubuntu1~16.04.12_amd64.deb
sudo dpkg -i libstdc++6_5.4.0-6ubuntu1~16.04.12_amd64.deb
wget http://security.ubuntu.com/ubuntu/pool/main/g/gcc-5/gcc-5-base_5.4.0-6ubuntu1~16.04.12_amd64.deb
sudo dpkg -i gcc-5-base_5.4.0-6ubuntu1~16.04.12_amd64.deb 
wget http://security.ubuntu.com/ubuntu/pool/main/g/gcc-5/gcc-5_5.4.0-6ubuntu1~16.04.12_amd64.deb
sudo dpkg -i gcc-5_5.4.0-6ubuntu1~16.04.12_amd64.deb 
wget http://security.ubuntu.com/ubuntu/pool/main/g/gcc-5/g++-5_5.4.0-6ubuntu1~16.04.12_amd64.deb
sudo dpkg -i g++-5_5.4.0-6ubuntu1~16.04.12_amd64.deb 
wget http://security.ubuntu.com/ubuntu/pool/main/g/gcc-5/cpp-5_5.4.0-6ubuntu1~16.04.12_amd64.deb
sudo dpkg -i cpp-5_5.4.0-6ubuntu1~16.04.12_amd64.deb 
wget http://security.ubuntu.com/ubuntu/pool/main/g/gcc-5/libstdc++-5-dev_5.4.0-6ubuntu1~16.04.12_amd64.deb
sudo dpkg -i libstdc++-5-dev_5.4.0-6ubuntu1~16.04.12_amd64.deb 
wget http://security.ubuntu.com/ubuntu/pool/main/g/gcc-5/libgcc-5-dev_5.4.0-6ubuntu1~16.04.12_amd64.deb
sudo dpkg -i libgcc-5-dev_5.4.0-6ubuntu1~16.04.12_amd64.deb 
wget http://security.ubuntu.com/ubuntu/pool/main/g/gcc-5/libasan2_5.4.0-6ubuntu1~16.04.12_amd64.deb
sudo dpkg -i libasan2_5.4.0-6ubuntu1~16.04.12_amd64.deb 
wget http://security.ubuntu.com/ubuntu/pool/main/g/gcc-5/libmpx0_5.4.0-6ubuntu1~16.04.12_amd64.deb
sudo dpkg -i libmpx0_5.4.0-6ubuntu1~16.04.12_amd64.deb 
sudo apt -f install
sudo apt autoremove

这样我就有了一个干净的状态。

附带注意: apt -f安装仅通过删除gcc-6和gcc-7来处理剩余的错误,而这些错误仍然是错误的。

代码语言:javascript
复制
The following packages have unmet dependencies:
 libstdc++-6-dev : Depends: libstdc++6 (>= 6.5.0-2ubuntu1~14.04.1) but 5.4.0-6ubuntu1~16.04.12 is installed
 libstdc++-7-dev : Depends: libstdc++6 (>= 7.5.0-3ubuntu1~14.04.1) but 5.4.0-6ubuntu1~16.04.12 is installed

但并不是信任的关键。与gcc-5不同的是,调用apt -f安装会删除数千个包,包括apt等。

票数 0
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/1437928

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档