我的包依赖于foo:
Build-Depends: foo (>= 2.99.2)
但是,我发现由于API破坏,foo v2.99.3和2.99.4导致与我的包的构建不兼容。
我可以指定Build-Depends字段,表明它只能提取2.99.2版本吗? (不高或低)
我只是尝试了foo(= 2.99.2),但它不起作用。它说Unmet build-dependency in source
。
答案 0 :(得分:0)
是的,您可以使用=
(relevant section of Policy)指定确切的版本。
这并不完全清楚,但是你可能遇到麻烦,因为foo
的版本有Debian版本;也就是说,整个版本可能是2.99.2-3
等。如果您需要精确版本,则需要指定完全版本。
如果是这种情况,您可能希望执行foo (>= 2.99.2), foo (<< 2.99.3)
之类的操作来覆盖整个2.99.2的范围。
编辑添加:我一直认为你已经安装了必要的版本,但是你使用“拉”这个词让我想知道你的问题是否恰恰相反。可能你正在使用像pbuilder这样的构建框架,它试图自动安装它的构建依赖项,并且自动安装是失败的部分。如果是这样,您需要通过apt源提供2.99.2
版本,或者在构建之前在构建环境中手动安装。
答案 1 :(得分:0)
如果API破坏是暂时的,比如由于错误,那么您可以对这些特定版本使用构建冲突,但您可能必须处理所有可能的修订等。在Debian中我们通常不要考虑这种情况,并假设对于瞬态错误,无论如何都必须修复它们。否则我们可能陷入非常混乱的依赖关系。
如果这是永久的API破坏,并且这是分发的一部分,那么您将需要更新您的包,请求还原构建依赖项上的API破坏,或者使用其他名称打包旧构建依赖项,通常没办法解决这个问题。
如果这是针对本地/自定义存储库,您可能有多个版本可用于构建依赖项,那么您仍然可以在Build-Conflicts: foo (>= 2.99.3)
之类的内容上添加版本化的构建冲突 。或者,如果这真的只适用于2.99.2
,那么就像
Build-Depends: foo (>= 2.99.2), foo (<< 2.99.3)
也可能更好。