Re: Considerations for running current cvs pgsql and pgsql release on same machine? - Mailing list pgsql-hackers

From Robert B. Easter
Subject Re: Considerations for running current cvs pgsql and pgsql release on same machine?
Date
Msg-id 00122302452300.04345@comptechnews
Whole thread Raw
In response to Re: Considerations for running current cvs pgsql and pgsql release on same machine?  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-hackers
On Friday 22 December 2000 22:05, Tom Lane wrote:
> I routinely run multiple versions at the same time.  You need a separate
> port, install directory, and data directory for each.  Easiest way to do
> this is to configure the non-default versions with
>
> ../configure --with-pgport=nnn --prefix=/path/to/someplace
>
> to establish their ports and install dirs, and then initdb each version
> with the appropriate data directory specified.  A user then doesn't have
> to do much except make his PATH point at the PREFIX/bin dir for the
> version he wants to use at the moment.
>
> You may also find that you have to pump up your kernel's IPC resource
> parameters in order to start up multiple postmasters.
>
> > How will the use of the environment variables PGDATA and PGLIB be
> > affected if I have them still pointing at the release version?
>
> They had better have the right values while initdb'ing or starting
> each individual version.  There's no good reason to have either one
> set in the general environment, or actually to set them at all --- you
> can get the same results with command line switches to initdb and
> postmaster, with much less chance of bad side-effects.
>
> A tip I find handy is to make sure that the databases available under
> each live postmaster have distinct names.  This helps to avoid the
> mistake of testing against 7.0.2 when you thought you were testing
> against 7.0.3 or current or whatever...

Thanks for these tips.  I took out all global PG environment variables from 
/etc/profile.  The way I did it, was to make a directory /etc/pgsql.d and in 
there have files pgsql.sh and pgcvs.sh for production and cvs test 
environments.  Each sets up the variables:

# Change these two
PGHOME=/usr/local/pgsql or /home/pgcvs/pgsql
PGPORT=5432 or 5433

PGLIB=$PGHOME/lib
PGDATA=$PGHOME/data
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PGLIB
MANPATH=$MANPATH:$PGHOME/man
PATH=$PGHOME/bin
export PGHOME PGPORT PGLIB PGDATA LD_LIBRARY_PATH MANPATH PATH

These two files are then included into .profile in user directories like:

# Pgsql prod
.. /etc/pgsql.d/pgsql.sh

or

# Pgsql cvs dev
.. /etc/pgsql.d/pgcvs.sh

The cvs development version runs under user pgcvs while the production runs 
under user postgres as normal.  The only little problem about this setup is 
that I can almost just run pgsql.sh and pgcvs.sh to switch between the two 
environments while logged in as a user.  But if I do, PATH, MANPATH and 
LD_LIBRARY path, because they append, don't replace one thing for another.  
I'm sure that can be fixed with some simple bash/awk/sed trick but I haven't 
tried yet.  The next thing is to setup another local-only httpd on port 8080 
or whatever and get another php to compile with the cvs libs so I can test 
web stuff.


-- 
-------- Robert B. Easter  reaster@comptechnews.com ---------
- CompTechNews Message Board   http://www.comptechnews.com/ -
- CompTechServ Tech Services   http://www.comptechserv.com/ -
---------- http://www.comptechnews.com/~reaster/ ------------


pgsql-hackers by date:

Previous
From: Tom Lane
Date:
Subject: Re: Considerations for running current cvs pgsql and pgsql release on same machine?
Next
From: Bruce Momjian
Date:
Subject: GNU readline and BSD license