]> git.ipfire.org Git - thirdparty/pdns.git/blame - README.md
Added section on using Lua records with generic SQL
[thirdparty/pdns.git] / README.md
CommitLineData
a4167e57 1PowerDNS is copyright © 2001-2018 by PowerDNS.COM BV and lots of
79a0f9ff
CH
2contributors, using the GNU GPLv2 license (see NOTICE for the
3exact license and exception used).
bdbf07f0 4
48cfdbc4 5All documentation can be found on http://doc.powerdns.com/
6
1d329048 7This file may lag behind at times. For most recent updates, always check
f778b0f4 8https://doc.powerdns.com/md/changelog/.
1d329048
BH
9
10Another good place to look for information is:
75c698a7 11https://doc.powerdns.com/md/appendix/compiling-powerdns/
1d329048 12
2847a0d2 13To file bugs, head towards:
7d7b7179 14https://github.com/PowerDNS/pdns/issues
2847a0d2 15
7d7b7179 16But please check if the issue is already reported there first.
da5d2b0f 17
48cfdbc4 18SOURCE CODE / GIT
19-----------------
48cfdbc4 20Source code is available on GitHub:
21
d5f41e30
JS
22```sh
23git clone https://github.com/PowerDNS/pdns.git
6942a39e
PL
24```
25
26This repository contains the sources for the PowerDNS Recursor, the PowerDNS
27Authoritative Server, and dnsdist (a powerful DNS loadbalancer). All three can
28be built from this repository. However, all three released separately as .tar.bz2,
29.deb and .rpm.
48cfdbc4 30
31COMPILING Authoritative Server
32------------------------------
6942a39e
PL
33The PowerDNS Authoritative Server depends on Boost, OpenSSL and requires a
34compiler with C++-2011 support.
1d329048 35
e5dae152 36On Debian 9, the following is useful:
3869cd3b 37
d5f41e30 38```sh
e5dae152 39apt install g++ libboost-all-dev libtool make pkg-config default-libmysqlclient-dev libssl-dev virtualenv
6942a39e 40```
3869cd3b 41
e5dae152
JS
42When building from git, the following packages are also required:
43
44```sh
45apt install autoconf automake ragel bison flex
46```
47
48then generate the configure file:
3869cd3b 49
d5f41e30
JS
50```sh
51autoreconf -vi
6942a39e 52```
3869cd3b 53
d022a079 54To compile a very clean version, use:
2e938e5d 55
d5f41e30
JS
56```sh
57./configure --with-modules="" --without-lua --disable-lua-records
58make
6942a39e
PL
59# make install
60```
2e938e5d 61
4486aaac 62This generates a PowerDNS Authoritative Server binary with no modules built in.
1d329048 63
4486aaac 64When `./configure` is run without `--with-modules`, the bind and gmysql module are
1d329048 65built-in by default and the pipe-backend is compiled for runtime loading.
2e938e5d
BH
66
67To add multiple modules, try:
68
d5f41e30
JS
69```sh
70./configure --with-modules="bind gmysql gpgsql"
6942a39e 71```
2e938e5d 72
6942a39e
PL
73Note that you will need the development headers for PostgreSQL as well in this case.
74
75See https://doc.powerdns.com/md/appendix/compiling-powerdns/ for more details.
343546e5 76
cc2ee9e2
PD
77If you run into C++11-related symbol trouble, please try passing `CPPFLAGS=-D_GLIBCXX_USE_CXX11_ABI=0` (or 1) to `./configure` to make sure you are compatible with the installed dependencies.
78
b1b2586e 79Compiling the Recursor
48cfdbc4 80----------------------
6942a39e 81See the README in pdns/recursordist.
3e69796e 82
b1b2586e
CH
83Compiling dnsdist
84-----------------
6942a39e 85See the README in pdns/dnsdistdist.
e291c62e 86
b1b2586e 87Solaris Notes
343546e5 88-------------
843aae1e 89Use a recent gcc. OpenCSW is a good source, as is Solaris 11 IPS.
152b4591 90
48cfdbc4 91If you encounter problems with the Solaris make, gmake is advised.
343546e5 92
b1b2586e 93FreeBSD Notes
343546e5 94-------------
48cfdbc4 95You need to compile using gmake - regular make only appears to work, but doesn't in fact. Use gmake, not make.
5088e8bc 96
2bf96826
SM
97The clang compiler installed through FreeBSD's package manager does not expose all of the C++11 features needed under `std=gnuc++11`. Force the compiler to use `std=c++11` mode instead.
98
d5f41e30
JS
99```sh
100export CXXFLAGS=-std=c++11
b1b2586e 101```
2bf96826 102
b1b2586e
CH
103macOS Notes
104-----------
43a2814f 105PowerDNS Authoritative Server is available through Homebrew:
7d7b7179 106
6942a39e 107```
d5f41e30 108brew install pdns
6942a39e 109```
7d7b7179
JC
110
111If you want to compile yourself, the dependencies can be installed using
b1b2586e 112Homebrew. You need to tell configure where to find OpenSSL, too.
7d7b7179 113
d5f41e30
JS
114```sh
115brew install boost lua pkg-config ragel openssl
116./configure --with-modules="" --with-lua PKG_CONFIG_PATH=/usr/local/opt/openssl/lib/pkgconfig
117make -j4
6942a39e 118```
7d7b7179 119
b1b2586e
CH
120Additionally, for PostgreSQL support, run `brew install postgresql` and add `--with-modules="gpsql"` to `./configure`.
121For MySQL support, run `brew install mariadb` and add `--with-modules="gmysql"` to `./configure`.
7d7b7179 122
b1b2586e 123Linux notes
343546e5
BH
124-----------
125None really.