Search Postgresql Archives

Re: initdb has trouble finding the right ascii_and_mic.so

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sun, Jan 10, 2010 at 4:05 PM, Tom Lane <tgl@xxxxxxxxxxxxx> wrote:
> "Maciej (Matchek) Blizinski" <blizinski@xxxxxxxxxx> writes:
>> There are 2 sets of libraries installed.
>> /opt/csw/lib/postgresql/8.4/lib contains 32-bit libraries.
>> /opt/csw/lib/postgresql/8.4/lib/64 contains the 64-bit set.
>
> You can't just make up some random layout for the libraries.

The layout is not exactly random.  On Solaris:

maciej@netra ~ $ ls -ld /usr/lib/32
lrwxrwxrwx   1 root     root           1 Feb 14  2009 /usr/lib/32 -> .
maciej@netra ~ $ ls -ld /usr/lib/64
lrwxrwxrwx   1 root     root           7 Feb 14  2009 /usr/lib/64 -> sparcv9

And, by analogy:

maciej@netra ~ $ ls -ld /opt/csw/lib/32
lrwxrwxrwx   1 root     root           1 Sep 25 08:48 /opt/csw/lib/32 -> .
maciej@netra ~ $ ls -ld /opt/csw/lib/64
lrwxrwxrwx   1 root     root           7 Sep 25 08:48 /opt/csw/lib/64 -> sparcv9

The whole operating system is laid out this way.  The issue of finding
the right set of libraries is solved in the following way:

maciej@netra ~ $ /usr/ccs/bin/dump -Lv /opt/csw/bin/sparcv8/gpg |
gegrep 'R(UN|)PATH'
[13]    RUNPATH
/opt/csw/lib/$ISALIST:/opt/csw/lib:/opt/csw/lib:/opt/csw/lib
[14]    RPATH
/opt/csw/lib/$ISALIST:/opt/csw/lib:/opt/csw/lib:/opt/csw/lib
maciej@netra ~ $ /usr/ccs/bin/dump -Lv /opt/csw/bin/sparcv9/gpg |
gegrep 'R(UN|)PATH'
[11]    RUNPATH         /opt/csw/lib/$ISALIST:/opt/csw/lib/64
[12]    RPATH           /opt/csw/lib/$ISALIST:/opt/csw/lib/64

$ISALIST expands to:

sparcv9+vis sparcv9 sparcv8plus+vis sparcv8plus sparcv8 sparcv8-fsmuld
sparcv7 sparc

The binary checks each element of this list, substituting the $ISALIST
token for the path.  After the expansion, /opt/csw/lib/$ISALIST
becomes /opt/csw/lib/sparcv9+vis, /opt/csw/lib/sparcv9,
/opt/csw/lib/sparcv8plus+vis, etc.

In the case of the initdb binary:

maciej@netra ~ $ /usr/ccs/bin/dump -Lv
/opt/csw/lib/postgresql/8.4/bin/sparcv8/initdb | gegrep 'R(UN|)PATH'
[17]    RUNPATH
/opt/csw/lib/$ISALIST:/opt/csw/lib:/opt/csw/lib/postgresql/8.4/lib/$ISALIST:/opt/csw/lib/postgresql/8.4/lib:/opt/csw/lib:/opt/csw/lib/postgresql/8.4/lib
[18]    RPATH
/opt/csw/lib/$ISALIST:/opt/csw/lib:/opt/csw/lib/postgresql/8.4/lib/$ISALIST:/opt/csw/lib/postgresql/8.4/lib:/opt/csw/lib:/opt/csw/lib/postgresql/8.4/lib
maciej@netra ~ $ /usr/ccs/bin/dump -Lv
/opt/csw/lib/postgresql/8.4/bin/sparcv9/initdb | gegrep 'R(UN|)PATH'
[17]    RUNPATH
/opt/csw/lib/$ISALIST:/opt/csw/lib/64:/opt/csw/lib/postgresql/8.4/lib/$ISALIST:/opt/csw/lib/postgresql/8.4/lib/64:/opt/csw/lib/postgresql/8.4/lib
[18]    RPATH
/opt/csw/lib/$ISALIST:/opt/csw/lib/64:/opt/csw/lib/postgresql/8.4/lib/$ISALIST:/opt/csw/lib/postgresql/8.4/lib/64:/opt/csw/lib/postgresql/8.4/lib

The search path for the 64-bit binary is:

/opt/csw/lib/$ISALIST
/opt/csw/lib/64
/opt/csw/lib/postgresql/8.4/lib/$ISALIST
/opt/csw/lib/postgresql/8.4/lib/64
/opt/csw/lib/postgresql/8.4/lib

All the binaries have this RPATH set, so they have enough information
to find the right libraries.

> Even if this could work, I don't see a lot of point to it.
> Why don't you set up two independent installation trees if
> you want to have both 32- and 64-bit postgres installed?

That is an option, but I wanted to avoid separate installation trees
in the first place.  I'm working on replicating the Debian layout, to
support installing multiple PostgreSQL versions at the same time.
Currently, OpenCSW package[1] install PostgreSQL in
/opt/csw/postgresql and there's no room for another version and/or for
data migration.  There are also issues with things like the PATH
setting, so the PostgreSQL package doesn't work out of the box.  I
want to fix that.

My options seem to be:

- find a way to make initdb use the information from RPATH
- ship 32-bit binaries only

Maciej

[1] http://www.opencsw.org/packages/postgresql

-- 
Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux