Python 有没有办法在debian/control中定义分组的条件依赖项?
我正在对一个Python包进行Debianing,它有一点奇怪的依赖项。它可以是:Python 有没有办法在debian/control中定义分组的条件依赖项?,python,debian,packaging,python-2.x,dpkg,Python,Debian,Packaging,Python 2.x,Dpkg,我正在对一个Python包进行Debianing,它有一点奇怪的依赖项。它可以是: 取决于python2.7 取决于python2.6和python-orderedict(我在PyPI上为orderedict自建的包) 例如,在mysetup.py中,我有: deps = ["Flask >=0.8"] if not hasattr(collections, "OrderedDict"): # Python 2.6 deps.append("ordereddict") set
- 取决于
python2.7
- 取决于
和python2.6
(我在PyPI上为python-orderedict
自建的包)orderedict
setup.py中,我有:
deps = ["Flask >=0.8"]
if not hasattr(collections, "OrderedDict"): # Python 2.6
deps.append("ordereddict")
setup(
…
install_requires=deps,
…
)
我在Debian打包文档中没有找到任何关于这个问题的信息。突然间,我试着写作
Depends: ..., python2.7 | (python2.6, python-ordereddict)
但是,毫不奇怪,这是一个不起作用的错误语法:
dpkg-gencontrol: warning: can't parse dependency (python2.6
我使用的是dh_python2,${python:dependens}
提供了非常不合理的列表,如
Depends: python2.7 | python2.6, python (>= 2.7.1-0ubuntu2),
python (<< 2.8), python-flask, python-ordereddict
依赖于:python2.7 | python2.6,python(>=2.7.1-0ubuntu2),
python(一种选择是让PythonOrdereddict
依赖于python2.6
,然后让您的主包依赖于python2.7 | PythonOrdereddict
。我认为用2.7安装PythonOrdereddict
没有意义,因为ordereddict
在该版本中可用
当然,这很难看,因为它将主包的依赖关系推送到库中。另一种方法是认识到依赖关系必须是(CNF)中的命题公式。通过应用命题逻辑的方法,您可以转换
python2.7 | (python2.6, python-ordereddict)
相当于CNF
python2.7 | python2.6, python2.7 | python-ordereddict
(我承认,这也不是特别漂亮)