diff --git a/doc/arm/build.rst b/doc/arm/build.rst index b20b1c8396..1dae9d0b7d 100644 --- a/doc/arm/build.rst +++ b/doc/arm/build.rst @@ -12,21 +12,6 @@ Building BIND 9 --------------- -At a minimum, BIND requires a Unix or Linux system with an ANSI C -compiler, basic POSIX support, and a 64-bit integer type. BIND also -requires the ``libuv`` asynchronous I/O library, the ``nghttp2`` HTTP/2 -library, the ``jemalloc`` memory allocation library, and the OpenSSL -cryptography library. On Linux, BIND requires the ``libcap`` library to -set process privileges, though this requirement can be overridden by -disabling capability support at compile time. See `Compile-time -options <#opts>`__ below for details on other libraries that may be -required to support optional features. - -Successful builds have been observed on many versions of Linux and Unix, -including RHEL/CentOS/Oracle Linux, Fedora, Debian, Ubuntu, SLES, -openSUSE, Slackware, Alpine, FreeBSD, NetBSD, OpenBSD, macOS, Solaris, -OpenIndiana, OmniOS CE, HP-UX, and OpenWRT. - To build on a Unix or Linux system, use: :: @@ -70,37 +55,42 @@ https://developer.apple.com/download/more/ or, if you have Xcode already installed, you can run ``xcode-select --install``. (Note that an Apple ID may be required to access the download page.) -Dependencies -~~~~~~~~~~~~ +.. _build_dependencies: + +Required libraries +~~~~~~~~~~~~~~~~~~ To build BIND you need to have the following packages installed: -:: +- ``libuv`` for asynchronous I/O operations and event loops +- ``libssl`` and ``libcrypto`` from OpenSSL for cryptography +- ``pkg-config / pkgconfig / pkgconf`` for build system support - libuv - pkg-config / pkgconfig / pkgconf +BIND 9.19 requires a fairly recent version of ``libuv`` (at least 1.x). +For some older systems, you will have to install an updated ``libuv`` +package from sources such as EPEL, PPA, or other native sources for updated +packages. The other option is to build and install ``libuv`` from source. + +OpenSSL 1.0.2e or newer is required. +If the OpenSSL library is installed in a nonstandard location, +specify the prefix using ``--with-openssl=`` on the +configure command line. To use a PKCS#11 hardware service module for +cryptographic operations, it will be necessary to compile and use +engine_pkcs11 from the OpenSC project. To build BIND from the git repository, you need the following tools installed: -:: +- ``autoconf`` (includes autoreconf) +- ``automake`` +- ``libtool`` - autoconf (includes autoreconf) - automake - libtool - -Compile-time options -~~~~~~~~~~~~~~~~~~~~ +Optional features +~~~~~~~~~~~~~~~~~ To see a full list of configuration options, run ``configure --help``. -For the server to support DNSSEC, you need to build it with crypto -support. To use OpenSSL, you must have OpenSSL 1.0.2e or newer -installed. If the OpenSSL library is installed in a nonstandard -location, specify the prefix using ``--with-openssl=`` on the -configure command line. To use a PKCS#11 hardware service module for -cryptographic operations, it will be necessary to compile and use -engine_pkcs11 from the OpenSC project. +To improve performance, ``libjemalloc`` library is strongly recommended. To support DNS over HTTPS, the server must be linked with ``libnghttp2``. @@ -133,6 +123,13 @@ https://github.com/farsightsec/fstrm and ``libprotobuf-c`` https://developers.google.com/protocol-buffers, and BIND must be configured with ``--enable-dnstap``. +To support internationalized domain names in ``dig``, you must have installed +``libidn2``. If the library is installed in a nonstandard location, specify +the prefix using ``--with-libidn2=/prefix`` or adjust ``PKG_CONFIG_PATH``. + +For line editing in ``nsupdate`` and ``nslookup``, you must have installed +``readline`` library. + Certain compiled-in constants and default settings can be decreased to values better suited to small machines, e.g. OpenWRT boxes, by specifying ``--with-tuning=small`` on the ``configure`` command line. diff --git a/doc/arm/platforms.rst b/doc/arm/platforms.rst index 913f65d8d9..9fb8069a1b 100644 --- a/doc/arm/platforms.rst +++ b/doc/arm/platforms.rst @@ -11,7 +11,7 @@ .. _supported_os: -Supported platforms +Supported Platforms ------------------- Current support status of various platforms and BIND 9 versions can be @@ -21,16 +21,8 @@ https://kb.isc.org/docs/supported-platforms In general, this version of BIND will build and run on any POSIX-compliant system with a C11-compliant C compiler, BSD-style -sockets with RFC-compliant IPv6 support, and POSIX-compliant threads, -plus the following mandatory libraries: - -- ``libuv`` for asynchronous I/O operations and event loops -- ``libssl`` and ``libcrypto`` from OpenSSL for cryptography - -Use of the following libraries is optional: - -- ``libjemalloc`` for improved memory allocation performance -- ``libnghttp2`` for DNS-over-HTTPS (DoH) support +sockets with RFC-compliant IPv6 support, POSIX-compliant threads, and +the :ref:`required libraries `. The following C11 features are used in BIND 9: @@ -43,24 +35,6 @@ The following C11 features are used in BIND 9: The C11 variants are preferred. -BIND 9.19 requires a fairly recent version of ``libuv`` (at least 1.x). -For some of the older systems listed below, you will have to install an -updated ``libuv`` package from sources such as EPEL, PPA, or other -native sources for updated packages. The other option is to build and -install ``libuv`` from source. - -Certain optional BIND features have additional library dependencies. -These include: - -- ``libfstrm`` and ``libprotobuf-c`` for DNSTAP -- ``libidn2`` for display of internationalized domain names in ``dig`` -- ``libjson-c`` for JSON statistics -- ``libmaxminddb`` for geolocation -- ``libnghttp2`` for DNS over HTTPS -- ``libxml2`` for XML statistics -- ``libz`` for compression of the HTTP statistics channel -- ``readline`` for line editing in ``nsupdate`` and ``nslookup`` - ISC regularly tests BIND on many operating systems and architectures, but lacks the resources to test all of them. Consequently, ISC is only able to offer support on a “best effort” basis for some. @@ -121,7 +95,7 @@ supported platforms. - Debian Jessie - FreeBSD 10.x, 11.x -Unsupported platforms +Unsupported Platforms --------------------- These are platforms on which BIND 9.19 is known *not* to build or run: