Wednesday, April 6, 2011

libgssapiv2.so.2: undefined symbol: gss_nt_service_name

More compiling woes...

This time I was compiling cyrus-sasl 2.1.23 for use with OpenLDAP. I got it all compiled, and tried to run and ldapsearch using GSSAPI, but I got this error:
$ ldapsearch -b dc=example,dc=com -LLL
ldap_sasl_interactive_bind_s: Unknown authentication method (-6)
additional info: SASL(-4): no mechanism available: No worthy mechs found


When I looked at /var/log/messages, I saw this:
Apr 6 16:42:01 ldap ldapsearch: unable to dlopen /usr/local/lib/sasl2/libgssapiv2.so.2: /usr/local/lib/sasl2/libgssapiv2.so.2: undefined symbol: gss_nt_service_name
Apr 6 16:42:01 ldap ldapsearch: No worthy mechs found


I realized that for some reason the SASL GSSAPI plugin wasn't compiling, which I noticed when I ran /usr/local/sbin/pluginviewer -s (Plugin "gssapiv2" [loaded] wasn't in the list)

After googling, I found a possible solution here:
http://lists.freebsd.org/pipermail/freebsd-questions/2011-January/226495.html

But I didn't like it because it seemed a little hackish. then I ran across a patch posted here:
http://lists.freebsd.org/pipermail/freebsd-questions/2011-February/227044.html

It seemed like a much better solution, but there seemed to be quite a bit in the patch that wasn't relevant to my problem, so I trimmed it down to two changes:

--- configure.dist 2011-04-06 10:30:07.000000000 -0500
+++ configure 2011-04-06 11:25:17.000000000 -0500
@@ -11122 +11122 @@
- if test "$gss_impl" = "cybersafe" -o "$gss_impl" = "cybersafe03"; then
+ if test "$gss_impl" = "cybersafe" -o "$gss_impl" = "cybersafe03" -o "$gss_impl" = "heimdal"; then
@@ -11193 +11193 @@
- if test "$gss_impl" = "cybersafe" -o "$gss_impl" = "cybersafe03"; then
+ if test "$gss_impl" = "cybersafe" -o "$gss_impl" = "cybersafe03" -o "$gss_impl" = "heimdal"; then


You can download the raw patch here:
https://gist.github.com/bmaupin/2a4d08edc128d785ad46