我们的团队已经陷入了 apt 更新工作方式的黑暗角落,我们需要一些帮助来找到出路。
这里的上下文是来自本地存储库的一组部署。我们有一个名为 的软件包foo
,目前已安装在所有计算机上。我们还有一个新包 ,它用、、 和betterfoo
注释。Replaces: foo
Conflicts: foo
Provides: foo
这按预期工作。如果有人手动安装betterfoo
,foo
先卸载,文件都是好的。
现在,问题是我们有第二个包,bar
目前版本为 2.0。对于版本 2.1 更新,我们希望添加对betterfoo
.
不幸的是,当我们将该依赖项添加到版本 2.1 并将其放入存储库中时,apt upgrade
不会安装更新的包。错误似乎是bar: Depends: betterfoo but it is not going to be installed
.
如果我们手动执行apt install bar
,那么它会安装betterfoo
(替换foo
)并且一切正常。同样,如果我们首先这样做apt install betterfoo
,那么apt upgrade
就会成功。
有什么方法可以进行设置,以便在已安装的计算机上apt upgrade
自动替换foo
为?betterfoo
bar
一些附加注释(如果它们相关):
- 一个限制:我们不能自动替换
foo
所有betterfoo
地方。 - 我们的设置是使其
foo
位于比 更高优先级的存储库中betterfoo
。如果这是问题的原因,我们可以解决它。 - 同样,
foo
是 3.0 版本,也是betterfoo
1.0 版本。也许我们需要Provides:
在 的条目上提供版本号betterfoo
?