8

distutils を使用して、いくつかのライブラリを deb にパッケージ化する作業を行っています。

おそらく/debian、setup.py を正しく構成し、deb 用の適切なファイルを用意する必要があります。

現在、リポジトリは次のようになっています。

library_name/
 __init__.py
 liba.py
 libb.py
 ...

実行できるように、他のプログラムへの依存関係として追加されていますfrom library_name import liba

easy_installグーグルは、アプローチを含まずに、Ubuntuに展開する3〜5の異なる方法を明らかにします。ドキュメントは大部分がばらばらで、古くなっているようです。

私は特に、Python のバージョンに関係なく、ライブラリが正しいシステム ディレクトリに配置されるようにしています。また、もちろん、シームレスにアンインストールまたはアップグレードできることも重要です。

最終的な目標は、他のプログラムのパッケージ依存関係として追加されるローカル サーバーに deb を作成することです。

これを行うための標準的な「簡単で簡単な」方法は何ですか?

4

2 に答える 2

2

を使用pkgmeすると、debian ファイルを非常に高速に作成できます。私の知る限り、 のような他の同様のツールとは異なりdh-makepkgme設計はプラグインに基づいています。つまり、python が検出されると、setup.pyファイルから情報が正しく抽出されます。

詳細については、Ubuntu Developer Weekイベントでのこの最近の講演をご覧ください。

于 2012-02-07T20:03:50.320 に答える
2

私も以前にUbuntu/DebianのPythonパッケージングと戦ったことがありますが、ドキュメントが混乱している/存在しない/誤解を招くものであることに同意します。可能な限り単純な状況のためのクイックスタートガイドが本当に必要です。

さて、ここです!

ツールをインストールします。ただし、これはやり過ぎかもしれません。

sudo apt-get install build-essential python-all dh-make devscripts fakeroot

$packagename-$versionコードを、 like library_name-0.6.0/、およびそのディレクトリにチェックアウトすることから始めますcd。次のように実行しますdh_make -i -c gpl3 -e nfirvine@example.com(dh_make --help他のオプションについては、を参照してください)。すべてがうまくいけば、エラーは発生せず、大量のファイルが に作成され./debianます。無視または削除でき./debian/*.{ex,EX}ます。これらは単なる例です。

これらすべてのファイルをいずれかの時点で調べる必要があるかもしれませんが、少なくとも、編集./debian/controlして./debian/rules. コントロールのすべてのテンプレート フィールド、つまりDescriptionとに入力する必要がありHomepageます。Package行を次のように変更しpython-$libnameます。Dependscontrol

Depends: ${misc:Depends}, ${python:Depends}

これにより、バイナリ パッケージpython-$libnameが必要な Python のバージョンに依存するようになります。( ${python:Depends} is a "substvar"; they're created when we build; you can inspect their values after your first build in./debian/$packagename.substvars`.)

の行をrulesからdh $@に変更dh $@ --with python2し、先頭のタブを保持します (これは Makefile です)。これにより、debhelper は python2 アドオンを使用します。デフォルトでは引き続き pysupport を使用します (これは非推奨です、覚えていますか?)。

次に、ソース ルートで次のコマンドを実行します。

debuild -us -uc

これにより、署名せずにパッケージがビルドされます (後で行う方法を学ぶ必要があります)。おなじみの setuptools の行 (2 回: 2.6 用に 1 回、2.7 用に 1 回)、多数の dh_ アドオン、およびその他の構築作業が表示されるはずです。最後に lintian の出力があり、一般的なパッケージングの問題を検出できます。これらを修正する必要があります。lintian やその友人たちが不満を言っているのは、パッケージング ルールを順守しているだけです。

ところで、このページではの非推奨について話しています。python-supportpython-central

于 2012-02-08T01:40:10.687 に答える