pbuilder - Personal builder

問題

Debian GNU/Linuxシステムにおいて, 簡単にchrootシステムを構築でき, そのなかでのパッケージのコンパイルができるようなシステムの構築を目標とする. 現在,自分のカスタマイズしたシステムの中でプログラムをコンパイルしている場合が多いので, 実際にプログラムが他人のシステムでも動くという保証があまり無い. そこで,無駄なプログラムが入っていない,インストール直後の状態 から,実際にプログラムをコンパイルするために最小限のプログラムのみを インストールしてそこでコンパイルを実行するというシステムが 必要とされた.

既存のシステム

現実問題として,同じようなことができるプログラムは, 他にもsbuild等のプログラムがある, しかしながら,そのプログラムは,コンパイルの動作自体に目標をおいていて, build daemon等で利用するばあいは有用ではあるが,そうでない場合には, あまり利用しやすい物ではなかった. 本ツールは,chroot整備ツールとしての 意味あいが強く,sbuildとお互いを補完するような存在にあると考えられる.

結果

結果として,シェルスクリプトで実装されたプログラムが完成した. そのプログラムを利用すると, 簡便にchroot 内でプログラムをコンパイルすることができる. 本当は他の機能も実装したかったのだが, それを無視して実行したのは,有用であったと考えられる.

baseを作成するのに,debootstrapや, Debianのbaseシステムの状態が良好である必要があるため, そのシステムに対しての試練として利用できる. pbuilderを利用するためには,baseが インストール可能である必要があるため,それに対しての 認識が向上したのは良い事だと考えられる. 今ではほぼ毎日sidがインストール可能な状態に保たれているが, このシステムのおかげであると思われる(2002年12月現在)

現在,多くの拡張機能が追加されている. 多くの利用者が思い思いの拡張を要請したからである. それにこたえられるシステムになっているわけではないので, あまり拡張しすぎることなく, 拡張可能な方式を模索するべきであると考えられる. 実際に,拡張用の機構として, スクリプトシステムがある. 指定した任意のスクリプトを実行するものであるが, それを活用することにより,多くの要望に応えることが できた.

また,実際に単純な機構ではあるが,Debianに存在する プログラムのほとんどが再コンパイルできるようになった, これからは,Debianのプログラムが再コンパイル可能 になるように,Debianにあるプログラムの方を修正する作業が 必要になると考えられる. 現在問題があるプログラムのコンパイル時のログは こちらにおいてある.

ダウンロード

Debianのサイトにpbuilderパッケージとしておいてある. ただ,最新版を用いないとunstableやtestingを対象には利用できない.

英語版のマニュアル をオンラインにおいておく.

利用

pbuilder createでchrootイメージを作成する. 作成されたイメージは,tar.gz形式で保存される.

pbuilder build package.dscというようにして,dscファイルを指定すると, そのdscファイルからchroot内でプログラムをコンパイルしてくれる. --debbuildopts "-B"等と指定することにより, コンパイル時にdpkg-buildpackageへのオプションを与えることが できる. ソースからchroot内で,アーキテクチャ依存の部分 だけをコンパイルしたい場合は, こういうふうにすれば良い.

pdebuild というように指定すると、 現在のDebianソースディレクトリ(ソースパッケージで、 debianディレクトリが存在するもの) をコンパイルしてくれる。

user-mode-linuxによる拡張

pbuilderシステムを稼働するにはroot権限が必要になる. そのため,動作にはセキュリティー上の問題などがからむことになる. user-mode-linuxを利用して,一般ユーザ権限でpbuilderを実行 することができるように拡張した. pbuilder-umlがそれだ.

例えば,pbuilder-umlを使ってupdateしたときのログを見ると,この微妙さ加減が分かる.

この移植版はそれなりに稼働しているようで,2003年1月10日に 試験的にbuild daemonとして動かしてみた.

展望

現在はクロスコンパイルはできるようにはなっていない, 今後の長い目でみた目標の一つとして,クロスコンパイルを するためのシステムの構築が考えられる. 現在はソースから全部が再構築できるようになることを目標としている.

また,このシステムは単純であるため,debootstrapさえ対応したら, 複数のアーキテクチャで利用することができる. Debian以外のシステムにも応用することができるだろう,と考えられる. ログの処理のシステムや,自動コンパイルのための環境整備などが これから考えられる課題である.

関連

devscripts-elには,pbuilderのためのemacsユーティリティーが入っている.


Junichi Uekawa

$Id: pbuilder.html.ja,v 1.29 2005/05/11 11:57:25 dancer Exp $