2015-07-13 41 views
1

我的包取决于FOO这样:可以`建立 - 取决于:`指定一个包的旧版本?

Build-Depends: foo (>= 2.99.2) 

不过,我发现,由于API破损,富v2.99.3和2.99.4导致不兼容与我的包的版本。

我可以指定一个Build-Depends字段,指出它只能拉2.99.2版本吗? (不是更高或更低)

我只是尝试foo(= 2.99.2),但它不起作用。它说Unmet build-dependency in source

回答

0

是的,你可以指定一个确切的版本=(relevant section of Policy)

这并不完全清楚,但您可能会遇到麻烦,因为foo的版本具有Debian修订版;也就是说,整个版本可能是2.99.2-3或类似的。如果你想要一个确切的版本,你需要指定确切的版本。

如果是这种情况,您可能需要执行类似foo (>= 2.99.2), foo (<< 2.99.3)的操作,以涵盖整个2.99.2s的范围。

编辑添加:我一直假设你确实已经安装了必要的版本,但是你对“pull”这个词的使用让我想知道你的问题是不是在apt一边。可能你正在使用像pbuilder这样的构建框架,它试图自动安装它的构建依赖项,而自动安装是失败的部分。如果是这样的话,您需要通过apt源创建2.99.2版本,或者在构建之前手动将其安装到构建环境中。

0

如果API破损是暂时的,说是由于错误,那么你可以使用这些特定版本内建冲突,但你可能必须处理所有可能的修改,等等。在Debian中,我们通常不考虑这样的并假定对于短暂的错误,它们必须被修正。否则,我们可能会陷入非常混乱的依赖关系。

如果这是一个永久性的API破损,并且这是发行版的一部分,那么您需要更新您的软件包,请求恢复构建依赖关系时请求API破坏,或者使用另一个名称打包旧构建依赖项,通常没有办法解决这个问题。

相反,如果这是一个本地/自定义库,在这里,你可能有可用于构建依赖多个版本,那么你仍然可以加上像Build-Conflicts: foo (>= 2.99.3)一个版本内建冲突。或者如果这真的只适用于2.99.2,那么像 Build-Depends: foo (>= 2.99.2), foo (<< 2.99.3)可能会更好地工作。

相关问题