【问题标题】:Can `Build-Depends:` specify an older version of a package?`Build-Depends:` 可以指定一个旧版本的包吗?
【发布时间】:2015-07-13 02:30:23
【问题描述】:

我的包以这种方式依赖于 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

【问题讨论】:

    标签: debian packaging deb dpkg


    【解决方案1】:

    是的,您可以使用 = (relevant section of Policy) 指定确切的版本。

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

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

    编辑添加:我一直假设您实际上已经安装了必要的版本,但是您使用“拉”这个词让我想知道您的问题是否出在 apt 方面.可能您正在使用像 pbuilder 这样的构建框架,它试图自动安装其构建依赖项,而自动安装是失败的部分。如果是这样,您要么需要通过 apt 源提供 2.99.2 版本,要么在构建之前在构建环境中手动安装它。

    【讨论】:

      【解决方案2】:

      如果 API 损坏是暂时的,比如由于错误,那么您可以对这些特定版本使用 Build-Conflicts,但您可能必须处理所有可能的修订等。在 Debian 中,我们通常不考虑这种情况,并假设对于暂时性错误,无论如何都必须修复它们。否则我们可能会陷入非常混乱的依赖关系。

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

      如果这是一个本地/自定义存储库,您可能有多个版本可用于构建依赖项,那么您仍然可以在Build-Conflicts: foo (>= 2.99.3) 之类的东西上添加版本化的Build-Conflicts。或者如果这真的只适用于2.99.2,那么类似 Build-Depends: foo (>= 2.99.2), foo (<< 2.99.3) 也可能会更好。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-05-17
        • 1970-01-01
        • 2021-07-13
        • 2021-07-14
        • 1970-01-01
        • 2020-08-15
        相关资源
        最近更新 更多