在创建包时声明依赖项时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
如何阅读:
- 必须
libvtk6-dev (>= 6.0.0)
- 如果不是,
libvtk6-dev (>= 6.2.0)
那么libpython2.7-dev
- 如果不是,
libvtk6-dev (<< 6.2.0)
那么libproj-dev
- 必须
答案2
你可以通过<<
以下示例来做到这一点:
libvtk6-dev (>= 6.0.0), libvtk6-dev (<< 6.2.0)
这样,您就锁定了 6.0.0 和 6.1.0 之间的范围。同样,您必须为每个包单独指定,没有如果这个依赖项是这个则要求那个。