libnsl.so.1

Mel Flynn mel.flynn+fbsd.questions at mailing.thruhere.net
Tue Sep 15 12:29:08 UTC 2009


On Tuesday 15 September 2009 02:43:32 Joe R. Jah wrote:
> On Tue, 15 Sep 2009, Mel Flynn wrote:
> > Date: Tue, 15 Sep 2009 01:17:02 +0200
> > From: Mel Flynn <mel.flynn+fbsd.questions at mailing.thruhere.net>
> > To: freebsd-questions at freebsd.org
> > Cc: Joe R. Jah <jjah at cloud.ccsf.cc.ca.us>
> > Subject: Re: libnsl.so.1
> >
> > On Tuesday 15 September 2009 00:02:50 Joe R. Jah wrote:
> > > Hello all,
> > >
> > > I want to install a dispather module from Day Communique software on
> > > apache22.  The binaray mod_dispatcher.so is provided by Day as a 64 bit
> > > *NIX compatible module to place in apache22 module directory.  The
> > > mocule requires a shared library missing from system:
> > >
> > > --8<--
> > > # apachectl -t
> > > httpd: Syntax error on line 827 of /usr/local/etc/apache22/httpd.conf:
> > > Cannot load /usr/local/libexec/apache22/mod_dispatcher.so into server:
> > > Shared object "libnsl.so.1" not found, required by "mod_dispatcher.so"
> > > --8<--
> > >
> > > Does anyone know where to download libnsl.so.1, or from what port it
> > > can be installed?
> >
> > nsl=name service library. All of it's functions are in FreeBSD implement
> > in libc. If this mod_dispatcher.so is indeed loadable by FreeBSD's
> > linker, then you can provide a dummy libnsl.so.1, like so:
> >
> > $ cat <'EOF' >BSDmakefile
> > SHLIB=nsl
> > SHLIB_MAJOR=1
> > NO_MAN=yes
> > SRCS=nsl.c
> >
> > .include <bsd.lib.mk>
> > EOF
> > $ cat <'EOF' >nsl.c
> > int nsl_dummy(void);
> >
> > int nsl_dummy(void) { return 0; }
> > EOF
> >
> > $ make; sudo make LIBDIR=/usr/local/lib install
> >
> > The symbols it's looking for should be provided by libc, but if there's
> > any undefined ones, this trickery gets a little dangerous and you're
> > better off asking the developers for a native FreeBSD version.
> 
> Thank you Mel.  You were right about undefined ones;  Here's what I get:
> 
> --8<--
> apachectl -t
> httpd: Syntax error on line 826 of /usr/local/etc/apache22/httpd.conf:
> Cannot load /usr/local/libexec/apache22/mod_dispatcher.so into server:
> /usr/local/libexec/apache22/mod_dispatcher.so: Undefined symbol "__strdup"
> --8<--
> 
> Any more trickeries?;-)

Sure, add #define __strdup strdup to nsl.c, however this road is not likely to 
end soon. It seems to be compiled for a linux system, at least for a SYSV 
system, while FreeBSD follows '4.4BSD'.
-- 
Mel


More information about the freebsd-questions mailing list