David van Moolenbroek 00b67f09dd Import NetBSD named(8)
Also known as ISC bind.  This import adds utilities such as host(1),
dig(1), and nslookup(1), as well as many other tools and libraries.

Change-Id: I035ca46e64f1965d57019e773f4ff0ef035e4aa3
2017-03-21 22:00:06 +00:00

202 lines
7.9 KiB
Plaintext

Copyright (C) 2013, 2014 Internet Systems Consortium, Inc. ("ISC")
See COPYRIGHT in the source root or http://isc.org/copyright.html for terms.
BIND 9.10 for Win32 Source Build Instructions. 02-Feb-2014
Building BIND 9.10 on Windows has the following prerequisites:
1) You need to install Perl for Windows. ActivePerl
(http://www.activestate.com/) and Strawberry Perl
(http://www.strawberryperl.com) have both been tested and found
to work.
2) OpenSSL (http://www.openssl.org) must be downloaded and built on
the system on which you are building BIND.
3) If you wish to use the statistics channel, LibXML2
(ftp://xmlsoft.org/libxml2) must be downloaded and built on
the system on which you are building BIND.
4) Optional external packages (not used by default)
If you wish to use IP geolocation, GeoIP API and database must be
downloaded, patched and built on the system on which you are building
BIND.
If you wish to use readline, the readline library must be downloaded
and built on the system on which you are building BIND.
5) The BIND Installer (BINDInstall) includes a copy of the
redistributable runtime object vcredist_x86.exe (or vcredist_x64.exe),
which is included with Visual Studio and can be downloaded from
Microsoft. This file must be in place prior to running Configure.
6) BIND is known to run on the following versions of Windows:
Windows XP (with Service Pack 2 or higher), Vista, 7, 8, Server 2003,
Server 2008, Server 2008R2, and Server 2012.
Step 1: Download and build OpenSSL
OpenSSL is required for DNSSEC. If you wish to build BIND 9 without
DNSSEC support, skip to step 2.
Download and untar the OpenSSL sources from http://www.openssl.org/.
Extract them at in the same directory in which you extracted the BIND 9
source: If BIND 9 is in \build\bind-9.10.0, for instance, OpenSSL should
be in \build\openssl-1.0.1g (subject to version number changes).
Note: Building OpenSSL requires that you install Perl as it uses it
during its build process. The following commands work as of
openssl-1.0.1g, but you should check the OpenSSL distribution to see
if the build instructions in the INSTALL.W32 (or INSTALL.W64) file
have changed, in particular for the assembler options:
32-bit builds:
(In an x86 Visual Studio Command Prompt window)
cd openssl-1.0.1g
perl Configure --prefix=c:\openssl enable-static-engine VC-WIN32
ms\do_ms
nmake /f ms\ntdll.mak
64-bit builds:
(In an x64 Visual Studio Command Prompt window)
cd openssl-1.0.1g
perl Configure --prefix=c:\openssl64 enable-static-engine VC-WIN64A
ms\do_win64a
nmake /f ms\ntdll.mak
The "enable-static-engine" option is needed when an OpenSSL engine
will be used -- for example, when using the GOST signing algorithm or
OpenSSL-based PKCS#11 support.
If you wish to use OpenSSL-based PKCS#11 to control a cryptographic
hardware service module, please see "PKCS#11 (Cryptoki) support" in
chapter 4 of the BIND 9 Administrator Reference Guide. You will need to
apply the patch in bind9\bin\pkcs11\openssl-1.0.1g-patch (this can be
done using the Cygwin 'patch' utility) and add --pk11-libname and
--pk11-flavor to the Configure command above.
Step 2: Download and build LibXML2
LibXML2 is required to use the statistics channel. If you wish to
build BIND 9 without support for this feature, skip to step 3.
Download and untar the libxml2 sources from ftp://xmlsoft.org/libxml2.
Extract them in the same directory in which you extracted the BIND 9
source: If BIND 9 is in \build\bind-9.10.0, for instance, libxml2 should
be in \build\libxml2-2.9.1 (subject to version number changes).
Now build libxml2, and copy the resulting files into the include and lib
directories:
cd libxml2-2.9.1\win32
cscript configure.js compiler=msvc vcmanifest=yes static=yes \
debug=no iconv=no
nmake /f Makefile.msvc libxml
Step 3: Download and build GeoIP
Geographic ("geoip") ACLs require libGeoIP. If you wish to build BIND 9
without support for this feature, skip to step 4.
The libGeoIP source code is available from:
https://github.com/maxmind/geoip-api-c/releases.
As of this writing, the current version of libGeoIP is 1.6.0. There
is a known bug in this and all prior versions which prevents it from
building a suitable DLL with thread support on Windows. You can apply
the patch file bind9/win32utils/GeoIP.diff to address the problem.
This patch has been submitted upstream, and will be included in
future versions of libGeoIP.
Step 4: Download and build Readline
The readline library adds command-line editing in nslookup and nsupdate.
If you wish to build BIND 9 without support for this feature, skip to
step 5.
Because the original GNU source for the readline library has no WIN32
support, it will be necessary to download a version of the static
readline library source that is ready to be built by Visual Studio. One
such version is available at:
http://gpsim.sourceforge.net/gpsimWin32/gpsimWin32.html#readline_lib
Step 5: Make the redistributable runtime object available
Check that the Microsoft redistributable object (vcredist_x86.exe or
vcredist_x64.exe) is available to the build. The file may be placed
in the directory in which the BIND 9 source was extracted (for
instance, if BIND 9 is in \build\bind-9.10.0, the redistributable
may be placed in \build\vcredist_x86.exe). Or, the path to the file
can be specified via the VCREDIST_PATH environment variable, or via
the "with-vcredist=PATH" option to the configuration script (see
step 4). If none of these options is used, Configure will attempt to
find the redistributable based on clues in the build environment.
Step 6: Configuring the BIND build
From the command prompt, cd to the win32utils directory under
the BIND 9 root:
cd bind-9.10.0\win32utils
In this directory, you can prepare the Windows build by running:
perl Configure <options> win32
For 64 bit:
perl Configure <options> x64
This will set up all the files needed for building BIND 9 according
to the given options. To see the available options, run:
perl Configure help
To remove all files generated by Configure, run:
perl Configure clean
Step 7: Building BIND
To build using 'nmake' or older versions of Visual Studio (e.g.
VS 2005 or VS 2008), go to the legacy subdirectory:
cd legacy
and follow the instructions in win32-build.txt.
Note: Only 32-bit builds are supported in this mode.
To build using the Visual Studio GUI in VS 2010 or VS 2012:
open the bind9.sln solution file; this will load the project
files for all of the BIND 9 libraries and applications. Select
"Build->Batch Build", click "Select All", then click "Build".
To build using MSBuild in VS 2010 or VS 2012: call MSBuild on
the bind9.sln solution file:
msbuild /t:Build /p:Configuration=Release bind9.sln
msbuild /t:Build /p:Configuration=Debug bind9.sln
Note: This mode does not support building for Windows XP.
Step 8: Install
Installation is accomplished by running the BINDInstall program. All
DLL's are copied to the Program Files area and all applications
(including BINDInstall which may be necessary for uninstalling BIND
9) to the bin directory. If BIND 8 has previously been installed on
the system it must be uninstalled first by running it's own
BINDInstall program. The BIND 9 installer does not yet do this.
Note: BINDInstall.exe requires the MFC (Microsoft Foundation Class).
This is only distributed with non-free (i.e., not "Express") versions of
Visual Studio. The other BIND 9 libraries and applications do not have
this dependency.
Please report bugs, whether in the process of building the application
or in BIND 9 itself, to bind9-bugs@isc.org.