パッケージ構築環境としてpbuilderを使うことで、パッケージをchroot環境を用いてビルドすることができます。もちろんpbuilderを使わなくてもバイナリパッケージを構築することはできます。ですが、パッケージのbuild-dependencyに記述されたパッケージをあらかじめシステムにインストールしておく必要があります。ですがpbuilderであれば、パッケージが最小のUbuntu環境内で構築されるので、もしもbuild-dependencyが間違っていれば、それを確認することが出来ます。debian/controlファイルの内容に従ってbuild-dependencyに記述されたパッケージが自動的にインストールされます。
以下はpbuilder環境をインストールし、利用し、そしてアップデートしていくための簡単なガイドです。ですが、pbuilder環境を使っていくためには、このガイドでは触れられていない細かな要素を知る必要があります。問題に遭遇したり、より詳細な情報を必要とするのであれば、pbuilderのmanページを見る必要があるでしょう。そこには多くの情報が掲載されています。
pbuilder環境のインストールと設定
最初に行うべきことは、pbuilderのインストールです(もっとも分かりやすい作業でもあります)。すでにインストールされている環境よりも新しいリリース向けのpbuilder環境を必要とするのであれば、新しいリリースのdebootstrap.debを入手し、手動でインストールする必要があります。これはhttp://packages.ubuntu.comで入手できるでしょう。pbuilderの作成のために、次のコマンドを実行します。
sudo pbuilder create --distribution <distro> \ --othermirror "deb http://archive.ubuntu.com/ubuntu <distro> universe multiverse"
<distro>には、pbuilder環境を作りたいリリース名を入れます(たとえば"edgy")。もしも複数のpbuilderを構築したければ、望みの場所に圧縮されたpbuilder環境を作成するために、 --basetgz オプションを与えても良いでしょう。デフォルトでは /var/cache/pbuilder/base.tgz になります。もしも --basetgz オプションを使うのであれば、他のpbuilderコマンドで構築された圧縮ファイルを指定することで、それを利用した環境が構築されます。
debootstrapが最小限のUbuntu環境をダウンロードし、pbuilder環境を構築できるまでにはかなりの時間が必要です。
より柔軟に作業をおこなうためには、pbuilder環境の作成(場合によっては複数のpbuilder環境の作成)をシェルスクリプトを用いて行うと良いでしょう。
pbuilderの利用
pbuilder環境を作成したのなら、次のコマンドを用いてソースパッケージからバイナリパッケージを作成できます。
sudo pbuilder build *.dsc
これは、カレントディレクトリにある全てのソースパッケージをビルドします。作成された.debファイルやソースパッケージは、/var/cache/pbuilder/result/にあります(--buildresultオプションを用いて場所を変更することができます)。
pbuilderのアップデート
特に変化の早い開発中のリリースに向けてパッケージを構築しようとするのであれば、ソースパッケージのテストの前に、必ずpbuilderを最新に更新しなければなりません。これにより、確実に依存関係が解決されます。pbuilderの更新には、次のコマンドを用います。
sudo pbuilder update
もしも新しいリリースに沿ったpbuilder環境にしたければ、pbuilder updateに--distributionオプションを与えることでアップグレードできます。
sudo pbuilder update --distribution <newdistro> --override-config
複数のpbuilder
ここまでは、ひとつのpbuilder環境を維持するための情報です。複数のpbuilder環境を作りたいのであれば、利用したいpbuilder環境ごとにシェルスクリプトを作成すると良いでしょう。例となるスクリプトは /usr/share/doc/pbuilder/examples/pbuilder-distribution.sh にあります。単にこのスクリプトをパスの通った場所にコピーし(~/bin/に置いて、そこにパスを通すと便利でしょう)、それを使い方にあわせて編集するのがいいでしょう。通常であれば、DISTRIBUTION変数を変更し、上記のように--othermirrorを追加すれば良いはずです。あとは、直接pbuilderを呼び出すのではなく、このスクリプトを呼び出してください。
<= |
=> |
|
パーソナルビルダー"pbuilder" |