sshd on FBSD 8.0-RC2/3
Dmitry Pryanishnikov
lynx.ripe at gmail.com
Sun Dec 6 01:27:22 UTC 2009
Hello!
2009/12/3 Peter Beckman <beckman at angryox.com>:
> On Thu, 3 Dec 2009, Dmitry Pryanishnikov wrote:
>
>> Well, ldd's output _itself_ depends on the current environment and
>> thus can't insure that correct libraries will be used by the
>> application. Compare:
>
> Well that's just confusing! So what's the default? If I have no
> LD_LIBRARY_PATH set, lighttpd uses /usr/local/lib as I would
> expect/hope/desire, but I have no understanding as to why. If I set
> LD_LIBRARY_PATH to /usr/lib, it uses everything right EXCEPT
> /usr/lib/libssl.so.6. What's the logic? How does one do it right?
I haven't found definitive answer using RTFM. But luckily it's
opensource, so RTFS gives the following search order for rtld-elf (as
of RELENG_7):
/usr/src/libexec/rtld-elf/rtld.c:
/*
* Find the library with the given name, and return its full pathname.
* The returned string is dynamically allocated. Generates an error
* message and returns NULL if the library cannot be found.
*
* If the second argument is non-NULL, then it refers to an already-
* loaded shared object, whose library search path will be searched.
*
* The search order is:
* LD_LIBRARY_PATH
* rpath in the referencing file
* ldconfig hints
* /lib:/usr/lib
*/
>
> web1: 4 : ~/logs/web3 --> unsetenv LD_LIBRARY_PATH
> web1: 4 : ~/logs/web3 --> ldd /usr/local/sbin/lighttpd
> /usr/local/sbin/lighttpd:
> libpcre.so.0 => /usr/local/lib/libpcre.so.0 (0x80066e000)
> libssl.so.6 => /usr/local/lib/libssl.so.6 (0x80079e000)
> libcrypto.so.6 => /usr/local/lib/libcrypto.so.6 (0x8008eb000)
> libc.so.7 => /lib/libc.so.7 (0x800b63000)
> libz.so.5 => /lib/libz.so.5 (0x800d9d000)
> libthr.so.3 => /lib/libthr.so.3 (0x800eb2000)
> web1: 4 : ~/logs/web3 --> setenv LD_LIBRARY_PATH /usr/lib
> web1: 4 : ~/logs/web3 --> ldd /usr/local/sbin/lighttpd
> /usr/local/sbin/lighttpd:
> libpcre.so.0 => /usr/local/lib/libpcre.so.0 (0x80066e000)
> libssl.so.6 => /usr/lib/libssl.so.6 (0x80079e000)
Looks like 'libssl.so.6 => /usr/local/lib/libssl.so.6' is set via
rpath - it overrides standard hints path
'/lib:/usr/lib:/usr/lib/compat:/usr/local/lib...' but still can be
overridden by LD_LIBRARY_PATH.
--
Sincerely, Dmitry
nic-hdl: LYNX-RIPE
More information about the freebsd-ports
mailing list