2005年1月7日 (金曜日)

07:45:11 # Debian 「Build-depが足りないからbuildできないじゃないか」. そんなつっこみをいれられてもDebianを知らない人にはなんの意味かわからない.

Debianのソースパッケージの制御ファイルには「Build-Depends」というフィールドがある. そのフィールドの事をBuild-Depと省略して表現する. ソースパッケージをコンパイルする際にDebianのBuild-Essential(ビルドに最低限必要な環境)に入っていないパッケージを必要とする場合には, 必要になるパッケージの一覧をBuild-Dependsに記述する. そうすることで,dpkg-buildpackageなどのツールは依存関係を確認してから ビルド処理を行なう. また,sbuildやpbuilderなどのビルド専門ツールは, 実際にbuild-dependsのフィールドを解析して 必要なパッケージをインストールしてからパッケージをビルドする. ビルドした結果としてバイナリパッケージができる. しかしながら,Build-Depの記述が不正確だと,何かがたりなくて ビルド結果がおかしかったり途中でエラーが発生したりする. そのような状況をBuild-Depが足りないからbuildできない状態と呼ぶらしい.

現状Build-Depに必要な項目についてはメンテナが手作業で探求している. dpkg-genbuilddepsツールなどを利用して自動でリストを生成することも可能だが, 実際にビルド処理を実行して, ビルド処理の中で利用しようとしたファイルの一覧を作成するため,本当に必要なのかどうかについては結局 手動で確認する必要がある.また,各実行コマンドの依存する 共有ライブラリや,スクリプトの利用するスクリプト言語環境も出力してしまうみたいなので, そういうものも除外する必要がある. 今後も手動での操作が必要になってくる分野だろうと思われる. しかし,dpkg-genbuilddepsが意外とまともに動くのにびっくり.

dpkg-genbuilddepsをdshに対して走らせてみた出力例:

The following files did not appear to belong to any package:
/usr/lib/perl/5.8
/usr/lib/locale/locale-archive
/usr/bin/cc
/usr/share/perl/5.8
/etc/alternatives/cc
/etc/ld.so.conf
Packages needed:
  file
  gettext
  libdshconfig1
  locales
  libc6-i686
  perl-base
  dsh
  debhelper
  fakeroot
  libmagic1
  libdshconfig1-dev
	

07:56:55 # Life Debian勉強会,申込ありがとうございます. 参加される方には,土曜日にお会いしましょう. どんな人が来られるのか,楽しみです.

Junichi Uekawa

$Id: dancer-diary.el,v 1.85 2005/01/23 15:38:54 dancer Exp $