| Building BIND 9 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 9. |
| |
| 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 9. |
| |
| 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 9. |
| |
| If you wish to use zlib/deflate on the statistics channel, zlib |
| must be downloaded and built on the system on which you are building |
| BIND 9. |
| |
| If you wish to use python tools, you need a python (version 2 or 3) |
| interpreter with its standard libraries. |
| |
| If you wish to use readline, the readline library must be downloaded |
| and built on the system on which you are building BIND 9. |
| |
| 5) The BIND 9 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.11.11, for instance, OpenSSL should |
| be in \build\openssl-1.0.2a (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.2a, 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.2a |
| perl Configure |
| ms\do_ms |
| nmake /f ms\ntdll.mak |
| |
| 64-bit builds: |
| (In an x64 Visual Studio Command Prompt window) |
| cd openssl-1.0.2a |
| perl Configure |
| ms\do_win64a |
| nmake /f ms\ntdll.mak |
| |
| The "enable-static-engine" option is needed when an OpenSSL engine |
| will be used |
| 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.2a-patch (this can be |
| done using the Cygwin 'patch' utility) and add |
| |
| |
| If you don't have the required assembler (nasm), just add 'no-asm' |
| to the configure arguments. |
| |
| 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.11.11, for instance, libxml2 should |
| be in \build\libxml2-2.9.2 (subject to version number changes). |
| |
| Now build libxml2: |
| |
| cd libxml2-2.9.2\win32 |
| cscript configure.js iconv=no |
| nmake /f Makefile.msvc |
| |
| Step 3: Download and build zlib |
| |
| The statistics channel (aka internal HTTP server) can support |
| zlib "deflate" compression method. If you don't want to this |
| feature, skip to step 4. |
| |
| Download and untar the zlib sources from http://www.zlib.net, |
| extract them, read the win32\Makefile.msc for the Usage comment |
| at the beginning of this file, then build the zlib1.dll DLL for |
| the intended processor (i.e., win32 aka x86, or x64), e.g., |
| running 'nmake /f win32\Makefile.msc'. |
| |
| Step 4: Download and build GeoIP |
| |
| Geographic ("geoip") ACLs require libGeoIP. If you wish to build BIND 9 |
| without support for this feature, skip to step 5. |
| |
| 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 5: Enable python tools |
| |
| Some python packages are required: argparse, ply, win32con and win32api. |
| Last CPython's (version 2 or 3) from http://www.python.org include |
| the pip package manager which can install missing packages, for |
| instance for the 2 last packages 'pip install pypiwin32' downloads and |
| installs win32con and win32api. |
| |
| Note when the python interpreter is in the command path and |
| the required packages available the Configure script will detect |
| them and add python tools to the BIND 9 build. |
| |
| To be used a python tool must be invoked with python (e.g., |
| python dnssec-checkds.py <args>) as the shebang doesn't work |
| on Windows. The isc package should be installed too, cf step 11. |
| At the opposite of Unix this isc package uses the Registry to |
| learn where BIND 9 was installed in step 10. |
| |
| Step 6: 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 7. |
| |
| 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 |
| |
| Note: Windows command (cmd.exe) provides an integrated line edition |
| feature so it is not recommended to configure bind with readline. |
| |
| Step 7: 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.11.11, 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 8). If none of these options is used, Configure will attempt to |
| find the redistributable based on clues in the build environment. |
| |
| Step 8: Configuring the BIND 9 build |
| |
| From the command prompt, cd to the win32utils directory under |
| the BIND 9 root: |
| |
| cd bind-9.11.11\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 9: Building BIND 9 |
| |
| Building with a version of Visual Studio newer than VS 2010 |
| requires the solution to first be upgraded by running: |
| |
| devenv bind9.sln /upgrade |
| |
| If the build host only has Visual Studio Build Tools available |
| and not a full Visual Studio installation, devenv.exe will not |
| be present. In that case, the Configure invocation from step 8 |
| must be extended with the following parameters set to values |
| matching the Visual Studio Build Tools version used: |
| |
| with-tools-version |
| with-platform-version |
| with-platform-toolset |
| |
| 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. |
| |
| After this step this documentation applies to external or remote |
| builds, i.e., is common with installation. |
| |
| Step 10: 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. |
| |
| The very last version of BINDInstall uses two files created by |
| the Configure perl script: |
| - InstallFlags: 32/64 bit build, and/or should the redistributable |
| object be run. |
| - InstallFiles: the list of files to install with for each files |
| 4 flags (destination, importance, check version and part of tools). |
| The idea is to be able to use any BINDInstall.exe binary so |
| a non-free version of Visual Studio is no longer required. |
| |
| Step 11: Python package install |
| |
| When BIND 9 was built with python support, the isc python package |
| must be installed locally by: |
| |
| cd <top-bind9-directory> |
| cd bin/python |
| python setup.py install |
| |
| (replace 'python' by the path of your python interpreter if needed.) |
| |
| BIND 9 python tools should work with version 2 or 3, 32 or 64 bits. |
| |
| Please report bugs, whether in the process of building the application |
| or in BIND 9 itself, at https://gitlab.isc.org/isc-projects/bind9. |