I'm making a "relocatable" Postgres binary distribution for my clients.
Everything goes into postgresql-7.4.1/ directory, including libraries
and binaries. This will be installed by a non-privileged user under his
own home directory. The goal is that they could just extract the
tarball, adjust PATH if he wants, and then just run initdb + pg_ctl start.
For binaries like bin/psql or bin/pg_vacuum that needs libpq.so, I've
created a C wrapper that first sets LD_LIBRARY_PATH to a relative path
(../lib/) and then exec() the real binary (moved to bin/psql.real or
bin/pg_vacuum.real).
However, it would be nice if $libdir could be relative to the binary
too. Or if there were special token too like $HOME or $execdir or
$datadir that can be used in PL declaration or in postgresql.conf:
dynamic_library_path = '$execdir/../lib'
unix_socket_directory = '$HOME/tmp' # or e.g. '$datadir/../tmp'
Where $execdir is the path of the postmaster currently running, and
$datadir is the current data directory (value of -D of postmaster/pg_ctl
command).
(Also, I'd appreciate if someone could explain how this 'relocatability'
issue is/will be tackled on Win32 port).
--
dave