升级:解决对之前发布包的依赖

keb*_*ebs 4 package-management dpkg dependencies

我刚刚从 14.04 升级到 16.04。这并不容易,可能是因为我在我的机器上做了很多调整(更新的包不是从“官方”来源安装的)。它不会启动,我开始还以为是显卡的问题(“的Radeon初始化错误”),但最终还是通过下载(另一台计算机上),使其开机libstdc++6然后安装dpkg -i,使用GRUB root的shell(类似的问题,作为一个在这里)。

我现在可以启动,拥有桌面会话。美好的。

现在的问题是:我有一个严重的包依赖问题,所有apt-get命令都会失败。考虑一下:

$ sudo apt-get check
Reading package lists... Done
Building dependency tree       
Reading state information... Done
You might want to run 'apt-get -f install' to correct these.
The following packages have unmet dependencies:
 libstdc++-5-dev : Depends: libstdc++6 (>= 5.5.0-12ubuntu1~14.04) but 5.4.0-6ubuntu1~16.04.10 is installed
 libstdc++6 : Depends: gcc-5-base (= 5.4.0-6ubuntu1~16.04.10) but 5.5.0-12ubuntu1~14.04 is installed
              Breaks: libogre-1.8.0 (<= 1.8.1+dfsg-0ubuntu5) but 1.8.1+dfsg-0ubuntu3 is installed
 libstdc++6:i386 : Depends: gcc-5-base:i386 (= 5.4.0-6ubuntu1~16.04.10) but 5.5.0-12ubuntu1~14.04 is installed
                   Breaks: libogre-1.8.0 (<= 1.8.1+dfsg-0ubuntu5) but 1.8.1+dfsg-0ubuntu3 is installed
E: Unmet dependencies. Try using -f.
Run Code Online (Sandbox Code Playgroud)

给定的建议 ( apt-get -f install) 什么也不做。

正如你所看到的,奇怪的是,14.04 和 16.04 的包似乎混合了:

  • libstdc++-5-dev取决于 14.04 版本libstdc++6,我当然安装了 16.04 版本。
  • libstdc++6取决于 16.04 包 ( gcc-5-base) 但我似乎仍然有 14.04 版本!!!

我尝试使用以下命令重新安装 3 个软件包:

sudo apt-get -f install <pkgname> --reinstall
Run Code Online (Sandbox Code Playgroud)

=> 无法

我试图删除 libstdc++-5-dev :

sudo apt-get -f remove libstdc++-5-dev
Run Code Online (Sandbox Code Playgroud)

=> 它要求其他几个包的未满足的依赖项。如果我一个一个地删除它们,我最终会在同一点上。

我也尝试了很多其他的东西,但基本上都在同一点上结束。

其他信息:

$ lsb_release -ir 
Distributor ID: Ubuntu
Release:    16.04
$ uname -m
x86_64
Run Code Online (Sandbox Code Playgroud)

问题:如何让自己摆脱这种依赖问题?

keb*_*ebs 6

问题解决了,感谢对这个问题它的答案 (一开始没有找到它的标题是不是很明确的,因此,我不撤我的问题,因为它可能是有用的人)。

因此,以防万一,解决方案是:

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get -f install
Run Code Online (Sandbox Code Playgroud)

(当然在那之后:apt-get upgradeapt autoremove最终确定)。