升级到 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
有人能帮我弄清楚这里发生了什么吗?我禁用了除默认存储库之外的所有存储库,但没有成功。我还尝试手动安装似乎随 19.10 一起提供的 gcc-9 版本(9.2.1-9ubuntu2
),但这只会雪上加霜,因为其他一切都想要9.2.1-17ubuntu1~18.04.1
答案1
这里的根本问题是,安装的一些软件包的版本比存储库中可用的版本要新,而且由于其中很多软件包具有关键的依赖关系,我无法直接清除并重新安装它们。
解决方案:升级它们全部在一个像这样的怪物表情中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 ...
来删除涉及此依赖链但无法通过存储库获取的软件包。(这涉及逐步遍历它们的依赖链。)我曾经apt-cache policy
检查过可用性。