在亲爱的社区将此问题标记为重复之前,请知道我已经完成了站点搜索并发现没有等效的重复问题,例如这个关联不重复
我已按照以下说明操作:
根据这些说明,第 1 步是/etc/apt/sources.list
通过添加以下行进行更新:
deb http://deb.debian.org/debian bookworm-backports main contrib non-free
完成此步骤后,我们需要通过运行来更新索引sudo apt update
从现在起我们有两个选择:
- 例如,从向后移植显式安装软件包
apt install -t bookworm-backports <package>
- 从向后移植隐式安装软件包
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-backports
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,确保向后移植的软件包是安装和/或升级的候选者。正如您所说,这可能会导致升级比严格必要的软件包更多的软件包;然而在实践中这通常不是问题,因为很少有库包被向后移植。无论如何,向后移植的包代替它们的原始版本来自稳定的存储库,因此由此产生的膨胀是最小的。
所有这一切的最终结果是你应该
- 检查您想要的包是否确实向后移植 (
apt policy wine
); /bookworm-backports
尝试使用;安装它- 如果失败,请使用安装它
-t bookworm-backports
。