Thread: Installing different PostgreSQL versions in parallel
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
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
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
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
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
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