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

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

我刚刚从 14.04 升级到 16.04。这并不容易,可能是因为我的机器上有很多调整(更新的软件包不是从“官方”来源安装的)。它无法启动,我起初以为是显卡问题(“Radeon 初始化错误libstdc++6”),但最终通过下载(在其他机器上)然后使用 Grub root shell 安装使其启动dpkg -i(类似问题就像这里一样)。

我现在可以启动,并进行桌面会话。很好。

现在的问题是:我有一个严重的包依赖问题,所有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.

给出的建议(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

=> 无法

我尝试使用以下命令删除 libstdc++-5-dev:

sudo apt-get -f remove libstdc++-5-dev

=> 它要求提供其他几个包的未满足的依赖关系。如果我逐个删除它们,最终还是会得到相同的结果。

我也尝试了很多其他的方法,但基本上都停留在同一个阶段。

其他信息:

$ lsb_release -ir 
Distributor ID: Ubuntu
Release:    16.04
$ uname -m
x86_64

问题:我该如何摆脱这种依赖问题?

答案1

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

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

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get -f install

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

答案2

我遇到了这个未满足的依赖关系错误。使用软件更新程序,我安装了推荐的 GCC、GNU C 编译器、GNU C++ 编译器,之后我甚至无法重新启动并进入登录屏幕。在阅读了两天的所有解决方案后,我发现它们都对我不起作用,我结合了其中两个,终于解决了这个问题。

1-将 /etc/apt/sources.list 文件中的源更改为我在此处找到的默认源: https://gist.github.com/rohitrawat/60a04e6ebe4a9ec1203eac3a11d4afc1

sudo leafpad /etc/apt/sources.list

(我使用 leafpad,如果您愿意,您也可以使用任何其他文本编辑器)

2-我了解到 aptitude 更擅长处理依赖性问题,因此我运行此命令来安装 gcc

sudo aptitude install gcc

3-然后 aptitude 向我提出了一个解决问题的方法,这是一个很长的列表,需要卸载 arandr、ubuntu-desktop 等关键软件包。因此我按下了n并没有接受第一个建议,但是接受了第二个建议,如下:

-------------------------------------------------------------
The following actions will resolve these dependencies:

Upgrade the following packages:                                           

1)      gcc-5-base [5.4.0-6ubuntu1~16.04.12 (now, xenial-updates) -> 5.5.0-12ubu
2)      libstdc++6 [5.4.0-6ubuntu1~16.04.12 (now, xenial-updates) -> 9.3.0-10ubu

      Downgrade the following packages:                                         
3)      gcc-9-base [9.3.0-11ubuntu0~14.04 (now) -> 9.3.0-10ubuntu2~16.04 (xenial
4)      gcc-9-base:i386 [9.3.0-11ubuntu0~14.04 (now) -> 9.3.0-10ubuntu2~16.04 (x
5)      libatomic1 [9.3.0-11ubuntu0~14.04 (now) -> 9.3.0-10ubuntu2~16.04 (xenial
6)      libcc1-0 [9.3.0-11ubuntu0~14.04 (now) -> 9.3.0-10ubuntu2~16.04 (xenial)]
7)      libgcc1 [1:9.3.0-11ubuntu0~14.04 (now) -> 1:9.3.0-10ubuntu2~16.04 (xenia
8)      libgcc1:i386 [1:9.3.0-11ubuntu0~14.04 (now) -> 1:9.3.0-10ubuntu2~16.04 (
9)      libgomp1 [9.3.0-11ubuntu0~14.04 (now) -> 9.3.0-10ubuntu2~16.04 (xenial)]
10)     libitm1 [9.3.0-11ubuntu0~14.04 (now) -> 9.3.0-10ubuntu2~16.04 (xenial)] 
11)     liblsan0 [9.3.0-11ubuntu0~14.04 (now) -> 9.3.0-10ubuntu2~16.04 (xenial)]
12)     libobjc4 [9.3.0-11ubuntu0~14.04 (now) -> 9.3.0-10ubuntu2~16.04 (xenial)]
13)     libquadmath0 [9.3.0-11ubuntu0~14.04 (now) -> 9.3.0-10ubuntu2~16.04 (xeni
14)     libtsan0 [9.3.0-11ubuntu0~14.04 (now) -> 9.3.0-10ubuntu2~16.04 (xenial)]

Accept this solution? [Y/n/q/?] **Y**

问题就解决了。

相关内容