Re: Relocatable installs

From: Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)us>
To: Jan Wieck <JanWieck(at)Yahoo(dot)com>
Cc: Andrew Dunstan <andrew(at)dunslane(dot)net>, PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Relocatable installs
Date: 2004-05-18 16:05:29
Message-ID: 200405181605.i4IG5Tq02334@candle.pha.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: 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/initdb
bin/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(at)candle(dot)pha(dot)pa(dot)us | (610) 359-1001
+ If your life is a hard drive, | 13 Roberts Road
+ Christ can be your backup. | Newtown Square, Pennsylvania 19073

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Bruce Momjian 2004-05-18 16:09:10 Re: Relocatable installs
Previous Message Gaetano Mendola 2004-05-18 15:38:53 Why new features only in magior releases ?