単一のPythonスクリプトのdebパッケージを作成するにはどうすればよいですか?


78

debパッケージとして配布したい単一のPythonスクリプトがあります。これは、Unityパネルに現地日付を表示するインジケーターです。私は従ったスクリプトまたはバイナリからの.debパッケージを作成し、それが失敗したので、私はdebパッケージを作成することができませんでした。

誰かが私にすべきことについて段階的な指示を与えることができますか?私の知る限り、このスクリプトはに依存していpython-appindicatorます。

注:
Debian / Ubuntuパッケージング手順へのリンクは必要ありません。それらのほとんどを見てきました。初心者に優しいとは思いません。


6
DebianとUbuntuのパッケージング手順初心者にはわかりませんが(私を信じてください)、debian を作成する多くのGUIアプリケーションは、lintianなどの最終的なパッケージチェッカーを実行すると、大量のエラーを発生させます。パッケージングを真剣に考えている場合は、それを厳しくして指示に従って作業することが最善の方法です:)
トーマスボックスリー

パッケージについては知りませんが、追加しようとしている機能はUnityに組み込まれています。
それはウィレム

回答:


84

以下は、Pythonスクリプトのソースパッケージがどのように見えるかの基本的な例です。パッケージングのチュートリアルのほとんどは少し複雑ですが、問題にぶつかった場合に本当に役立ちます。そうは言っても、まずDebianパッケージを見るだけで、Debianパッケージの基本を学びました。apt-get source似たようなもので、例によって学びます。

基本的なソースパッケージレイアウトは次のとおりです。

my-script/
    -- myScript
    -- debian/
        -- changelog
        -- copyright
        -- compat
        -- rules
        -- control
        -- install

dch --createディレクトリで実行して、適切にフォーマットされたdebian/changelogエントリを作成します。

debian / copyrightは次のようになります。

Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: myScript
Upstream-Contact: Name, <email@address>

Files: *
Copyright: 2011, Name, <email@address>
License: (GPL-2+ | LGPL-2 | GPL-3 | whatever)
 Full text of licence.
 .
 Unless there is a it can be found in /usr/share/common-licenses

debian / compatは次のようになります。7

debian / rules

#!/usr/bin/make -f

%:
    dh $@ --with python2

スペースではなく、「タブ」の前になければならないことに注意してくださいdh $@ --with python2

debian / control

Source: my-script
Section: python
Priority: optional
Maintainer: Name, <email@address>
Build-Depends: debhelper (>= 7),
               python (>= 2.6.6-3~)
Standards-Version: 3.9.2
X-Python-Version: >= 2.6


Package: my-script
Architecture: all
Section: python
Depends: python-appindicator, ${misc:Depends}, ${python:Depends}
Description: short description
 A long description goes here.
 .
 It can contain multiple paragraphs

debian / install

myScript usr/bin/

このファイルは、どのファイルがどのフォルダーにインストールされるかを示します。

今すぐビルド debuild --no-tgz-check

これにより、機能的なdebパッケージが作成されます。Lintianはorig.tar.gzの不足に関していくつか警告を出しますが、tarballのリリースを行う適切なアップストリームプロジェクトを作成する予定がない限り、現時点では無視してください。


12
パッケージャー(およびバックポーター)として、私はpythonスクリプトをかなり頻繁にパッケージ化します。ここでの答えは、単一のpythonスクリプト用のパッケージを作成するために何をすべきかについての最も完全な説明であると安全に言えます。
トーマスウォード

2
Python 3用に更新してもらえますか?私たちは中に変更を加える必要があると思いdebian/rulesとをdebian/control、私はそれについてはよく分からないです。
アディティア

1
@Aditya、多分新しい質問がPython3にありますか?答えはそれほど変わりませんが、この答えは、Pythonスクリプトをパッケージ化する方法の最も単純な/最低限の例になることを目指しています。複数の実装でそれを混乱させたいかどうかはわかりません。
アンドリューサム14年

@andrewsomething:そして、あなたが興味を持つであろう。この1というコメントを残して私を促さ...編集のビットが1つに要求され、私はそれで私の手をしようと...
アーディティヤ

1
ライブラリはどうですか?Pythonスクリプトは、ライブラリをインポートする場合、それは動作しません
D.Snap

18
  1. 自宅に任意の名前のフォルダーを作成します。例:mypyscript
  2. フォルダーを開き、「DEBIAN」と「usr」という名前の2つのフォルダーを作成します
  3. DEBIANフォルダーを開きます。そこで「control」という名前のテキストファイル(拡張子なし)を作成します。
  4. 「コントロール」を開き、次のように入力してDEBIANに保存します

    Package: mypyscript
    Version: 0.01
    Architecture: all
    Maintainer: your name<your mail id>
    Installed-Size: 2
    Depends: python-appindicator
    Section: extras
    Priority: optional
    Homepage: your homepage
    Description: describe
    
  5. mypyscriptという名前のフォルダーに戻ります。「usr」を開きます。「bin」という名前のフォルダーを作成します。「bin」を開き、そこにpythonscriptファイルを貼り付けます。

  6. メニューエントリを作成することもできます。しかし、それは必須ではありません。
  7. 「mypyscript」フォルダーがあるホームフォルダーに戻るか、ファイルブラウザーを閉じます。
  8. ターミナルを開きます。端末がホームフォルダーにあることを確認してください。入力dpkg -b mypyscript.ThenのEnterキーを押します。数秒でdebパッケージの準備ができました

注:「コントロール」ファイルに適切に記入してください。アポストロフィを使用しないでください。名前を示すためだけのものです。


1
よく働く!受け入れられた答えは複雑です。
SuB 14年

「myscript」の許可を755に変更し、その所有者をrootに変更することを忘れないでください。
SuB 14年

メニューエントリを作成するにはどうすればよいですか?
行うには

9

パッケージを作成するためのGUIツールであるDebreateを試すことができます。


Debcreateはクールです。私は今のところそれが好きで、Pythonソースコードからビルドするために今日それを使い始めました。
answerSeeker

3

私はここで、すぐにチェックアウト迅速なアプリケーションを作成するための素晴らしいと生成debファイルは、それをGoogleやチュートリアルを見つけることができるでしょうhttp://developer.ubuntu.com/


はい、私も追加したいです。wiki.ubuntu.com/Quickly、あなたは私のような動画を好む場合は、ユーチューブは偉大なリソースです
Jiew孟

パッケージを単に.debパッケージに単純に変換することはできません
Archisman Panigrahi

2

pkgme​​を試してください。正常に機能するはずです。

経由でインストール:

sudo apt install pkgme

経由で実行:

pkgme
debuild

(新しい開発者は実行する必要があります。これを正しく行うには、開発キー署名gpg --gen-key参照してください)



0

Debreateを使用してみてください

これは、上記のWebサイトからPPAをダウンロードしたくない場合にもPPAを使用できるパッケージやものを作成するためのGuiインターフェイスです。

sudo add-apt-repository ppa:antumdeluge/<ppaname>; sudo apt update; sudo apt install debreate

私はPPAを1行のコードとして実行するように凝縮しました!すばらしい質問に感謝し、これらのコード行を端末に送り続けるようにしてください!

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.