Re: relocatable binary distribution - Mailing list pgsql-general

From David Garamond
Subject Re: relocatable binary distribution
Date
Msg-id 40489032.5030604@zara.6.isreserved.com
Whole thread Raw
In response to Re: relocatable binary distribution  ("Jim Wilson" <jimw@kelcomaine.com>)
List pgsql-general
Jim Wilson wrote:
>>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).
>
> It seems like you could handle all the above with just a shell script wrapper.
>  All three, the library path, socket directory, and data directory can be
> specified either in environment or on the command line.  Where are you getting
> stuck?

Ah, I should've "read the documentation for the complete list of
run-time configuration settings". Didn't see -c when I ran 'postmaster
--help'. Ok, now I can easily set LD_LIBRARY_PATH, socket directory, and
Postgres library path.

But now I'm stuck while trying to load plruby. plruby.so needs
libruby.so, and this happens to be in another special location
(/home/dave/opt/ruby/lib/) as the system itself doesn't have Ruby
installed system-wide. I've tried adding /home/dave/opt/ruby/lib/ to
LD_LIBRARY_PATH and dynamic_library_path but I still couldn't load it
with "CREATE FUNCTION".

(I can build plruby.so that links libruby.so statically though, so this
problem is not major).

BTW, I wonder why doesn't pg_ctl accept -c ?

--
dave


pgsql-general by date:

Previous
From: phil campaigne
Date:
Subject: Setting up Postgres on Linux
Next
From: phil campaigne
Date:
Subject: Setting up Postgresql on Linux