您应该可以通过访问 http://www.isc.org/bind.html 找到 BIND 源代码。您需要 bind-src.tar.gz
软件包。请务必获取最新版本!
在这个阶段事情可能会变得有点混乱,因为 BIND 软件包的不同部分将用不同的名称来指代相同的目录(取决于它们是否在 jail 环境内运行)。我会尽量不让您感到太困惑 :-)。
我们在这里需要主要关注的目录是 /var/run
,因为主 named
守护进程(在 jail 环境内)和 ndc
实用程序(在外部)都需要它的内容。我们将从设置一切,以便从外部世界找到这个目录开始。为此,我们需要修改 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 重定义的警告;请忽略它们。
现在您应该能够像往常一样编译 BIND,按照 INSTALL
文件中的说明进行操作。在这个阶段,我们只想编译 BIND,而不是安装它。按照 INSTALL
文件进行操作时,不要走得太远。基本上,只需要 make clean
,make depend
和 make
即可。