[nycbug-talk] FreeBSD ldconfig, subdirectories

Charles Sprickman spork at bway.net
Thu Nov 12 00:23:35 EST 2009


On Wed, 11 Nov 2009, Hans Zaunere wrote:

>> I have a workaround for this, but I'm curious about a detail that I'm
>> missing...
>>
>> I've setup a 32-bit jail on a 64-bit host.  It works.  However, I see that
>> some local libraries from ports/packages end up in subdirectories (ie:
>> /usr/local/lib/mysql).  This seems to be normal based on what I've seen on
>> other hosts.
>>
>> However I have some subdirectories in one of my "lib32" search paths and
>> none of the libs in the subdirectories get added (confirmed with "ldconfig
>> -32 -r").
>
> I've had a terrible time getting FreeBSD's ldconfig look through the
> directories I tell it, recursive or not.  On Linux it's a simple .conf
> directive, but I've yet to find anything but symlink and similar hacks in
> FreeBSD.  The documented .conf settings don't appear to have an effect.

I have no problems with it scanning the appropriate directories using the 
rc.conf knobs (ie: ldconfig_paths="/usr/lib/compat /usr/X11R6/lib 
/usr/local/lib /usr/local/lib/compat/pkg").  The only time I've had to 
resort to symlink hackery is when I'm doing something I shouldn't like 
bringing a foreign binary in that's linked against a different version of 
some shared lib.  Symlink to the one I've got, whoo!

>> I can find no documentation explaining when ldconfig descends into
>> subdirectories and when it does not.  Can anyone point me in the right
>> direction?
>
> Unfortunately no, except to keep things in pre-determined system paths.

It's terribly puzzling.  In the main host I see "/usr/local/lib" set in 
ldconfig_paths, and I see libs that live in subdirectories in "ldconfig 
-r" output.

Oh, hold up...  I'm onto something.  In a fresh jail I installed the mysql 
client.  "ldconfig -r" shows the libs, and they live in 
/usr/local/lib/mysql.  The install did not add anything to rc.conf.  I do 
see that the installer ran "ldconfig -m /usr/local/lib/mysql".  I also see 
a file that contains the string "/usr/local/lib/mysql" was added to 
the /usr/local/libdata/ldconfig directory.  Never seen that directory 
before, don't see it referenced in /etc/rc.d/ldconfig.  Surely the answer 
is near, something scans that directory at startup and sets additional 
paths for ldconfig...

C

> H
>
>
>



More information about the talk mailing list