[ 前のページ ] [ 目次 ] [ 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.org
nabetaro@debian.or.jp
yyatsuo@gmail.com
uwabami@gfd-dennou.org
lurdan@gmail.com
osamu@debian.org