Ubuntuパッケージングガイド

ドキュメンテーション

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が私たちの仕事をするようにします。 あなたがしなければならないのは、ソースフォルダの名前を - の形式になるように変更することです。ここで、packagenameは小文字です。 この場合、tarballを解凍するだけで、正確に名前が付けられたソースディレクトリが生成され、そこで移動することができます:

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ライセンス:空白パッケージの種類:シングルヒット
  • メンテナ名:Captain Packagerメールアドレス:packager@coolness.com日付:2006年4月6日10:07:19 -0700確認: Enter

  • [あぶない]

    一度だけdh_make -eを実行してください 。 初めて実行した後に再度実行すると、正常に動作しません。 それを変更したい場合や間違えた場合は、ソースディレクトリを削除して、アップストリームのtarballを新たに展開してください。 その後、ソースディレクトリに移行して再試行できます。

    dh_make -eを実行すると、 次の 2つのことが行われます。

    Helloプログラムはあまり複雑ではなく、「パッケージを一から作る」セクションで見てきたように、パッケージングは​​基本ファイルをそれほど必要としません。 したがって、 .exファイルを削除してみましょう。

    cd debian rm * .ex * .EX

    こんにちは 、あなたはまた、

    * ライセンス

    * Ubuntuパッケージングガイド索引

    README.Debian (プログラムのREADMEではなく、READMEファイル)、 dirdh_installdirsで必要なディレクトリを作成するために使用)、 docsdh_installdocsでプログラムのインストールに使用)、infoファイル)をdebianディレクトリにコピーします。 これらのファイルの詳細については、「dh_makeのサンプルファイル」を参照してください。

    この時点で、 debianディレクトリにchangelogcompatcontrol著作権 、およびrulesファイルしか持たないようにしてください。 "Scratchからのパッケージング"というセクションから、新しいファイルはcompatです 。これは、使用されているdebhelperバージョン(この場合は4)を含むファイルです。

    このパッケージがhelloではなくhello-debhelperという名前になっていることを反映させるために、この場合はchangelogをわずかに調整する必要があります:

    hello-debhelper(2.1.1-1)ダッパー; 緊急度=低*初期リリース - Captain Packager Thu、2006年4月6日10:07:19 -0700

    debhelperを使用することで、変更する必要があるのは名前( hello-debhelperhelloを代入 )とソースパッケージの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_installdocsdh_installchangelogs )、ビルド後にクリーンアップする( dh_clean )などのタスクは自動的に処理される。 helloよりはるかに複雑なパッケージの多くは、 debhelperスクリプトがほとんどのタスクを処理するため、 ルールファイルはそれほど大きくはありません。 debhelperスクリプトの完全なリストについては、「 debhelperスクリプトのリスト」を参照してください。 また、それぞれのマニュアルページにもよく記載されています。 上記のルールファイルで使用されているヘルパースクリプトごとにマニュアルページ(よく書かれていて長すぎないもの)を読むのは便利です。