从 debian backport 获取软件包无法按照文档说明工作

从 debian backport 获取软件包无法按照文档说明工作

在亲爱的社区将此问题标记为重复之前,请知道我已经完成了站点搜索并发现没有等效的重复问题,例如这个关联不重复

我已按照以下说明操作:

根据这些说明,第 1 步是/etc/apt/sources.list通过添加以下行进行更新:

  • deb http://deb.debian.org/debian bookworm-backports main contrib non-free

完成此步骤后,我们需要通过运行来更新索引sudo apt update

从现在起我们有两个选择:

  1. 例如,从向后移植显式安装软件包
  • apt install -t bookworm-backports <package>
  1. 从向后移植隐式安装软件包
  • apt install <package>/bookworm-backports

这两种方法之间有显着差异!

第一种方法将从向后移植安装软件包,但也会从向后移植引入所有依赖项,包括它们的依赖项等,这会导致软件包的安装“臃肿”。

第二种方法更干净、更好,是 debian 推荐的,因为与第一种方法不同,它会重用依赖项(来自 main,而不是来自 backports),并且只会引入来自 backports 的正在安装的主包。

换句话说,第二种方法将重用系统上已经安装的依赖项,而无需下载它们。然而,在某些情况下,如果这是不可能的,它将从向后移植中提取依赖项(但在极少数情况下)

我遇到的问题是第一种带有-t选项的方法总是有效,而第二种方法根本不起作用。

我想知道这是为什么以及如何使第二种方法起作用?

这里有两个可重现的示例供您测试:

sudo apt install wine/bookworm-backports
sudo apt install passwordsafe/bookworm-backports

这是第一个示例的输出:

sudo apt install wine/bookworm-b​​ackports

Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Package wine is a virtual package provided by:
  wine 8.0~repack-4
You should explicitly select one to install.

E: Release 'bookworm-backports' for 'wine' was not found

正如你所看到的,bookworm-backports没有找到!

但是,如果您使用-t选项运行,您可以确认这是错误的:

sudo apt install wine -t bookworm-backports

这将很好地工作并为您提供安装该软件包的机会。

所以问题很简单,为什么第二种方法(没有选项-t)不起作用,我需要做什么才能使它起作用,我做错了什么吗?


有关更多信息,我正在使用 Debian 12(书虫)

我的sources.list看起来像这样:

deb https://deb.debian.org/debian/ bookworm main
deb-src https://deb.debian.org/debian/ bookworm main

deb http://security.debian.org/debian-security bookworm-security main
deb-src http://security.debian.org/debian-security bookworm-security main

deb https://deb.debian.org/debian/ bookworm-updates main
deb-src https://deb.debian.org/debian/ bookworm-updates main

deb https://deb.debian.org/debian/ bookworm-backports main
deb-src https://deb.debian.org/debian/ bookworm-backports main

答案1

关于您的具体wine安装尝试,失败的原因是wine不适用于bookworm-backports.

您更普遍的困惑是可以理解的;有一个信息缺失,那就是引脚优先级与向后移植相关。反向移植存储库的默认优先级为 100,这可确保反向移植软件包永远不会成为升级或安装的候选者,而不是来自稳定存储库的相同软件包。

因此,当您要求apt使用安装软件包时/bookworm-backports,如果该软件包已向后移植,则会选择该软件包,但随后将使用优先级规则评估任何依赖项。稳定存储库中的软件包版本始终比向后移植的版本(如果有)具有更高的优先级,并且将被选择。在某些情况下,apt会考虑向后移植的版本化要求,但这并不是在所有情况下都有效 - 特别是,它会失败wine(在 Debian 11 上,apt install wine/bullseye-backports不会解决其所有依赖项,而apt install -t bullseye-backports wine会解决)。

apt -t bookworm-backports另一方面,bookworm-backports暂时将优先级更改为 990,确保向后移植的软件包是安装和/或升级的候选者。正如您所说,这可能会导致升级比严格必要的软件包更多的软件包;然而在实践中这通常不是问题,因为很少有库包被向后移植。无论如何,向后移植的包代替它们的原始版本来自稳定的存储库,因此由此产生的膨胀是最小的。

所有这一切的最终结果是你应该

  1. 检查您想要的包是否确实向后移植 ( apt policy wine);
  2. /bookworm-backports尝试使用;安装它
  3. 如果失败,请使用安装它-t bookworm-backports

相关内容