As PowerDNS Recursor is distributed with a configure script, compiling it is a matter of:
tar xf pdns-recursor-$VERSION.tar.bz2
cd pdns-recursor-$VERSION
./configure
make
make install
Warning
Do not use the tarballs auto-generated by GitHub from the tags, as these are not proper release tarballs.
There are 3 ways of getting the source.
If you want the bleeding edge, you can clone the repository at GitHub and run autoreconf -vi
in the pdns/recursordist
directory of the clone.
You can also download snapshot tarballs.
You can also download releases on the website. These releases are PGP-signed with one of these key-ids:
There is a PGP keyblock with these keys available on https://doc.powerdns.com/powerdns-keyblock.asc.
Older releases (4.3.x and earlier) can also be signed with one of the following keys:
To build PowerDNS Recursor, a C++ compiler with support for C++ 2017 is required.
This means gcc 5
and newer and clang 5
and newer.
Furthermore, the Makefiles require GNU make
, not BSD make
.
Starting with version 5, a Rust compiler is needed.
By default, the Recursor requires the following libraries and headers:
Note
On Debian and Ubuntu, the following will get you the dependencies:
apt-get install libboost-dev libboost-filesystem-dev libboost-serialization-dev \
libboost-system-dev libboost-thread-dev libboost-context-dev \
libboost-test-dev libssl-dev libboost-test-dev g++ make pkg-config \
libluajit-5.1-dev cargo
Source code is available on GitHub:
git clone https://github.com/PowerDNS/pdns.git
This repository contains the sources for the PowerDNS Recursor, the PowerDNS Authoritative Server, and dnsdist (a powerful DNS loadbalancer). The sources for the recursor are located in the pdns/recursordist subdirectory of the repository.
To compile from a git checkout, install the dependencies above plus ragel, automake, autoconf, libtool, virtualenv and curl. Then run:
cd pdns/pdns/recursordist/
autoreconf -vi
./configure
make
If you want to compile yourself, the dependencies can be installed using Homebrew. You need to tell configure where to find OpenSSL, too:
brew install boost lua pkg-config ragel openssl
./configure PKG_CONFIG_PATH=/usr/local/opt/openssl/lib/pkgconfig
make -j4
To benefit from Lua scripting, as described on https://doc.powerdns.com/md/recursor/scripting/ Install Lua and development headers. PowerDNS supports Lua 5.1, 5.2, 5.3 and LuaJIT. On Debian/Ubuntu, install e.g. liblua5.2-dev to use Lua 5.2.
The configure script will automatically detect the Lua version. If more than one version of Lua is installed, the –with-lua configure flag can be set to the desired version. e.g.:
./configure --with-lua=lua51
(On older versions of Debian/Ubuntu, you’ll need to pass –with-lua=lua5.1 instead.)
Several options that can be passed to ./configure
can enable and disable different features.
These will require additional dependencies
The Recursor can link with libsodium to support ed25519 (DNSSEC algorithm 15).
To detect libsodium, use the --with-libsodium
configure option.
Changed in version 4.2.0: This option was previously --enable-libsodium
The Recursor can log DNS query information over Protocol Buffers.
This functionality from 4.5.0 and upwards, without needing any external library. Before 4.5.0, installing the protobuf library and compiler is required to enable this functionality. The configure script will automatically detect this and bump the Boost version dependency to 1.42. To disable building this functionality before 4.5.0, use --without-protobuf
.
systemd
notify support¶During configure, configure
will attempt to detect the availability of systemd or systemd-daemon headers.
To force the use of systemd
(and failing configure if the headers do not exist), use --enable-systemd
.
To set the directory where the unit files should be installed, use --with-systemd=/path/to/unit/dir
.
Note
If you want systemd support, you will need to install the corresponding development package. On Debian and Ubuntu, this means apt install libsystemd-dev.
After compiling, run pdns_recursor –config to view the configuration options and a short description. The full documentation is online at https://doc.powerdns.com/recursor/