On 25/10/14 01:35, Richard Saunders wrote: > Thanks for the suggestion; it built the binary version but > unfortunately it did not solve the 'undefined symbols' problem. The > .deb file was installed using this command: > > dpkg -i ~/ws/dlz-ldap-enum/dlz-ldap-enum_1.0.2-1_amd64.deb > > It installed successfully but bind still fails to start and the same > error message is in the log: > > dlz_dlopen failed to open library > '/usr/lib/dlz-ldap-enum/dlz_ldap_enum.so' - > /usr/lib/dlz-ldap-enum/dlz_ldap_enum.so: undefined symbol: ns_g_mctx >
I've had a brief look at this now. ns_g_mctx is defined in globals.h from the bind9 package. globals.h is not included in the headers in the libbind-dev package Therefore, there is a possible fault with the dlz-ldap-enum package. It did work before, so this is a new problem, maybe the symbol was moved in bind9 or maybe it was in a different header in the past. Looking at it more closely: - this symbol is being used in the memory management API from ISC, e.g. isc_mem_get, isc_mem_free, etc - the other main user of the dlz API is Samba - in their code, they use their own memory management API so they don't refer to this symbol There are at least three ways to proceed: - the ns_g_mctx definition could be moved from globals.h to another header file that is in the public API of bind9 - the globals.h header file could be added to the public API of bind9 - the dlz-ldap-enum code should adapted to do memory management without the isc_mem_* functions - the ./contrib/dlz/modules/bdbhpt/dlz_bdbhpt_dynamic.c example from bind9 doesn't appear to use the isc_mem_* functions There is more to it though - it appears the dlz_dlopen.h file is still missing from the latest versions of libbind-dev in Debian. This is a pain. It is not clear if bind is being compiled with dlz_dlopen support. I've cc'd LaMont, the bind9 package maintainer, I'd like him to clarify that dlz_dlopen support is compiled into the bind9 package in Debian and Ubuntu, otherwise you need to recompile the bind9 package with the "--with-dlopen" option to configure as well. You can probably just add that in debian/rules somewhere in the bind9 package. I've opened a Debian bug for part of this issue, the missing dlz_dlopen.h: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=766827