Debian 打包:版本相关的“提供”关系

Debian 打包:版本相关的“提供”关系

假设我有一个 .deb 包alpha,它当前依赖于beta 1.0.1gamma 1.0.1。我的新版本beta 2.0.1现在包括所有gamma.Provides中是否可以有版本相关的关键字debian/control?例如在beta的控制文件中

Package: beta
Architecture: any
Depends: python3, foo, bar
Provides: gamma (but only in version >=2.0.1)
...

或者在这种情况下,我应该Depends在反向依赖的控制文件中相应地更新该字段alpha吗?

答案1

Provides仅适用于包含它的包。您的旧beta包可能没有该字段,因此它们不提供gamma并且不会满足alpha的依赖关系。如果您添加Provides: gamma到该beta包的 2.0.1 版本,该包将提供gamma并从而满足依赖关系(有一些限制),但它不会突然导致早期版本beta满足它。

更详细地说,您现有的beta1.0.1 包大概说

Package: beta
Version: 1.0.1
Priority: …
Section: …

你的新 2.0.1 包会说

Package: beta
Version: 2.0.1
Priority: …
Section: …
Provides: gamma

此新条目仅适用于 2.0.1 软件包,1.0.1 软件包没有变化。

请注意,无版本Provides仅满足无版本依赖关系。如果alpha取决于gamma版本限制(例如 >= 2.0),你需要一个版本Provides-beta但这并没有说明什么betagamma的版本,仅与其等效的版本。

Debian 政策部分Provides了解详情。

相关内容