As the 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
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://www.powerdns.com/powerdns-keyblock.asc.
To build the PowerDNS Recursor, a C++ compiler with support for C++ 2011 is required. This means gcc 4.9 and newer and clang 3.5 and newer. Furthermore, the Makefiles require GNU make, not BSD make.
By default, the PowerDNS recursor requires the following libraries and headers:
Several options that can be passed to ./configure
can enable and disable different features.
These will require additional dependencies
The PowerDNS 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
libdecaf is a library that allows the PowerDNS Recursor to support ed25519 and Ed448 (DNSSEC algorithms 15 and 16).
To detect libdecaf, use the --with-libdecaf
configure option.
Changed in version 4.2.0: This option was previously --enable-libdecaf
The PowerDNS 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
.
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
.