[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: ldconfig annoyance



On Sun, Apr 15, 2001 at 10:46:34PM +0200, Andreas Jaeger wrote:
> Johannes Zellner <johannes@zellner.org> writes:
> 
> > Hi,
> > 
> > ldconfig 2.2.2, as it ships with 'debian unstable' unfortunately
> > always puts /lib and /usr/lib BEFORE all other paths as specified
> > in /etc/ld.so.conf. This wasn't the case before. I just checked
> > an older ldconfig (from the ldso-1.9.11 source) where /lib and
> > /usr/lib come AFTER the libs specified in /etc/ld.so.conf.
> 
> ldconfig in glibc is a clean implementation and has nothing at the
> source level to do with the older ldconfig.  This is just one of the
> points where ldconfig was not properly documented.
> 
> > To give you an idea of my problem:
> > My graphics chip needs a patched version of libsvga, which I
> > put to /usr/local/lib. As many programs which use libsvga will
> > be setuid root, LD_LIBRARY_PATH won't be recognized by the dynamic
> > loader. So I need to have a means to tell the dynamic loader to use
> > /usr/local/lib BEFORE /usr/lib!
> > 
> > The ideal behaviour would be IMHO:
> > 
> > 1) if /lib and /usr/lib are NOT specified in /etc/ld.so.conf:
> >    put these BEFORE the libs in ld.so.conf, i.e.:
> > 
> >    /lib
> >    /usr/lib
> >    ... as specified in /etc/ld.so.conf
> > 
> > 2) if /lib and /usr/lib ARE specified in /etc/ld.so.conf:
> >    don't change anything in the order of ld.so.conf, i.e.,
> >    if they come at the end in ld.so.conf, search them after
> >    all other libs:
> > 
> >    /usr/local/lib
> >    /lib
> >    /usr/lib
> 
> That is IMO to complicated.  The following can be easily done:
> 
> 1) if /lib and /usr/lib are NOT specified in /etc/ld.so.conf:
>    put these *AFTER* the libs in ld.so.conf, i.e.:
> 
>    ... as specified in /etc/ld.so.conf
>    /lib
>    /usr/lib
> 
> 2) 
>  if /lib and /usr/lib ARE specified in /etc/ld.so.conf:
>  don't change anything in the order of ld.so.conf, i.e.,
>  if they come at the end in ld.so.conf, search them after
>  all other libs:
> 
>  /usr/local/lib
>  /lib
>  /usr/lib
> 
> To implement this, you just need to move in ldconfig.c the parse_conf
> call before the two add_dir calls (add_dir removes duplicates!):
> 
>   if (!opt_only_cline)
>     {
>       /* Always add the standard search paths.  */
>       add_dir (SLIBDIR);
>       if (strcmp (SLIBDIR, LIBDIR))
> 	add_dir (LIBDIR);
> 
>       parse_conf (config_file);
>     }

would also be ok for me! Who's going to implement this in the
'official' code ? -- If I can give some hands, let me know.

-- 
   Johannes



Reply to: