Sleepycat, the makers of Berkeley DB, changed the API between versions 4.0.X and 4.1.X. The dlz drivers were developed to use the newest version of the Berkeley DB available at the time (4.1.25 when the first BDB driver was released). The version of Berkeley DB shipped with most Linux and other UN*X compatible distributions uses the older style of the Berkeley DB API. To build this driver, you must download and install a new version of Berkeley DB. Follow the instructions included with the Berkeley DB software to build it for your platform.
On Redhat, Berkeley DB will build and install, but it does not install over the original Berkeley DB that shipped with redhat. I expect the same thing will happen with other distributions. In order to build this driver properly, you will need to specify the path to the Berkeley DB that you just built & installed. This is done by specifying the path (as shown below) when running configure: (Path used here was for Redhat after Berkeley DB build & install)
./configure --with-dlz-bdb=/usr/local/BerkeleyDB.4.1 |
BIND will now build properly, but when you try to execute named using the BDB driver, or use dlzbdb, you will get an error about not finding the library libdb-4.1.so. This is because the library is not in your "lib" path. The easiest way to fix this is to create a link in your lib path that points to where the Berkeley install script put the libdb-4.1.so file. For Redhat this is:
ln /usr/local/BerkeleyDB.4.1/lib/libdb-4.1.so /usr/lib/libdb-4.1.so |
This will create a hard link. If /usr/local and /usr/lib are not on the same file system, create a symbolic link instead.
ln -s /usr/local/BerkeleyDB.4.1/lib/libdb-4.1.so /usr/lib/libdb-4.1.so |
Lastly, run ldconfig to reconfigure the dynamic linker run-time bindings.
Now everything should work fine.