[ 前のページ ] [ 目次 ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 次のページ ]
これでパッケージを構築する準備が整いました。
完全なパッケージの(再)構築を行うには、
build-essentialパッケージ、
Build-Dependsに挙げられているパッケージ(参照controlファイル, 第 4.1
節)
Build-Depends-indepに挙げられているパッケージ(参照
controlファイル, 第 4.1
節)が全てインストールされていなければなりません。
ソースディレクトリーで以下のコマンドを実行してください:
$ dpkg-buildpackage
このコマンドはバイナリパッケージとソースパッケージを構築する作業をすべて行ってくれます。これには以下の作業が含まれます。
ソースツリーの掃除 ("debian/rules clean")
ソースパッケージの構築 ("dpkg-source -b")
プログラムの構築 ("debian/rules build")
バイナリパッケージの構築 ("fakeroot debian/rules binary")
gpg
を使用したソース.dscファイルへの署名
dpkg-genchangesおよびgpgを使用したアップロード用.changesファイルの生成と署名
途中で GPG の秘密鍵を 2 回入力する必要がありますが、 それ以外はこのプログラムにすべて任せておけば大丈夫です。
一連の作業が終わった後、上記ディレクトリ(~/gentoo)には以下のファイルが生成されているはずです。
gentoo_0.9.12.orig.tar.gz
これは単に Debian 標準に合わせるために名前を変更しただけで、 中身はオリジナルなソースコードの tar アーカイブです。これはもともと、"dh_make -f ../gentoo-0.9.12.tar.gz"で作成されたということを覚えておいてください。
gentoo_0.9.12-1.dsc
これはソースコードの内容の概要です。このファイルは
あなたのcontrolファイルから生成され、dpkg-source(1)によって
ソースを展開する時に使われます。また、GPG
で署名されているので、本当にあなた自身が作成したものかどうかを利用者が検証できます。
gentoo_0.9.12-1.debian.tar.gz
この圧縮されたターボールには、あなたのdebianディレクトリーの中身が含まれています。オリジナルのソースコードに行った変更や追加などの情報は全てdebian/patches内に、quiltパッチとして保存されます。
上記3つのファイルを使えば誰でも簡単にあなたのパッケージをスクラッチから構築することができます。3つのファイルを任意の場所にコピーし、"dpkg-source -x gentoo_0.9.12-1.dsc"を実行するだけです。[43]
gentoo_0.9.12-1_i386.deb
これは、あなたが生成した完全なバイナリパッケージです。他の全てのパッケージと同じく、dpkgを使ってインストールしたり削除したりできます。
gentoo_0.9.12-1_i386.changes
このファイルは現在のリビジョンパッケージにおける変更点をすべて記載したもので、Debian
FTP
アーカイブ管理プログラムによって、バイナリおよびソースパッケージをFTPアーカイブにインストールするために利用されます。このファイルの一部は、changelogファイルと.dscをもとに生成されます。また、GPG
で署名されているので、本当にあなた自身が作成したものかどうかを利用者が検証できます。
パッケージの保守管理を続けていくと、挙動の変更や新機能の追加をすることがあります。あなたのパッケージをダウンロードする人は、このファイルを見れば何が変わったのか、一目でわかります。また、このファイルの中身はDebian
アーカイブ管理プログラムによって、debian-devel-announce@lists.debian.orgメーリングリストへ流されます。
.dsc と .changes
ファイルに記載されている長い数字の羅列は各ファイルの
MD5/SHA1/SHA256
チェックサムです。パッケージをダウンロードした人は、md5sum(1)、
sha1sum(1)、sha256sum(1)を使って整合性をテストすることができます。もし、数字が一致しない場合には、ファイルが壊れているか、あるいは何者かによって改ざんされていると分かるわけです。
Debian
は、様々なアーキテクチャ上でbuilddデーモンを走らせているautobuilder
networkによって、色々なportsをサポートしています。あなたがそれらを明示的に使う必要はありませんが、パッケージがどうなるのかを知っておくと良いでしょう。それでは、あなたのパッケージがどのように異なるアーキテクチャ向けに再構築されるのかを見ていきましょう。[44]
"Architecture: any"のパッケージは、atuobuilder システムによって再構築されます。それは、
build-essentialパッケージと
Build-Dependsに挙げられているパッケージ (参照 controlファイル, 第 4.1
節)を確実にインストールします。
そして、ソースディレクトリで次のコマンドを実行します:
$ dpkg-buildpackage -B
これは、別のアーキテクチャ上で、アーキテクチャ依存のバイナリパッケージを生成する作業をすべて行ってくれます。これには以下の作業が含まれます。
ソースツリーの掃除 ("debian/rules clean")
プログラムの構築 ("debian/rules build")
アーキテクチャ依存のバイナリパッケージを構築("fakeroot debian/rules binary-arch")
gpg
を使用したソース.dscファイルへの署名
dpkg-genchangesおよびgpgを使用したアップロード用.changesファイルの生成と署名
あなたのパッケージが他のアーキテクチャ用にも存在するのは、このためです。
Build-Depends-indepフィールドのパッケージは、通常のパッケージの場合はインストールを要求されますが(参照
完全な(再)構築, 第 6.1
節)、autobuilderシステムは、アーキテクチャ依存のパッケージのみをビルドするので、インストールは必須ではありません。[45]
オートビルダーを使用した場合と普通のパッケージングとのこの違いは、要求パッケージを
debian/controlファイルのBuild-Depends や
Build-Depends-indepに記録するかどうかで決定されます。(参照
controlファイル, 第 4.1
節)
orig.tar.gzの内容
はじめてパッケージをアーカイブにアップロードする際は、オリジナルのorig.tar.gzソースファイルを含めなければなりません。最新のchangelogエントリーが、最初に上流から投げられたものと違う場合は、dpkg-buildpackageに"-sa"オプションを付けて提供しなければなりません。逆に、"-sd"オプションを付けると、オリジナルのorig.tar.gz
ソースファイルを強制的に除外します。
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
pbuilderパッケージ
ビルド依存を確認するための無菌室
(chroot)なビルド環境ではpbuilderパッケージが非常に便利です。[46]
これにより、異なるアーキテクチャ向けのオートビルダーの下において、sid環境での、ソースからのクリーンなビルドが保証されます。また、深刻なFTBFS(Fails
To Build From Source)バグを防ぎます。FTBFS バグは常に RC (release
critical)
に分類されます。Debianパッケージのオートビルダーについてもっと知りたい場合はhttp://buildd.debian.org/を参照してください。
それでは、pbuilderをカスタマイズしてみましょう。
/var/cache/pbuilder/resultディレクトリを、ユーザーから書き込めるように設定してください。
フックスクリプトを置くために、ユーザーからの書き込みが可能なディレクトリを作成してください。例)
/var/cache/pbuilder/hooks
~/.pbuilderrc か /etc/pbuilderrc
に以下のように設定します。
AUTO_DEBSIGN=yes
HOOKDIR="/var/cache/pbuilder/hooks"
これにより、~/.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/updatesやstable-proposed-updatesがリリースされた後、stableパッケージのアップデートが必要な場合があります。[48]そのような場合に、
即座にアップデートしない言い訳として"sid
を使っているから"
というのは不十分です。pbuilderパッケージは、同じCPUアーキテクチャのほぼ全てのDebian派生であるディストリビューションへのアクセスを手助けします。
詳しくは、http://www.netfort.gr.jp/~dancer/software/pbuilder.html、pdebuild(1)、pbuilderrc(5)、pbuilder(8)を参照してください。
git-buildpackageコマンドとその仲間
上流がソースコード管理システム(VCS)を使っているのであれば、同様に使用することを考えるべきです。それによって、マージと上流パッチの取捨選択がより簡単になります。DebianパッケージをVCS用にビルドするための特別なラッパースクリプトのパッケージもいくつかあります。
git-buildpackage:
Gitリポジトリ内でのDebianパッケージを支援するパッケージソフトです。
topgit:キューマネージャーのGitパッチです。
svn-buildpackage:DebianパッケージSubversionで管理するための支援プログラムです。
cvs-buildpackage:
CVSソースツリーのためのスクリプト群をDebianパッケージにしたものです。
これらのパッケージはパッケージのビルドを自動化したい上級者にquiltコマンドを使うよりも洗練された作業環境を提供します。このチュートリアルでは細かい説明はしません。[49]
大規模なパッケージの場合には、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 UTCjoy-mg@debian.orgnabetaro@debian.or.jpyyatsuo@gmail.comuwabami@gfd-dennou.orglurdan@gmail.comosamu@debian.org