web-dev-qa-db-ja.com

一連のファイルをインストールするdebパッケージを作成する方法

一連のファイルをインストールする新しいdebパッケージを作成したいと思います。可能な限り、インストールの一部としてこれらのファイルを含むフォルダーを既知のフォルダーの場所に展開したいと思います。それに失敗すると、ソースフォルダーとソースファイルをパッケージ化する方法に関する知識が非常に役立ちます。

質問は-これは可能ですか?もし可能なら-どのように?

例を挙げましょう:

~/mypluginfolder/には、ファイルxyabcというサブフォルダー、およびzという別のファイルが含まれています。

このフォルダーをtarしたい:tar -cvf myfiles.tar ~/mypluginfolder

私のdebianパッケージは次のようになると思います

myfiles.tar.gz
myfiles+ppafoss_0.1-1/
   myfiles.tar
   DEBIAN
      changelog, compat, control, install, rules source

何らかの方法でmyfiles.tarを既知のフォルダーの場所に展開することは可能ですか?

/usr/share/rhythmbox/plugins/

したがって、最終結果は次のようになります。

/usr/share/rhythmbox/plugins/mypluginfolder
/usr/share/rhythmbox/plugins/mypluginfolder\x
/usr/share/rhythmbox/plugins/mypluginfolder\y
/usr/share/rhythmbox/plugins/mypluginfolder\abc\z

ランチパッドがソースを必要とする場合、ソースフォルダーとファイルをdebパッケージ構造のどこにドロップすべきかについてのアドバイスが求められます。


これは最終的に一連の個別のランチパッドPPAパッケージになります。

私が好むのは(しかし達成できないかもしれません...)私のパッケージを最小限に保つことです-テンプレートから一連のパッケージを作成し、最小限の変更を行います(changelogなど+ tarファイル/ファイル&フォルダ構造) 。

23
fossfreedom

以下では、ソースが開いている(例:Pythonスクリプト)と想定しているため、どのアーキテクチャ(例:AMD64またはi386)にもバインドされていないため、「すべて」です。 Cソースがある場合は、ソースcontrolファイルでArchitecture: AMD64 i386を使用する必要があります。


launchpadの準備ができたパッケージの作成

これは最終的に一連の個別のランチパッドPPAパッケージになります。

私が好むのは(しかし達成できないかもしれません...)私のパッケージを最小限に保つことです-テンプレートから一連のパッケージを作成し、最小限の変更を行います(changelogなど+ tarファイル)。

ランチパッドはソースパッケージのみを受け入れるため、正しい場所にファイルをインストールするrulesを作成します。便宜上、 debhelper を使用します。ファイルのあるディレクトリは次のようになります。

debian/changelog
debian/control
debian/rules
debian/compat
mypluginfolder/...

debian/copyrightファイルは、パッケージに関連付けられたライセンスについてユーザーに通知するのにも役立ちます。一部のファイルを抽出するだけでよいので、postinstスクリプトは必要ないと思います。 compatにはdebhelperの互換性レベルを含める必要があります(「8」など)。 (詳細については debhelperのマニュアルページ を参照してください)

changelogファイルは、dchパッケージから利用可能なdevscriptsコマンドで編集できます。 rules(debhelperを使用)には以下が含まれている必要があります。

#!/usr/bin/make -f
%:
    dh $@
override_dh_install:
    dh_install mypluginfolder/ /usr/share/rhythmbox/plugins

chmod 755 debian/rulesを使用して実行可能にします。ソースパッケージは、debuild -Sを使用してビルドできます。 <package-name>-<version>という名前のディレクトリにあることを確認してください。 override_の動作とdhコマンドの詳細については、 マニュアルページ を参照してください。

Debian New Maintainers 'Guide は、これを理解するのに非常に貴重でした。読むことをお勧めします。パッケージの例は https://github.com/Bumblebee-Project/bumblebee-ppa にあります。


既存のファイルツリーからパッケージを作成する

dpkg-deb -b は、既存のファイルツリーからtarballを作成するために使用できます。最初に、パッケージにちなんだ名前のディレクトリの作成から始めます。 mypluginという名前を付けて、/usr/share/rhythmbox/plugins/mypluginfolderに入れると仮定します。さらに、パッケージ情報を保存するためのDEBIANディレクトリ(大文字!)を作成します。

mkdir -p myplugin/usr/share/rhythmbox/plugins/mypluginfolder
mkdir myplugin/DEBIAN

ファイルをコピーします。

cp -r ~/mypluginsfolder myplugin/usr/share/rhythmbox/plugins

次に、パッケージを説明するmyplugin/DEBIAN/controlにあるいわゆる control ファイルが必要になります。このようなファイルの内容は次のとおりです。

Package: myplugin
Version: 1.0-1
Maintainer: You <[email protected]>
Architecture: all
Description: plugins for Rhythmbox
 Longer description here
 .
 As you can see, new paragraph are split by a single dot,
 and lines have to be indented by one space.

これで、オプションでパッケージの内容を確認できます。次のコマンドは、mypluginのファイルとディレクトリエントリの内容を一覧表示します。

find myplugin -ls

満足したら、現在のディレクトリにパッケージをビルドします。

dpkg-deb -b myplugin .

この例では<package>_<version>_<architecture>.debであるmyplugin_1.0-1_all.debのような名前の新しいファイルが表示されます。 lessプログラムを使用して、ファイルを覗くことができます。たとえば、less myplugin_1.0-1_all.deb

31
Lekensteyn