18.2. Using and Compiling PowerDNS FAQ

In the course of compiling and using PowerDNS, many questions may arise. Here are some we've heard earlier or questions we expect people may have. Please read this list before mailing us!

Q: Can I launch multiple backends simultaneously?

A: You can. This might for example be useful to keep an existing BIND configuration around but to store new zones in, say MySQL. The syntax to use is 'launch=bind,gmysql'.

Q: Which backend should I use? There are so many!

A: If you have no external constraints, the Generic MySQL (gmysql) and Generic PostgreSQL (gpgsql) ones are probably the most used and complete. By all means do not use the non-generic MySQL backend, which is deprecated and only available for older installations.

The Oracle backend also has happy users, we know of no deployments of the DB2 backend. The BIND backend is pretty capable too in fact, but many prefer a relational database.

Q: I try to launch the pgmysqlbackend and it can't find it!

A: You did not read the changelog, nor the README. The 'pgmysql' backend is no more and has been split into the gmysql and gpgsql backends, with the common code residing within PowerDNS itself.

Q: PowerDNS compiles under OpenBSD, but crashes immediately, now what?

A: Reasons behind this are somewhat unclear but we hear they go away if you use a more recent compiler. Let us know on . See also here.

Q: I'm trying to build from CVS but I get lots of weird errors!

A: Read the 'HACKING' file, it lists the build requirements (mostly autoconf, automake, libtool). In many cases, it may be easier to build from the source distribution though.

Q: I'm on Solaris 7 and AAAA records do not work

A: Indeed, and this is pretty sad. Either upgrade to Solaris 8 or convince people to write the replacement functions needed to encode AAAA if the host operating system does not offer them.

Q: When compiling I get errors about 'sstream' and 'ostringstream', or BITSPERCHAR

A: Your gcc is too old. Versions 2.95.2 and older are not supported. Many distributions have improved gcc 2.95.2 with an ostringstream implementation, in which case their 2.95.2 is also supported. We like gcc 3.2.1 best.

Q: Ok, I've installed gcc 3.2.1 but now the gpgsql backend won't link

A: Sadly, the gcc C++ on-disk object format has changed a few times since the 2.95 days. This means that gcc 3.2.1 cannot link against libpq++.so compiled with 2.95. The trick is to recompile PostgreSQL with 3.2.1 too and have it install in a separate location. Then reconfigure the pdns compile to look there, with ./configure --with-pgsql-lib=/opt/postgresql-with-3.2.1/lib

Q: I've installed PostgreSQL 7.3 but it has no libpq++.so

A: As of 7.3, libpq++ has been split out of the main PostgreSQL distribution. See here. It would in fact be a great idea to move the gpgsql backend to the C interface instead of the C++ one. On Debian 'Sid', libpq++.so hides in the libpqpp-dev package.

Q: PowerDNS crashes when I install the pdns-static .deb on Debian SID

A: Indeed. Install the .debs that come with Debian or recompile PowerDNS yourself. If not using MySQL, the crashes will go away if you remove setuid and setgid statements from the configuration.

Q: Why don't my slaves act on notifications and transfer my updated zone?

A: Raise the serial number of your zone. In most backends, this is the first digit of the SOA contents field. If this number is lower to equal to that on a slave, it will not consider your zone updated.

Q: Master or Slave support is not working, PDNS is not picking up changes

A: The Master/Slave apparatus is off by default. Turn it on by adding a slave and/or master statement to the configuration file. Also, check that the configured backend is master or slave capable.

Q: Can I use a MySQL database with the Windows version of PowerDNS?

A: You can. MySQL support is supplied through the ODBC backend, which is compiled into the main binary. So if you want to use MySQL you can change the pdns.conf file, which is located in the PowerDNS for Windows directory, to use the correct ODBC data sources. If you don't know how to use ODBC with MySQL:

Then you can follow the instructions located in Chapter 3. But instead of selecting the Microsoft Access Driver you select the MySQL ODBC Driver and configure it to use your MySQL database.

Note

For other databases for which an ODBC driver is available, the procedure is the same as this example.