【訳注: この章の内容は、
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
パッケージです。
確実に最新版を入手すること!
ここでちょっと事態は複雑になります。 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 が出ますが、無視して構いません。
では BIND をコンパイルしましょう。
コンパイルは INSTALL
ファイルに従って普通にできます。
この段階では BIND のコンパイルだけを行い、
インストールはしません。
INSTALL
ファイルのあまり先のほうまでは行かないように。
実際には make clean
, make depend
, make
だけを行えば良いです。