在 Ubuntu 18.04(Cinnamon)中,该软件包cpp-7
精确依赖于7.3.0-27ubuntu1~18.04
软件包的版本gcc-7-base
:
$ aptitude why gcc-7-base
i cpp-7 Depends gcc-7-base (= 7.3.0-27ubuntu1~18.04)
同时,该包libgfortran4
精确依赖于7.3.0-16ubuntu3
同一个包的版本gcc-7-base
:
$ apt-cache show libgfortran4
Package: libgfortran4
...
Depends: gcc-7-base (= 7.3.0-16ubuntu3), libc6 (>= 2.27), libgcc1, libquadmath0
libgfortran4
如果我已经安装了该软件包的其他版本,那么它将无法安装:
$ sudo apt-get install libgfortran4
...
The following packages have unmet dependencies:
libgfortran4 : Depends: gcc-7-base (= 7.3.0-16ubuntu3) but 7.3.0-27ubuntu1~18.04 is to be installed
Depends: libquadmath0 but it is not going to be installed
cpp-7
在 的依赖图中ubuntu-desktop
。 libgfortran4
在 的依赖图中gimp
。这是否意味着没有人可以从 Ubuntu 18.04 上的存储库安装 GIMP? 如果我错了,请纠正我,但我当然不能。
更令人抓狂的是,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
意思是(如果我错了,请再次纠正我)它们是完全相同的代码。因此,这里没有实际的依赖冲突,只有标签之间的冲突。
这是怎么发生的?我该如何解决?例如,有没有办法让我告诉cpp-7
或libgfortran4
可以接受 的另一个版本gcc-7-base
,因为它是完全相同的代码?我需要让软件包维护者参与进来吗?
编辑:几天前我发了一个问题关于这个主题。当前的问题是我在此期间所做的工作的缩小范围的结果。
编辑:这些是我的活跃来源:
$ grep -Ev '(^#|^ *$|deb-src)' /etc/apt/sources.list /etc/apt/sources.list.d/*
/etc/apt/sources.list:deb http://us.archive.ubuntu.com/ubuntu/ bionic main restricted
/etc/apt/sources.list:deb http://us.archive.ubuntu.com/ubuntu/ bionic universe
/etc/apt/sources.list:deb http://us.archive.ubuntu.com/ubuntu/ bionic multiverse
/etc/apt/sources.list:deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main
/etc/apt/sources.list.d/keybase.list:deb http://prerelease.keybase.io/deb stable main
/etc/apt/sources.list.d/keybase.list.save:deb http://prerelease.keybase.io/deb stable main
/etc/apt/sources.list.d/vscode.list~:deb [arch=amd64] http://packages.microsoft.com/repos/vscode stable main
有评论说deb-src
有更新,
# deb-src http://us.archive.ubuntu.com/ubuntu/ bionic-updates main restricted
但没有注释或取消注释任何更新,这只是deb
。我应该添加一行
deb http://us.archive.ubuntu.com/ubuntu/ bionic-updates main restricted
?
编辑:添加
deb http://us.archive.ubuntu.com/ubuntu/ bionic-updates main restricted
到我的/etc/apt/sources.list
文件,然后$ sudo apt-get update
工作。GIMP 按预期安装$ sudo apt-get install gimp
。谢谢大家!
答案1
此类问题通常可以通过简单的 来解决apt update
。
让我们通过查询麦迪逊数据库来查找可用的 18.04 版本gcc-7-base
和来看看原因libgfortran4
。
$ rmadison gcc-7-base
gcc-7-base | 7.3.0-16ubuntu3 | bionic | amd64, arm64, armhf, i386, ppc64el, s390x
gcc-7-base | 7.3.0-27ubuntu1~18.04 | bionic-updates | amd64, arm64, armhf, i386, ppc64el, s390x
$ rmadison libgfortran4
libgfortran4 | 7.3.0-16ubuntu3 | bionic | amd64, arm64, armhf, i386, ppc64el, s390x
libgfortran4 | 7.3.0-27ubuntu1~18.04 | bionic-updates | amd64, arm64, armhf, i386, ppc64el, s390x
您可以看到这libgfortran4
是 bionic(非更新)版本,并且具有 bionic(非更新)依赖项。gcc-7-base
另一方面,使用较新的 bionic-updates 依赖项。
在单个系统上,基础存储库与其对应的更新存储库之间出现这种不同步的常见原因有两个。
用户最近禁用了 -updates 存储库。在 /etc/apt/sources.list 或软件和源控制面板中检查和修复非常简单。
用户只是有
apt update
一段时间没有刷新了(更新) apt 本地数据库中来自两个来源的可用软件包。这也是一个简单的修复方法。
您的文件 /etc/apt/sources.list 应该包含以下镜像和源的组合:
deb [mirror URL] bionic main
deb [mirror URL] bionic-updates main
deb [mirror URL] bionic-security main
可选的universe
、multiverse
和restricted
repos 可以包含在同一行中。
答案2
另一个选择是安装 GIMP 的 snap 版本。我知道有些人不喜欢 snap,但对于普通 Linux 用户来说,这可能是一个更可接受的解决方案。
sudo snap install gimp
答案3
除了可接受的答案之外:如果您只启用了默认源和最新的软件包列表 ( apt update
),并且仍然在 gimp 等基本软件包上遇到此类冲突,请报告错误。这是软件包维护者应该修复的问题,对他来说可能相当容易修复。它还可能影响到更多的人,而不仅仅是您。此类错误时有发生,但维护者需要知道。
当然,你应该确保你的配置和包状态之前没有问题,因为如果你从第三方存储库获得了 gimp(或它的一些依赖项),ubuntu 维护人员将无法帮助你。