我有我的官方 Debian 存储库(比如repo1
)。现在我从package X
( repo2
) 添加供应商的回购。软件包 X 不在官方 Debian 存储库中。当然,repo 2
可以有一些重叠的包repo 1
,比如package Y
,有些甚至可能永远不会,并且需要package X
运行(repo 1::package Y
has version 1.0
,repo 2::package Y
has version 2.0
)。
我想知道,何时package X
从repo 2
. 最好甚至阻止从 安装任何软件包repo 2
,以避免它弄乱我的系统。
我目前的想法是限制repo2
,所以只能package X
从那里安装,但我不知道如何做到这一点。
为什么我可能想要这个:
我可能不完全信任
repo2
,我想跟踪来自那里的包裹如果有包,除了
package X
来自之外repo2
,并且我不允许安装这些包,它会中断package X
,但这没问题,我可以在那时决定是否允许来自该来源的那些包,但我会有一个预知正在发生的事情
基本上我想apt
告诉我,如果有任何其他内容,不是Package X
从repo 2
.
我考虑过的一些解决方案:
适当固定:
- 我认为行不通,因为 if
package X
requiresversion 2.0
ofpackage Y
, andrepo1
hasversion 1.0
,repo 2
将被使用,不管固定
调整Packages.gz
来自repo 2
:
- 我不知道,这怎么可能实现
apt
固定可以在这里工作。添加一个条目,例如这将允许从 安装
repo2
,但将确保两者中都存在软件包,repo1
并且repo2
首选repo1
版本进行升级。如果另一个包需要某个repo2
版本,则可以要求将其与适当的选项一起使用。这与用于反向移植存储库的设置相同。repo2
apt
-t
您最终会得到以下行为:
我询问了 的向后移植版本
moosefs-client
,并apt
选择了默认版本libmfsio1
而不是向后移植版本。如果我指定-t bullseye-backports
了 ,它会从 backports 中选择两者。对于仅在 中可用的包repo2
,您根本不需要指定/repo2
;并且如果该包是可卸载的,而无需从中提取repo2
具有旧版本的其他包,除非您指定repo1
,否则将失败。apt
-t repo2