ドキュメンテーション
Debhelperによるパッケージング
[重要]
要件: 「パッケージを最初からパッケージングする」セクションの要件とdebhelperおよびdh-make
パッケージャーとして、前のセクションで行ったように、最初からパッケージを作成することはめったにありません。 あなたが想像しているように、 ルールファイルの多くのタスクや情報は、たとえばパッケージに共通しています。 パッケージ化をより簡単かつ効率的にするために、 debhelperを使用してこれらのタスクを支援することができます。 Debhelperは、パッケージ構築のプロセスを自動化する一連のPerlスクリプト(接頭辞dh_ )です。 これらのスクリプトを使うと、Debianパッケージの構築は非常に簡単になります。
この例では、GNU Helloパッケージを再度ビルドしますが、今度はUbuntu hello-debhelperパッケージとの比較を行います。 ここでも、作業するディレクトリを作成します。
mkdir〜/ hello-debhelper cd〜/ hello-debhelper wget http://ftp.gnu.org/gnu/hello/hello-2.1.1.tar.gz mkdir ubuntu cd ubuntu
次に、Ubuntuソースパッケージを入手してください:
apt-getソースhello-debhelper cd ..
前の例と同様に、最初に行う必要があるのは元の(上流の)タールボールを解凍することです。
tar -xzvf hello-2.1.1.tar.gz
前の例で行ったように、上流のtarballをhello_2.1.1.orig.tar.gzにコピーするのではなく、 dh_makeが私たちの仕事をするようにします。 あなたがしなければならないのは、ソースフォルダの名前を
cd hello-2.1.1
ソースの初期「debianization」を作成するために、dh_makeを使用します 。
dh_make -e your.maintainer@address -f ../hello-2.1.1.tar.gz
dh_makeはあなたに一連の質問をします:
パッケージのタイプ:単一バイナリ、複数バイナリ、ライブラリ、カーネルモジュールまたはcdbs? [s / m / l / k / b] s
パッケージ名:helloバージョン:2.1.1ライセンス:空白パッケージの種類:シングルヒット〜 li> メンテナ名:Captain Packagerメールアドレス:packager@coolness.com日付:2006年4月6日10:07:19 -0700確認: Enter
[あぶない]
一度だけdh_make -eを実行してください 。 初めて実行した後に再度実行すると、正常に動作しません。 それを変更したい場合や間違えた場合は、ソースディレクトリを削除して、アップストリームのtarballを新たに展開してください。 その後、ソースディレクトリに移行して再試行できます。
dh_make -eを実行すると、 次の 2つのことが行われます。
- hello_2.1.1.orig.tar.gzファイルを親ディレクトリに作成し、
- debianに必要な基本ファイルと必要な多くのテンプレートファイル(.ex)を作成します。
Helloプログラムはあまり複雑ではなく、「パッケージを一から作る」セクションで見てきたように、パッケージングは基本ファイルをそれほど必要としません。 したがって、 .exファイルを削除してみましょう。
cd debian rm * .ex * .EX
こんにちは 、あなたはまた、
* ライセンス
README.Debian (プログラムのREADMEではなく、READMEファイル)、 dir ( dh_installdirsで必要なディレクトリを作成するために使用)、 docs ( dh_installdocsでプログラムのインストールに使用)、infoファイル)をdebianディレクトリにコピーします。 これらのファイルの詳細については、「dh_makeのサンプルファイル」を参照してください。
この時点で、 debianディレクトリにchangelog 、 compat 、 control 、 著作権 、およびrulesファイルしか持たないようにしてください。 "Scratchからのパッケージング"というセクションから、新しいファイルはcompatです 。これは、使用されているdebhelperバージョン(この場合は4)を含むファイルです。
このパッケージがhelloではなくhello-debhelperという名前になっていることを反映させるために、この場合はchangelogをわずかに調整する必要があります:
hello-debhelper(2.1.1-1)ダッパー; 緊急度=低*初期リリース - Captain PackagerThu、2006年4月6日10:07:19 -0700
debhelperを使用することで、変更する必要があるのは名前( hello-debhelperにhelloを代入 )とソースパッケージのBuild-Dependsフィールドにdebhelper(> = 4.0.0)を追加することだけです。 hello-debhelper用のUbuntuパッケージは以下のようになります:
Ubuntuのhello-debhelperパッケージの著作権ファイルとpostinstスクリプトとprermスクリプトは、 "Packaging From Scratch"セクション以降は変更されていないので、コピーすることができます。 また、 ルールファイルを検査して検査することもできます。
cp ../../ubuntu/hello-debhelper-2.1.1/debian/copyright。 cp ../../ubuntu/hello-debhelper-2.1.1/debian/postinst。 cp ../../ubuntu/hello-debhelper-2.1.1/debian/prerm。 cp ../../ubuntu/hello-debhelper-2.1.1/debian/rules。
最後に見なければならないファイルは、 ルールです 。ここでは、 debhelperスクリプトの力が見えます。 debhelperバージョンのルールはいくらか小さくなっています(「ルール」と呼ばれるセクションからバージョンの72行ではなく54行です)。
debhelperのバージョンは次のようになります。
CFLAGS + = -O2 endif #export DH_VERBOSE = 1 clean(#)/ usr-bin / make -f package = hello-debhelper CC = gcc CFLAGS = -g -Wall ifeq(、$(findstring noopt、$(DEB_BUILD_OPTIONS))) :dh_testdir dh_clean rm -fビルド - $(make)-i distclean install:ビルドdh_clean dh_installdirs $(MAKE)prefix = $(CURDIR)/ debian / $(パッケージ)/ usr \ mandir = $(CURDIR)/ debian / $ ./configure --prefix = / usr $(MAKE)CC = "$(CURDIR)/ debian / $(package)/ usr / share / info \ installビルド:/ usr / share / (CC) "CFLAGS =" $(CFLAGS) "
build build binary-indep:install#このパッケージで生成されたアーキテクチャに依存しないファイルはありません。 そこにあれがあれば、#ここに作られるでしょう。 binary-arch:install dh_testdir -a dh_testroot -a dh_installdocs -a NEWS dh_installchangelogs -a変更ログdh_strip -a dh_compress -a dh_fixperms -a dh_installdeb -a dh_shlibdeps -a dh_gencontrol -a dh_md5sums -a dh_builddeb -aバイナリ:binary-indep binary- arch .PHONY:バイナリバイナリアーチバイナリ独立クリーンルート
正しいディレクトリ( dh_testdir )にあるかどうかをテストする、root権限でパッケージをビルドする( dh_testroot )、ドキュメントをインストールする( dh_installdocsとdh_installchangelogs )、ビルド後にクリーンアップする( dh_clean )などのタスクは自動的に処理される。 helloよりはるかに複雑なパッケージの多くは、 debhelperスクリプトがほとんどのタスクを処理するため、 ルールファイルはそれほど大きくはありません。 debhelperスクリプトの完全なリストについては、「 debhelperスクリプトのリスト」を参照してください。 また、それぞれのマニュアルページにもよく記載されています。 上記のルールファイルで使用されているヘルパースクリプトごとにマニュアルページ(よく書かれていて長すぎないもの)を読むのは便利です。