Re: Relocatable installs - Mailing list pgsql-hackers

From Bruce Momjian
Subject Re: Relocatable installs
Date
Msg-id 200405181605.i4IG5Tq02334@candle.pha.pa.us
Whole thread Raw
In response to Re: Relocatable installs  (Jan Wieck <JanWieck@Yahoo.com>)
Responses Re: Relocatable installs  (Jan Wieck <JanWieck@Yahoo.com>)
List pgsql-hackers
Jan Wieck wrote:
> Bruce Momjian wrote:
> > Jan Wieck wrote:
> >> > I think if we go for the plan outlined, we will not need a special
> >> > configure flag.  (People might decide to move the install dir long after
> >> > they install it.)  By default, everything sits under pgsql as pgsql/bin,
> >> > pgsql/lib, etc.  I can't see how making it relative is going to bite us
> >> > unless folks move the binaries out of pgsql/bin.  Is that common for
> >> > installs that don't specify a special bindir?
> >> > 
> >> 
> >> Does that include a mechanism for -rpath?
> >> 
> >> Currently, if you have multiple installations of PostgreSQL on a server 
> >> and call ones psql or whatever explicitly, it is not loading another 
> >> ones libpq, but for sure the one belonging to its version. How does the 
> >> plan you're talking about cover this?
> > 
> > Someone asked about rpath, and I didn't deal with it.  How many
> > platforms use rpath?  I am not sure.
> > 
> > I assume folks are going to have to modify their ld.so.conf to point to
> > the proper library, or for non-root, set an environment variable like
> > LD_LIBRARY_PATH.
> 
> You know how much trouble that causes? The existence of LD_LIBRARY_PATH 

Nope.

> in your environment disables setuid() for security reasons on some 
> platforms. So one would have to wrap every PG related program into 
> equally named shell scripts or aliases to just set it for the program 
> call alone.

OK.

> Relocatable installation means static linking of our tools against our 
> own libs. This does not mean static linking entirely, but at least 
> static linking against libpq.a.

Static linking of our binaries?  Hmmm.  Makes sense.  We would need a
special flag for that.  I can add it to the TODO.

Seems my testing was flawed because I didn't clean out my hard-coded
directory properly.  I see now:
$ bin/initdbbin/initdb: can't load library 'libpq.so.3'

and I see in my initdb link line:
-Wl,-rpath,/usr/local/pgsql/lib

So, right now, you can do relocatable installs, but you have to make
changes in ld.so.conf or your environment to allow it to find the shared
libraries.  In the future, we can add a configure flag so everything is
linked statically.

--  Bruce Momjian                        |  http://candle.pha.pa.us pgman@candle.pha.pa.us               |  (610)
359-1001+  If your life is a hard drive,     |  13 Roberts Road +  Christ can be your backup.        |  Newtown Square,
Pennsylvania19073
 


pgsql-hackers by date:

Previous
From: Gaetano Mendola
Date:
Subject: Why new features only in magior releases ?
Next
From: Bruce Momjian
Date:
Subject: Re: Relocatable installs