次のページ 前のページ 目次へ

3. BIND のコンパイル

【訳注: この章の内容は、 ndc-c, -p, -n といったオプションを使えば 解決可能ではないかと思います。 これらはそれぞれ、 named との通信に使うソケット、 pid ファイル、named 本体、をデフォルト以外にするものです (-n は undocumented ですが)。 ndc の実行時に -c /chroot/named/var/run/ndc -p /chroot/named/var/run/named.pid -n /chroot/named/usr/sbin/named を指定してやれば、 ディストリビューションで配布されているバイナリが そのまま使えるかと思います。】

BIND のソースは http://www.isc.org/bind.html で見つかるはずです。 必要なのは bind-src.tar.gz パッケージです。 確実に最新版を入手すること!

3.1 パスの修正

ここでちょっと事態は複雑になります。 BIND パッケージの個々の部分が、 同じディレクトリを (jail 内部で実行しているかどうかによって) 別々の名前で参照するからです。 が、できるだけ読者を混乱させないよう頑張ります :-)

特に気をつけなければならないディレクトリが /var/run です。 ここの中身が、メインの named デーモン (jail 内部) と ndc ユーティリティ (jail 外部) の両方で必要となるからです。 まずこのディレクトリが、外部世界から見つかるように全体を設定しましょう。 これを行うには src/port/linux/Makefile.set (Linux 以外を使っている人は別のディレクトリです) の

DESTRUN=/var/run
という行を
DESTRUN=/chroot/named/var/run
に修正します。インストール先のパスを /usr から /usr/local へ変更したい人は、 ここでそうしてください。

これで、すべてのものからディレクトリが見つかるようになったはずです。 ただし、named デーモンを除いては。 これは jail 内部の /var/run を見なければならないのです。 この問題を避けるには、named のソースに少々変更が必要です。 src/bin/named/named.h ファイル中の次の行を見つけてください。

#include "pathnames.h"
この直後に
#define _PATH_NDCSOCK    "/var/run/ndc"
を追加します。 こうすれば named は先に Makefile.set で定義した DESTRUN を無視し、 (chroot jail から見て) 正しい場所を参照してくれます。 ビルドの最中に _PATH_NDCSOCK が再定義されているという warning が出ますが、無視して構いません。

3.2 ビルドする

では BIND をコンパイルしましょう。 コンパイルは INSTALL ファイルに従って普通にできます。 この段階では BIND のコンパイルだけを行い、 インストールはしません。 INSTALL ファイルのあまり先のほうまでは行かないように。 実際には make clean, make depend, make だけを行えば良いです。


次のページ 前のページ 目次へ