debian/control 中的版本范围

debian/control 中的版本范围

在创建包时声明依赖项时debian/control,我可以指定版本的下限或上限。例如,如果我依赖的libvtk6-dev版本至少是 1.1.1,6.0.0我可以在以下Depends行中写入:

 libvtk6-dev (>= 6.0.0)

但是可以指定一个范围吗?例如,如果我依赖某个包的版本 6.0 或 6.1,但不依赖 6.2 或 5.9,我该如何指定?

更复杂的例子是,如果包的依赖项会根据版本而变化。例如,libvtk6-dev缺少依赖项,但这取决于安装的包的版本。我该如何表达:如果libvtk6-dev是版本 6.0 或 6.1,则还依赖于libpython2.7-dev,如果版本大于或等于 6.2,则依赖于libproj-dev

答案1

  • 让我们分解一下:

    libvtk6-dev (>= 6.0.0), libvtk6-dev (<< 6.2.0), libpython2.7-dev
    

    或(逻辑运算)

    libvtk6-dev (>= 6.2.0), libproj-dev
    

    ,inDepends:就像是 AND(逻辑运算)。|是 OR(逻辑运算),但它们的优先级不同,也没有括号可以按照该顺序/形式直接组合。

  • 以下是我可以想到的:

    libvtk6-dev (>= 6.0.0), libvtk6-dev (>= 6.2.0) | libpython2.7-dev, libvtk6-dev (<< 6.2.0) | libproj-dev
    

    如何阅读:

    1. 必须libvtk6-dev (>= 6.0.0)
    2. 如果不是,libvtk6-dev (>= 6.2.0)那么libpython2.7-dev
    3. 如果不是,libvtk6-dev (<< 6.2.0)那么libproj-dev

有趣的是,这种方式类似于也不(或者NAND) 电子学中的逻辑。如果您有其中之一,那么您可以从中创建所有逻辑运算。

答案2

你可以通过<<以下示例来做到这一点:

 libvtk6-dev (>= 6.0.0),  libvtk6-dev (<< 6.2.0)

这样,您就锁定了 6.0.0 和 6.1.0 之间的范围。同样,您必须为每个包单独指定,没有如果这个依赖项是这个则要求那个。

相关内容