Re: relocatable binary distribution
От | David Garamond |
---|---|
Тема | Re: relocatable binary distribution |
Дата | |
Msg-id | 40489032.5030604@zara.6.isreserved.com обсуждение исходный текст |
Ответ на | Re: relocatable binary distribution ("Jim Wilson" <jimw@kelcomaine.com>) |
Список | 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 по дате отправления: