web-dev-qa-db-ja.com

.debを取得するためのPythonプログラムのDebianzing

目的

インストール可能な.debファイル(またはパッケージ)を作成します。クリックするとLinuxマシンにソフトウェアがインストールされ、GNOMEパネルにアイコンが表示されます。そこからこのアプリケーションを起動するために。

私が言及したこと

私は2つのdebianizingガイドを参照しました。

ガイド1

ガイド2

最初のビデオは、アクセントのせいもあり、絶望的に時代遅れだったために、理解できないビデオがありました(2007年にアップロードされました)

そして2つ目は完全にテキストでした。私は4番目のステップまで取得しました。パッケージをビルドします。しかし、私がそれをしたとき、私はガイドで与えられたものと一致しない出力を得ました。

必要なもの

私は単純なpythonプログラムを持っています。年齢を取得し、年齢が18歳未満、等しい、またはそれ以上の場合は出力します。ファイルは1つだけで、他の依存関係はありません。プログラム。これを.debに組み込みたい。

仕様

-Python 2.7

-Linux Mint

編集

私はあなたがあなたに指示した通りの正確なディレクトリ構造に従いました。そして、すべてのmyscriptcowsandbullsに置き換えました。ビルドが完了し、Debianを入手しました。インストールしてからターミナルからコマンドcowsandbullsを実行すると、次のエラーが発生しました。

Traceback (most recent call last):
  File "/usr/bin/cowsandbulls", line 9, in <module>
    load_entry_point('cowsandbulls==1.0', 'gui_scripts', 'cowsandbulls')()
  File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 337, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2311, in load_entry_point
    return ep.load()
  File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2017, in load
    entry = __import__(self.module_name, globals(),globals(), ['__name__'])
ImportError: No module named cowsandbulls
25
IcyFlame

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/の下に配置する必要があります。

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

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

    chmod 0755 /path/to/the/script
    
  3. 最後に、次のコマンドを実行できます: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.

dpkg -b <folder>を使用してビルドする場合は、 このプログラム を使用できます。これにより、1つのコマンドですべてが実行されます。定期的にパッケージを作成する場合、私が言及したすべてのことを行うのは面倒です!

*ガイドはDebianパッケージの基本から取られました。

2
rsm