======================================================= Frequently Asked Questions (FAQ) for PostgreSQL V6.5 Sun Solaris Specific TO BE READ IN CONJUNCTION WITH THE NORMAL FAQ ======================================================= last updated: Thu Sep 21 9:30:00 CET 1999 current maintainer: Marc Liyanage (liyanage@access.ch) original author: Marc Liyanage (liyanage@access.ch) Contents: 1.1) What tools do I need to build and install PostgreSQL on Solaris? 1.2) What else do I have to do before building PostgreSQL? 1.3) Why am I getting "IpcMemoryCreate" errors when I try to run postmaster? 1.4) Why am I getting "Can't tell what username to use" errors when I try to run initdb? A) Contributors Notes: - The commands given here are for the bash shell. If you use a different shell, you'll have to change the commands accordingly, especially these regarding environment variables. - These instructions are written for Solaris 2.6 ---------------------------------------------------------------------- Section 1: Building and Installing PostgreSQL ---------------------------------------------------------------------- 1.1) What tools do I need to build and install PostgreSQL on Solaris? You will need - GNU flex 2.5.4 or better (the lex included in Solaris 2.6 won't work) - GNU bison (the yacc included in Solaris 2.6 won't work) - GNU zip (gzip and especially zcat for installing the docs) - GNU make - GNU readline library We also used - GNU cc (gcc 2.8.1) If you like Solaris packages, you can find these tools here: http://www.sunfreeware.com If you prefer sources, look here: http://www.gnu.org/order/ftp.html 1.2) What else do I have to do before building PostgreSQL? Shared libraries ---------------- The default installation procedure puts the shared libraries into "/usr/local/pgsql/lib", but the dynamic loader won't find them there at runtime unless you use some hack like symlinking the libraries in /usr/lib or setting LD_LIBRARY_PATH for every user that will use the DB system. The first time you'll encounter this problem is usually when running "initdb". It will fail with something like ld.so.1: pg_id: fatal: libpq.so: open failed: No such file or directory We recommend that you store the path of the directory containing the libraries in the environment variable LD_RUN_PATH *before* starting the build. This will cause the linker to store this path in the binaries. Do this: # export LD_RUN_PATH=/usr/local/pgsql/lib (or wherever you choose to put the libraries) There is some good information about this here: http://www.visi.com/~barr/ldpath.html zcat ---- If - both the original solaris zcat as well as the recommended GNU zcat are installed on the system (e.g. the former in /usr/bin and the latter in /usr/local/bin) and - configure (or "which zcat") finds the wrong one then configure needs to be told where GNU zcat can be found. Failure to do so will cause configure to select the wrong one and the "gmake install" command in the "doc" subdirectory (step 12 in the INSTALL file) will fail because Solaris zcat cannot handle the .gz compressed documentation files. To fix this, type # export GZCAT=/usr/local/bin/zcat (or wherever your GNU zcat lives) before running configure. 1.3) Why am I getting "IpcMemoryCreate" errors when I try to run the postmaster? (See also 3.4 in the main FAQ file) Under Solaris 2.6 and probably others, the default shared memory maximum segment size kernel parameter is set too low. The solution is to put something like the following line into /etc/system and reboot the system. set shmsys:shminfo_shmmax=0x7fffffff Excellent info regarding shared memory under Solaris can be found here: http://www.sunworld.com/swol-09-1997/swol-09-insidesolaris.html 1.4) Why am I getting "Can't tell what username to use" errors when I try to run initdb? Put something like this into the .bash_profile startup script of the postgres user (see also step 17 in the INSTALL file): export USER=postgres ---------------------------------------------------------------------- Section A: Contributors ---------------------------------------------------------------------- - Jose Luis Rodriguez Garcia Suggested to change the shmmax parameter in 1.3 from 0xffffffff to 0x7fffffff because the value is a signed integer in Solaris versions prior to 2.6.