web-dev-qa-db-ja.com

PythonパッケージのDebianパッケージングを行うにはどうすればよいですか?

Pythonパッケージからpython-supportを使用してDebianパッケージを作成するスクリプトを作成または検索する必要があります。Pythonパッケージは純粋になりますPython C拡張なし。

テスト用のPythonパッケージは、空の__init__.pyファイルと単一のPythonモジュール、package_test.pyを含むディレクトリになります。

パッケージングスクリプト必須 python-supportを使用して、ターゲットプラットフォーム(Ubuntuのv2.5およびv2.6)でのPythonの可能な複数のインストールに対して、正しいバイトコードを提供しますJaunty。

グーグルで見つけたアドバイスのほとんどは、python-supportやpython-centralを使用しない厄介なハックの例にすぎません。

私はこれを研究するのに何時間も費やしました、そして私が思いつくことができる最善は既存のオープンソースプロジェクトからスクリプトをハックすることです、しかし私は私がしていることにどのビットが必要かわかりません。

ここで誰かがPythonパッケージからかなり非ハックな方法でDebianパッケージを作成しましたか?

Debianのパッケージングとpython-supportの知識がない状態から、動作するスクリプトを取得するまでに1週間以上かかると思い始めています。他の人はどれくらいかかりましたか?

44
fadedbee

私は既存のDebianパッケージのソースを取得し、その中の実際のパッケージをあなたのパッケージに置き換えます。 python-supportに依存するパッケージのリストを見つけるには、次のようにします。

 apt-cache rdepends python-support

Architecture: allであるパッケージを選択して、純粋なPythonパッケージにします。このリストを調べてみると、たとえばpython-flupは良い出発点かもしれません。そのようなパッケージのソースを取得するには、

apt-get source <package>

それを構築するには、

cd <packagesrc>
dpkg-buildpackage -rfakeroot

編集するときは、debianフォルダー内のファイルのみが必要であると想定してください。 flupへのすべての参照を独自のパッケージ名に置き換えます。

開始したら、完了するまでに1日かかるはずです。

20

Debパッケージを構築する正しい方法は、dpkg-buildpackageを使用することですが、少し複雑な場合もあります。代わりにdpkg -b <folder>を使用すると、Debianパッケージが作成されます。

これらは、手動コンパイル(Python、Bash、Pearl、Ruby)を必要とせずに自動的に実行される任意のバイナリまたは任意の種類のスクリプトを使用してdpkg -b <folder>でDebianパッケージを作成するための基本です。

  1. 次の構造を再作成するには、ファイルとフォルダーを作成します。

    ProgramName-Version/
    ProgramName-Version/DEBIAN
    ProgramName-Version/DEBIAN/control
    ProgramName-Version/usr/
    ProgramName-Version/usr/bin/
    ProgramName-Version/usr/bin/your_script
    

    /usr/bin/に配置されたスクリプトは、ターミナルから直接呼び出されます。スクリプトに拡張機能を追加しなかったことに注意してください。また、debパッケージの構造は、インストールされるとプログラムの構造になります。したがって、プログラムに単一のファイルがある場合にこのロジックに従うと、それをProgramName-Version/usr/bin/your_scriptの下に直接配置できますが、複数のファイルがある場合は、それらをProgramName-Version/usr/share/ProgramName/all your filesの下に配置し、/usr/bin/からスクリプトを呼び出す1つのファイルのみを/usr/share/ProgramName/の下に配置する必要があります。

  2. すべてのフォルダーのアクセス許可をrootに変更します。

    chown root:root -R /path/to/ProgramName-Version
    
  3. スクリプトの権限を変更します。

    chmod 0755 /path/to/the/script
    
  4. 最後に、次のコマンドを実行できます:dpkg -b /path/to/the/ProgramName-Versionそしてdebパッケージが作成されます! (post/pre instスクリプトや必要なものをすべて追加することもできます。通常のDebianパッケージのように機能します)

controlファイルの例を次に示します。コピーして「control」という空のファイルに貼り付け、DEBIANフォルダに置くだけです。

Package: ProgramName
Version: VERSION
Architecture: all
Maintainer: YOUR NAME <EMAIL>
Depends: python2.7, etc , etc,
Installed-Size: in_kb
Homepage: http://foo.com
Description: Here you can put a one line description. This is the short Description.
 Here you put the long description, indented by 1 space.

Debianパッケージに関する完全な記事を読むことができます ここ

私はあなたが欲しいものは http://pypi.python.org/pypi/stdeb :だと思います

stdebはPythonパッケージから新しいdistutilsコマンドsdist_dscを介してDebianソースパッケージを生成します。Debianパッケージには自動デフォルトが提供されますが、結果のパッケージの多くの側面をカスタマイズできます(カスタマイズのセクションを参照してください。追加のコマンドbdist_debは、Debianバイナリパッケージである.debファイルを作成します。

20
Nikratio

ここに投稿された回答のほとんどは時代遅れです。幸い、最近、すばらしいDebian wiki投稿が作成されました。これは、現在のベストプラクティスを説明し、PythonモジュールとアプリケーションのDebianパッケージを構築する方法を説明しています。

17
jpoppe