Installing different PostgreSQL versions in parallel

Lists: pgsql-general
From: Rafael Ostertag <raos(at)opencsw(dot)org>
To: pgsql-general(at)postgresql(dot)org
Subject: Installing different PostgreSQL versions in parallel
Date: 2011-12-05 18:43:07
Message-ID: 20111205184307.GE18805@bender.opencsw.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-general

Hi list

I'm in the course of creating PostgreSQL packages for Solaris. One of the
requirement is to install different PostgreSQL versions in parallel, the other
is to have all the libraries stuffed in one place.

Now, if I install, let's say, pgsql 8.3 and 8.4 in parallel and all libraries
go to /opt/csw/lib, I end up with:

$ ls -l /opt/csw/lib/libpq*
lrwxrwxrwx 1 root root libpq.so -> libpq.so.5.2
lrwxrwxrwx 1 root root libpq.so.5 -> libpq.so.5.2
-rwxr-xr-x 1 root bin libpq.so.5.1
-rwxr-xr-x 1 root bin libpq.so.5.2

Which in turn leads to 8.3 binaries loading libpq.so.5.2, effectively mixing
8.3 binaries with 8.4 libraries.

Finally, the question: How bad is it having a pgsql binary version X.Y using a
library X.Z?

Thanks for your help.

Cheers
Rafael


From: raghu ram <raghuchennuru(at)gmail(dot)com>
To: Rafael Ostertag <raos(at)opencsw(dot)org>
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: Installing different PostgreSQL versions in parallel
Date: 2011-12-07 04:30:39
Message-ID: CALnrrJRbRxCZYOJS5j0vWKEQkqE96gDtGQqGpT1N-AMK12aaFQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-general

On Tue, Dec 6, 2011 at 12:13 AM, Rafael Ostertag <raos(at)opencsw(dot)org> wrote:

> Hi list
>
> I'm in the course of creating PostgreSQL packages for Solaris. One of the
> requirement is to install different PostgreSQL versions in parallel, the
> other
> is to have all the libraries stuffed in one place.
>
> Now, if I install, let's say, pgsql 8.3 and 8.4 in parallel and all
> libraries
> go to /opt/csw/lib, I end up with:
>
> $ ls -l /opt/csw/lib/libpq*
> lrwxrwxrwx 1 root root libpq.so -> libpq.so.5.2
> lrwxrwxrwx 1 root root libpq.so.5 -> libpq.so.5.2
> -rwxr-xr-x 1 root bin libpq.so.5.1
> -rwxr-xr-x 1 root bin libpq.so.5.2
>
> Which in turn leads to 8.3 binaries loading libpq.so.5.2, effectively
> mixing
> 8.3 binaries with 8.4 libraries.
>
> Finally, the question: How bad is it having a pgsql binary version X.Y
> using a
> library X.Z?
>
>
To overcome this issues,use "--prefix=PREFIX " option while running
"configure",so that PostgreSQL 8.3 version related directories [i.e
bin,include,lib,share] will store in preferred PREFIX location.

Ex: ./configure --prefix=/usr/local/pgsql83
./configure --prefix=/usr/local/pgsql84

Once completion of PostgreSQL installation,you will see
"bin,include,lib,share" directories are created under the
/usr/local/pgsql83 location.

--Raghu Ram


From: John R Pierce <pierce(at)hogranch(dot)com>
To: pgsql-general(at)postgresql(dot)org
Subject: Re: Installing different PostgreSQL versions in parallel
Date: 2011-12-07 04:35:58
Message-ID: 4EDEED2E.7050405@hogranch.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-general

On 12/06/11 8:30 PM, raghu ram wrote:
>
> I'm in the course of creating PostgreSQL packages for Solaris. One
> of the
> requirement is to install different PostgreSQL versions in
> parallel, the other
> is to have all the libraries stuffed in one place.
>
> Now, if I install, let's say, pgsql 8.3 and 8.4 in parallel and
> all libraries
> go to /opt/csw/lib, I end up with:
>
> $ ls -l /opt/csw/lib/libpq*
> lrwxrwxrwx 1 root root libpq.so -> libpq.so.5.2
> lrwxrwxrwx 1 root root libpq.so.5 -> libpq.so.5.2
> -rwxr-xr-x 1 root bin libpq.so.5.1
> -rwxr-xr-x 1 root bin libpq.so.5.2
>
> Which in turn leads to 8.3 binaries loading libpq.so.5.2,
> effectively mixing
> 8.3 binaries with 8.4 libraries.
>
> Finally, the question: How bad is it having a pgsql binary version
> X.Y using a
> library X.Z?
>
>
> To overcome this issues,use "--prefix=PREFIX " option while running
> "configure",so that PostgreSQL 8.3 version related directories [i.e
> bin,include,lib,share] will store in preferred PREFIX location.
>
> Ex: ./configure --prefix=/usr/local/pgsql83
> ./configure --prefix=/usr/local/pgsql84
>
> Once completion of PostgreSQL installation,you will see
> "bin,include,lib,share" directories are created under the
> /usr/local/pgsql83 location.
>

its apparent to me from the /opt/csw prefix he mentions that he's
building PostgreSQL for the Blastwave/OpenCSW Solaris software
repositories, and HAS to put the libs in /opt/csw/lib due to project
policies.

--
john r pierce N 37, W 122
santa cruz ca mid-left coast


From: Rafael Ostertag <raos(at)opencsw(dot)org>
To: pgsql-general(at)postgresql(dot)org
Subject: Re: Installing different PostgreSQL versions in parallel
Date: 2011-12-07 06:37:26
Message-ID: 20111207063726.GI18805@bender.opencsw.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-general

Hi John
On Tue, Dec 06, 2011 at 08:35:58PM -0800, John R Pierce wrote:
> On 12/06/11 8:30 PM, raghu ram wrote:
> >
> > I'm in the course of creating PostgreSQL packages for Solaris. One
> > of the
> > requirement is to install different PostgreSQL versions in
> > parallel, the other
> > is to have all the libraries stuffed in one place.
> >
> > Now, if I install, let's say, pgsql 8.3 and 8.4 in parallel and
> > all libraries
> > go to /opt/csw/lib, I end up with:
> >
> > $ ls -l /opt/csw/lib/libpq*
> > lrwxrwxrwx 1 root root libpq.so -> libpq.so.5.2
> > lrwxrwxrwx 1 root root libpq.so.5 -> libpq.so.5.2
> > -rwxr-xr-x 1 root bin libpq.so.5.1
> > -rwxr-xr-x 1 root bin libpq.so.5.2
> >
> > Which in turn leads to 8.3 binaries loading libpq.so.5.2,
> > effectively mixing
> > 8.3 binaries with 8.4 libraries.
> >
> > Finally, the question: How bad is it having a pgsql binary version
> > X.Y using a
> > library X.Z?
> >
> >
> >To overcome this issues,use "--prefix=PREFIX " option while
> >running "configure",so that PostgreSQL 8.3 version related
> >directories [i.e bin,include,lib,share] will store in preferred
> >PREFIX location.
> >
> >Ex: ./configure --prefix=/usr/local/pgsql83
> > ./configure --prefix=/usr/local/pgsql84
> >
> >Once completion of PostgreSQL installation,you will see
> >"bin,include,lib,share" directories are created under the
> >/usr/local/pgsql83 location.
> >
>
> its apparent to me from the /opt/csw prefix he mentions that he's
> building PostgreSQL for the Blastwave/OpenCSW Solaris software
> repositories, and HAS to put the libs in /opt/csw/lib due to project
> policies.
>

Exactly. Thanks for clarification on this.

--Rafael


From: John R Pierce <pierce(at)hogranch(dot)com>
To: pgsql-general(at)postgresql(dot)org
Subject: Re: Installing different PostgreSQL versions in parallel
Date: 2011-12-07 06:55:40
Message-ID: 4EDF0DEC.9020207@hogranch.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-general

On 12/06/11 10:37 PM, Rafael Ostertag wrote:
>> >
>> > its apparent to me from the /opt/csw prefix he mentions that he's
>> > building PostgreSQL for the Blastwave/OpenCSW Solaris software
>> > repositories, and HAS to put the libs in /opt/csw/lib due to project
>> > policies.
>> >
> Exactly. Thanks for clarification on this.

afraid I don't have much int he way of suggestions for you to achieve
that goal. I install my Solaris postgres builds into

/opt/(mygroup)/pgsqlXX/

and their lib and bins and everything are in that path, then when I
launch them, I expressly put the data somewhere like /u02/pgsqlXX/data

--
john r pierce N 37, W 122
santa cruz ca mid-left coast


From: Rafael Ostertag <raos(at)opencsw(dot)org>
To: pgsql-general(at)postgresql(dot)org
Subject: Re: Installing different PostgreSQL versions in parallel
Date: 2011-12-07 08:48:05
Message-ID: 20111207084805.GJ18805@bender.opencsw.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-general

Hi John

On Tue, Dec 06, 2011 at 10:55:40PM -0800, John R Pierce wrote:
> afraid I don't have much int he way of suggestions for you to
> achieve that goal. I install my Solaris postgres builds into
>
> /opt/(mygroup)/pgsqlXX/
>
> and their lib and bins and everything are in that path, then when I
> launch them, I expressly put the data somewhere like
> /u02/pgsqlXX/data

Thanks a lot for your time and effort.

One solution for my problem would be adjusting the SONAME of the libraries. At
least for 8.X libraries, it is set to 'lib<name>.so.M'. I could adjust the
SONAME to include the minor version as well, like 'lib<name>.so.M.N', which
would allow me to have libraries of different pgsql versions in /opt/csw/lib
and make sure the binaries load the libraries matching their version.

However, there is a concern in the OpenCSW community against this approach.
Therefore, I would like to know what pgsql thinks about mixing binaries and
libraries of different pgsql versions. Maybe a developer could shed some light
on this issue?

Regards
Rafael