Installing different PostgreSQL versions in parallel

Started by Rafael Ostertagover 14 years ago6 messagesgeneral
Jump to latest
#1Rafael Ostertag
raos@opencsw.org

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

#2raghu ram
raghuchennuru@gmail.com
In reply to: Rafael Ostertag (#1)
Re: Installing different PostgreSQL versions in parallel

On Tue, Dec 6, 2011 at 12:13 AM, Rafael Ostertag <raos@opencsw.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

#3John R Pierce
pierce@hogranch.com
In reply to: raghu ram (#2)
Re: Installing different PostgreSQL versions in parallel

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

#4Rafael Ostertag
raos@opencsw.org
In reply to: John R Pierce (#3)
Re: Installing different PostgreSQL versions in parallel

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

#5John R Pierce
pierce@hogranch.com
In reply to: Rafael Ostertag (#4)
Re: Installing different PostgreSQL versions in parallel

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

#6Rafael Ostertag
raos@opencsw.org
In reply to: John R Pierce (#5)
Re: Installing different PostgreSQL versions in parallel

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