我该如何使用 apt 而不修复不相关的包中未满足的依赖关系?

我该如何使用 apt 而不修复不相关的包中未满足的依赖关系?

keybase安装了 CLI,但keybase不幸的是,该软件包还包含一个 GUI 客户端,它需要 libadwaita、GTK 和一堆其他巨大的 GUI 东西——这会大大增加我安装的软件包数量和 WSL 使用的磁盘空间量。因此,我手动安装了,keybasedpkg -i避免引入所有 GUI 依赖项,这样我就可以使用 CLI 而不会出现任何臃肿的情况。

但是,这导致apt停止工作。当我尝试安装任何其他软件包时,即使是与完全不相关的软件包keybase,我也会收到此错误消息:

Reading package lists... Done
Building dependency tree
Reading state information... Done
You might want to run 'apt --fix-broken install' to correct these.
The following packages have unmet dependencies:
 keybase : Depends: libappindicator1 but it is not going to be installed or
                    libayatana-appindicator1 but it is not going to be installed
           Depends: libgconf-2-4 but it is not going to be installed
           Depends: libgtk-3-0 but it is not going to be installed
E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).

我发现的唯一解决方案是暂时删除keybasedpkg运行我的apt命令,然后重新安装keybase。但我不喜欢这个解决方案——我想保留keybase在我的系统上。有没有办法apt忽略这些未满足的依赖关系?或者,有没有办法在不破坏的情况下在系统上保留任何未满足的依赖关系apt

答案1

当系统存在未满足的依赖关系时,Apt 不能用于升级或安装软件。

  • 无法用于升级“包括安全包升级。具有未满足依赖关系的系统不是接收安全更新。因此,对于大多数用户来说,让系统处于这种状态是不明智的。

对于大多数 Ubuntu 用户未满足的依赖关系当他们安装非 Ubuntu 或错误版本的软件时,就会发生这种情况。当他们卸载那些非 Ubuntu 或错误版本的软件包时,问题就会得到解决。

对于勇敢的高级用户、Apt 和 dpkg 具有--force(参见man dpkg)允许有限覆盖的选项。这些是 Ubuntu 前时代的遗产,如今很少使用……但可能正是您所寻求的。例如--force-depends-version

Depends-version:检查依赖项时不关心版本。这会影响 Pre-Depends 和 Depends 字段。

警告:应谨慎使用 Force,并且只能暂时使用,直到上游版本修复依赖性问题。Apt 和 dpkg 可能会继续强烈(并且正确地)抱怨错误版本的软件包。可能会发生其他副作用。

  • 不要将强制软件包作为永久解决方案。它会导致系统崩溃和崩溃。如果您需要永久的非 deb 软件包解决方案,请研究从源代码构建、替代应用程序和/或替代打包方法。不要对安装了强制软件包的系统进行发布升级,因为这些软件包可能会导致发布升级失败。

相关内容