如何修复神秘的软件包依赖关系

如何修复神秘的软件包依赖关系

我在一台新笔记本电脑上安装了 Ubuntu 18.04.1,这个垃圾操作系统已经出现故障了。

基本问题是我无法安装apt-get install任何依赖于gcc-7-base或 的包gcc-8-base。例如,

libquadmath0 : Depends: gcc-8-base (= 8-20180414-1ubuntu2) but 8.2.0-1ubuntu2~18.04 is installed
libgfortran4 : Depends: gcc-7-base (= 7.3.0-16ubuntu3) but 7.3.0-27ubuntu1~18.04 is installed

据,这些是或 的apt-cache policy当前版本:gcc-7-basegcc-8-base

$ apt-cache policy gcc-7-base
gcc-7-base:
  Installed: 7.3.0-27ubuntu1~18.04
  Candidate: 7.3.0-27ubuntu1~18.04
  Version table:
 *** 7.3.0-27ubuntu1~18.04 100
        100 /var/lib/dpkg/status
     7.3.0-16ubuntu3 500
        500 http://us.archive.ubuntu.com/ubuntu bionic/main amd64 Packages
$ apt-cache policy gcc-8-base
gcc-8-base:
  Installed: 8.2.0-1ubuntu2~18.04
  Candidate: 8.2.0-1ubuntu2~18.04
  Version table:
 *** 8.2.0-1ubuntu2~18.04 100
        100 /var/lib/dpkg/status
     8-20180414-1ubuntu2 500
        500 http://us.archive.ubuntu.com/ubuntu bionic/main amd64 Packages

已安装版本的名称与存储库中的版本不同;存储库中的版本的名称与其他软件包似乎期望的名称相同。

$ apt-cache showpkg gcc-7-base显示两个版本具有完全相同的“文件”来源和 MD5 哈希值:

$ apt-cache showpkg gcc-7-base
Package: gcc-7-base
Versions: 
7.3.0-27ubuntu1~18.04 (/var/lib/dpkg/status)
 Description Language: 
                 File: /var/lib/apt/lists/us.archive.ubuntu.com_ubuntu_dists_bionic_main_binary-amd64_Packages
                  MD5: b6e93638a6d08ea7a18929d7cf078e5d
...
7.3.0-16ubuntu3 (/var/lib/apt/lists/us.archive.ubuntu.com_ubuntu_dists_bionic_main_binary-amd64_Packages)
 Description Language: 
                 File: /var/lib/apt/lists/us.archive.ubuntu.com_ubuntu_dists_bionic_main_binary-amd64_Packages
                  MD5: b6e93638a6d08ea7a18929d7cf078e5d

(与 的结果类似gcc-8-base,如果有人询问,我会发布它)。据我所知,“坏的”(已安装的)软件包与“好的”(预期的)软件包完全相同,并且来自同一来源,但由于某种原因,它们具有不同的名称,并且阻止了诸如libquadmath0和 之类的东西libgfortran4的安装。

在网上搜索“7.3.0-27ubuntu1~18.04”会得到以下结果描述页面对于 bionic-updates repo 来说这是唯一相关的匹配,但是我的唯一“更新”repo/etc/apt/sources.list被注释掉了,而且我从来没有故意启用过它们。

所以我的第一个问题是 1)这些软件包是如何7.3.0-27ubuntu1~18.04安装8.2.0-1ubuntu2~18.04在我的计算机上的?有什么方法可以知道吗?

我的第二个问题是 2)我该如何使用 来修复它apt-get?由于 的输出中每个版本的最高优先级版本apt-cache policy都是“正确”版本,因此

$ apt-get remove gcc-7-base
$ apt-get install gcc-7-base

分别为包和生成具有7.3.0-16ubuntu3和安装的正确配置? 8-20180414-1ubuntu2gcc-7-basegcc-8-base

顺便说一下,我尝试过更新/升级/自动删除循环,尝试过apt-get install -f,也尝试过apt-get clean。但这些都没有任何效果。

答案1

问题 1 的回答:您询问的版本似乎是 18.04 的默认软件包版本(这是我的输出): jan@jan-XPS-9550:~$ sudo apt-get install libquadmath0 libgfortran4 Reading package lists... Done Building dependency tree
Reading state information... Done libgfortran4 is already the newest version (7.3.0-27ubuntu1~18.04). libquadmath0 is already the newest version (8.2.0-1ubuntu2~18.04).

问题 2 的答案:我认为最好的选择是: apt-get remove --purge libgfortran4 libquadmath0 gcc-7-base gcc-8-base apt-get autoremove reboot (just in case, most likely not needed at all) install packages again 然后它应该回到默认/不冲突的

相关内容