[ 前のページ ] [ 目次 ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 次のページ ]


Debian 新メンテナガイド
第 6 章 - パッケージの構築


これでパッケージを構築する準備が整いました。


6.1 完全な(再)構築

完全なパッケージの(再)構築を行うには、

ソースディレクトリーで以下のコマンドを実行してください:

     $ dpkg-buildpackage

このコマンドはバイナリパッケージとソースパッケージを構築する作業をすべて行ってくれます。これには以下の作業が含まれます。

途中で GPG の秘密鍵を 2 回入力する必要がありますが、 それ以外はこのプログラムにすべて任せておけば大丈夫です。

一連の作業が終わった後、上記ディレクトリ(~/gentoo)には以下のファイルが生成されているはずです。

.dsc.changes ファイルに記載されている長い数字の羅列は各ファイルの MD5/SHA1/SHA256 チェックサムです。パッケージをダウンロードした人は、md5sum(1)sha1sum(1)sha256sum(1)を使って整合性をテストすることができます。もし、数字が一致しない場合には、ファイルが壊れているか、あるいは何者かによって改ざんされていると分かるわけです。


6.2 Autobuilder

Debian は、様々なアーキテクチャ上でbuilddデーモンを走らせているautobuilder networkによって、色々なportsをサポートしています。あなたがそれらを明示的に使う必要はありませんが、パッケージがどうなるのかを知っておくと良いでしょう。それでは、あなたのパッケージがどのように異なるアーキテクチャ向けに再構築されるのかを見ていきましょう。[44]

"Architecture: any"のパッケージは、atuobuilder システムによって再構築されます。それは、

そして、ソースディレクトリで次のコマンドを実行します:

     $ dpkg-buildpackage -B

これは、別のアーキテクチャ上で、アーキテクチャ依存のバイナリパッケージを生成する作業をすべて行ってくれます。これには以下の作業が含まれます。

あなたのパッケージが他のアーキテクチャ用にも存在するのは、このためです。

Build-Depends-indepフィールドのパッケージは、通常のパッケージの場合はインストールを要求されますが(参照 完全な(再)構築, 第 6.1 節)、autobuilderシステムは、アーキテクチャ依存のパッケージのみをビルドするので、インストールは必須ではありません。[45] オートビルダーを使用した場合と普通のパッケージングとのこの違いは、要求パッケージを debian/controlファイルのBuild-DependsBuild-Depends-indepに記録するかどうかで決定されます。(参照 controlファイル, 第 4.1 節)


6.3 アップロード用orig.tar.gzの内容

はじめてパッケージをアーカイブにアップロードする際は、オリジナルのorig.tar.gzソースファイルを含めなければなりません。最新のchangelogエントリーが、最初に上流から投げられたものと違う場合は、dpkg-buildpackageに"-sa"オプションを付けて提供しなければなりません。逆に、"-sd"オプションを付けると、オリジナルのorig.tar.gz ソースファイルを強制的に除外します。


6.4 debuildコマンド

dpkg-buildpackageによる自動構築プロセスは、debuildによりさらに進めることができます。詳しくはdebuild(1)を参照してください。

debuildコマンドのカスタマイズは/etc/devscripts.conf~/.devscriptsを用いて行います。少なくとも以下の設定をすると良いでしょう。

     DEBSIGN_KEYID="Your_GPG_keyID"
     DEBUILD_LINTIAN=yes
     DEBUILD_LINTIAN_OPTS="-i -I --show-overrides"

これによって、パッケージは常にあなたのGPG鍵でサインされ、lintianコマンドで詳細にチェックされます。(これはスポンサーの作業にも適しています。)

以下のように一般ユーザアカウントから、簡単にソースを除去しパッケージを再ビルドできます。

     $ debuild

dpkg-buildpackageに"-sa"オプションを付けてオリジナルのorig.tar.gzソースファイルを含める方法も覚えておきましょう。

     $ debuild -sa

ソースツリーの掃除も簡単です。

     $ debuild clean

6.5 pbuilderパッケージ

ビルド依存を確認するための無菌室 (chroot)なビルド環境ではpbuilderパッケージが非常に便利です。[46] これにより、異なるアーキテクチャ向けのオートビルダーの下において、sid環境での、ソースからのクリーンなビルドが保証されます。また、深刻なFTBFS(Fails To Build From Source)バグを防ぎます。FTBFS バグは常に RC (release critical) に分類されます。Debianパッケージのオートビルダーについてもっと知りたい場合はhttp://buildd.debian.org/を参照してください。

それでは、pbuilderをカスタマイズしてみましょう。

これにより、~/.gnupg/ディレクトリにある、あなたのGPGキーで生成されたパッケージへの署名を許可します。

それでは、初めてのローカルpbuilder chroot システムを初期化しましょう。

     $ sudo pbuilder create

既に完全なソースパッケージがあれば、foo.orig.tar.gzファイル、 foo.debian.tar.gzファイル、foo.dscファイルが存在するディレクトリで、ローカルpbuilder chrootシステムをアップデートし、バイナリパッケージをビルドする為に以下のコマンドを発行しましょう。

     $ sudo pbuilder --update
     $ sudo pbuilder --build foo.dsc

dpkg-buildpackageに"-sa"オプションを付けてオリジナルのorig.tar.gzソースファイルを含める方法も覚えておきましょう。

     $ sudo pbuilder --build --debbuildopts "-sa" foo.dsc

新しくビルドしたパッケージは非ルート所有者として/var/cache/pbuilder/result/に置かれます。

更新されたソースツリーが既にあり、一致するソースパッケージを生成していない場合は、代わりに、debian ディレクトリが存在するディレクトリで、以下のコマンドを発行します。

     $ sudo pbuilder --update
     $ pdebuild

dpkg-buildpackageに"-sa"オプションを付けてオリジナルのorig.tar.gzソースファイルを含める方法も覚えておきましょう。

     $ pdebuild --debbuildopts "-sa"

"pbuilder --login --save-after-login"コマンドで、chroot環境にログインし、好きに設定することができます。シェルプロンプトから^D (Control-D)で抜けると、その環境を保存しておくことができます。

最新のlintianコマンドはchroot環境から次のように設定されたフックスクリプト/var/cache/pbuilder/hooks/B90lintianを使用して実行することができます。[47]

     #!/bin/sh
     set -e
     install_packages() {
         apt-get -y --force-yes install "$@"
         }
     install_packages lintian
     echo "+++ lintian output +++"
     su -c "lintian -i -I --show-overrides /tmp/buildd/*.changes" - pbuilder
     # use this version if you don't want lintian to fail the build
     #su -c "lintian -i -I --show-overrides /tmp/buildd/*.changes; :" - pbuilder
     echo "+++ end of lintian output +++"

sid環境向けのパッケージを正しくビルドするには最新のsid環境が必要です。sidには環境を移行するには望ましくない問題を抱えていることが少なくありません。pbuilderパッケージはそのような状況に対処できるようになっています。

stable/updatesstable-proposed-updatesがリリースされた後、stableパッケージのアップデートが必要な場合があります。[48]そのような場合に、 即座にアップデートしない言い訳として"sid を使っているから" というのは不十分です。pbuilderパッケージは、同じCPUアーキテクチャのほぼ全てのDebian派生であるディストリビューションへのアクセスを手助けします。

詳しくは、http://www.netfort.gr.jp/~dancer/software/pbuilder.htmlpdebuild(1)pbuilderrc(5)pbuilder(8)を参照してください。


6.6 git-buildpackageコマンドとその仲間

上流がソースコード管理システム(VCS)を使っているのであれば、同様に使用することを考えるべきです。それによって、マージと上流パッチの取捨選択がより簡単になります。DebianパッケージをVCS用にビルドするための特別なラッパースクリプトのパッケージもいくつかあります。

これらのパッケージはパッケージのビルドを自動化したい上級者にquiltコマンドを使うよりも洗練された作業環境を提供します。このチュートリアルでは細かい説明はしません。[49]


6.7 部分的な再構築

大規模なパッケージの場合には、debian/rulesをちょっといじるたびに、毎回最初からパッケージの再構築をやりなおすのは手間です。テスト目的であれば、以下の方法で上流(upstream)ソースを再構築をせずに.deb ファイルを生成することができます。 [50]:

     $ fakeroot debian/rules binary

また、以下の方法を使えば生成可能かどうかをチェックすることができます。

     $ fakeroot debian/rules build

最終的にきちんとテストが完了したら、正しい手順に従ってパッケージを最初から再構築することを忘れないでください。おそらく、きちんとアップロードできないでしょう。


[ 前のページ ] [ 目次 ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 次のページ ]


Debian 新メンテナガイド

version 1.2.25, 2010-12-21 14:06:56 UTC

Josip Rodin joy-mg@debian.org

翻訳:倉澤 望 nabetaro@debian.or.jp
翻訳:八津尾 雄介 yyatsuo@gmail.com
翻訳:佐々木 洋平 uwabami@gfd-dennou.org
翻訳:倉敷 悟 lurdan@gmail.com
翻訳:青木 修 osamu@debian.org