9

少し奇妙な依存関係を持つ Python パッケージを debianizing しています。次のいずれかです。

  • 依存するpython2.7
  • python2.6andに依存します ( PyPIpython-ordereddict用の自作パッケージ)ordereddict

たとえば、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:Depends}のような非常に不合理なリストを提供しています

Depends: python2.7 | python2.6, python (>= 2.7.1-0ubuntu2),
    python (<< 2.8), python-flask, python-ordereddict

このような依存関係リストでは、存在しないpython-ordereddictforが必要になります。python2.7そして明らかに、私はpython2.7-minimal言うためにパッチを当てることはできませんProvides: python-ordereddict(で行われたようにpython-argparse)。

そのようなライブラリを正しくパッケージ化する方法について何か提案はありますか?

4

1 に答える 1

7

1 つのオプションは、python-ordereddict依存さpython2.6せてから、メイン パッケージを依存させることpython2.7 | python-ordereddictです。2.7はそのリリースで利用可能であるpython-ordereddictため、2.7 でインストールするのは意味がないと思います。OrderedDict

もちろん、これはメイン パッケージの依存関係をライブラリにプッシュするため、見苦しいものです。別の方法は、依存関係が連言正規形(CNF)の命題式でなければならないことを認識することです。命題論理の分配法則を適用することで、

python2.7 | (python2.6, python-ordereddict)

同等のCNFに

python2.7 | python2.6, python2.7 | python-ordereddict

(これも特にきれいではないことは認めます)。

于 2012-12-19T16:03:06.147 に答える