假设我有一个 .deb 包alpha
,它当前依赖于beta 1.0.1
和gamma 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
满足它。
更详细地说,您现有的beta
1.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
但这并没有说明什么beta
gamma
的版本,仅与其等效的版本。
看Debian 政策部分Provides
了解详情。