升级到Eoan后,我有一些软件包被推迟,无法升级。这一切似乎都归结于cpp和gcc:
$ sudo apt install gcc
The following packages have unmet dependencies:
gcc : Depends: cpp (= 4:9.2.1-3.1ubuntu1) but 4:8.3.0-1ubuntu3 is to be installed
Depends: gcc-9 (>= 9.2.1-1~) but it is not going to be installed
$ sudo apt install gcc-9
The following packages have unmet dependencies:
gcc-9 : Depends: cpp-9 (= 9.2.1-9ubuntu2) but it is not going to be installed
Depends: gcc-9-base (= 9.2.1-9ubuntu2) but 9.2.1-17ubuntu1~18.04.1 is to be installed
$ sudo apt install gcc-9-base
gcc-9-base is already the newest version (9.2.1-17ubuntu1~18.04.1).我对apt-cache的理解还不足以解释,但是下面是的输出:
$apt-cache policy cpp
cpp:
Installed: 4:8.3.0-1ubuntu3
Candidate: 4:9.2.1-3.1ubuntu1
Version table:
4:9.2.1-3.1ubuntu1 500
500 http://archive.ubuntu.com/ubuntu eoan/main amd64 Packages
*** 4:8.3.0-1ubuntu3 100
100 /var/lib/dpkg/status
$apt-cache policy cpp-9
cpp-9:
Installed: (none)
Candidate: 9.2.1-9ubuntu2
Version table:
9.2.1-9ubuntu2 500
500 http://archive.ubuntu.com/ubuntu eoan/main amd64 Packages有人能帮我弄清楚这里可能发生了什么吗?除了默认的存储库之外,我已经禁用了所有存储库,但没有成功。我也尝试过手动安装gcc-9的版本,它似乎附带了19.10 (9.2.1-9ubuntu2),但这只会增加伤害,因为其他人都想要9.2.1-17ubuntu1~18.04.1。
发布于 2020-01-11 17:21:29
这里的根本问题是,有些软件包安装的版本比存储库中可用的版本更新,而且由于它们中有许多具有关键的依赖关系,所以我不能仅仅清除和重新安装它们。
解决方案:在一个怪物表达式中升级它们,比如这个sudo apt install lib32gcc1=1:9.2.1-9ubuntu2 lib32stdc++6=9.2.1-9ubuntu2 libasan5=9.2.1-9ubuntu2 libatomic1=9.2.1-9ubuntu2 libcc1-0=9.2.1-9ubuntu2 libgcc1=1:9.2.1-9ubuntu2 libgomp1=9.2.1-9ubuntu2 libitm1=9.2.1-9ubuntu2 liblsan0=9.2.1-9ubuntu2 libstdc++6=9.2.1-9ubuntu2 libtsan0=9.2.1-9ubuntu2 libubsan1=9.2.1-9ubuntu2 libquadmath0=9.2.1-9ubuntu2 ....等等。
在此之前,我不得不使用dpkg -r ...来删除与此依赖链有关的包,但通过repos根本无法使用这些包。(这包括一步一步地遍历它们的依赖链。)我使用apt-cache policy来检查可用性。
https://askubuntu.com/questions/1199776
复制相似问题