diff --git a/doc/FAQ_Solaris b/doc/FAQ_Solaris index 5ae45aa61f..6a6e640928 100644 --- a/doc/FAQ_Solaris +++ b/doc/FAQ_Solaris @@ -1,9 +1,9 @@ ============================================================ Frequently Asked Questions (FAQ) for PostgreSQL Sun Solaris specific -to be read in conjunction with the installation instructions +To be read in conjunction with the installation instructions. ============================================================ -last updated: $Date: 2006/10/04 22:03:22 $ +Last updated: $Date: 2006/10/05 03:13:15 $ Contents: @@ -22,10 +22,10 @@ Contents: You will need -- GNU zip (for installing the documentation) -- GNU make -- GNU readline library (optional) -- Sun Studio CC or GCC + GNU zip (for installing the documentation) + GNU make + GNU readline library (optional) + Sun Studio CC or GCC You can download Sun Studio from: http://developers.sun.com/prodtech/cc/downloads/index.jsp @@ -35,66 +35,67 @@ present on the Solaris companion CD. If you like packages for older version of Solaris, you can find these tools here: -http://www.sunfreeware.com or http://www.blastwave.org + + http://www.sunfreeware.com or http://www.blastwave.org If you prefer sources, look here: -http://www.gnu.org/order/ftp.html -You can build with either GCC or Sun's compiler suite. For better -code optimalization Sun's compiler is strongly recommended on the -SPARC architecture. We have heard reports of problems when using -gcc 2.95.1; gcc 2.95.3 or later is recommended. If you are using -Sun's compiler, be careful *not* to select /usr/ucb/cc; -use /opt/SUNWspro/bin/cc. + http://www.gnu.org/order/ftp.html + +You can build with either GCC or Sun's compiler suite. For better code +optimalization Sun's compiler is strongly recommended on the SPARC +architecture. We have heard reports of problems when using gcc 2.95.1; +gcc 2.95.3 or later is recommended. If you are using Sun's compiler, be +careful *not* to select /usr/ucb/cc; use /opt/SUNWspro/bin/cc. 2) Why do I get problems when building with OpenSSL support? -When you build PostgreSQL with OpenSSL support you might get -compilation errors in the following files: +When you build PostgreSQL with OpenSSL support you might get compilation +errors in the following files: -src/backend/libpq/crypt.c -src/backend/libpq/password.c -src/interfaces/libpq/fe-auth.c -src/interfaces/libpq/fe-connect.c + src/backend/libpq/crypt.c + src/backend/libpq/password.c + src/interfaces/libpq/fe-auth.c + src/interfaces/libpq/fe-connect.c This is because of a namespace conflict between the standard /usr/include/crypt.h header and the header files provided by OpenSSL. Upgrading your OpenSSL installation to version 0.9.6a fixes this -problem. - -Solaris 9 and above already newer version of OpenSSL. +problem. Solaris 9 and above already newer version of OpenSSL. 3) Why does configure complain about a failed test program? -This is probably a case of the run-time linker being unable to find -some library. On solaris 8 and older it should be libz or some other -non-standard library, such as libssl. To point it to the right location, -set the LD_LIBRARY_PATH environment variable, e.g., +This is probably a case of the run-time linker being unable to find some +library. On solaris 8 and older it should be libz or some other +non-standard library, such as libssl. To point it to the right +location, set the LD_LIBRARY_PATH environment variable, e.g., -LD_LIBRARY_PATH=/usr/sfw/lib:/opt/sfw/lib:/usr/local/lib -export LD_LIBRARY_PATH + LD_LIBRARY_PATH=/usr/sfw/lib:/opt/sfw/lib:/usr/local/lib + export LD_LIBRARY_PATH -and restart configure. You will also have to keep this setting -whenever you run any of the installed PostgreSQL programs. - -Alternatively, set the environment variable LD_RUN_PATH. See the -ld(1) man page for more information. +and restart configure. You will also have to keep this setting whenever +you run any of the installed PostgreSQL programs. Alternatively, set +the environment variable LD_RUN_PATH. See the ld(1) man page for more +information. 4) Why does my 64-bit build sometimes crash? On Solaris 7 and older, the 64-bit version of libc has a buggy vsnprintf -routine, which leads to erratic core dumps in PostgreSQL. The simplest known -workaround is to force PostgreSQL to use its own version of vsnprintf rather -than the library copy. To do this, after you run 'configure' edit a file -produced by configure: +routine, which leads to erratic core dumps in PostgreSQL. The simplest +known workaround is to force PostgreSQL to use its own version of +vsnprintf rather than the library copy. To do this, after you run +'configure' edit a file produced by configure: In src/Makefile.global, change the line + LIBOBJS = + to read + LIBOBJS = snprintf.o (There might be other files already listed in this variable. Order @@ -105,42 +106,45 @@ Then build as usual. 5) How can I compile for optimum performance? -On SPARC architecture Sun Studio is strongly recommended for compilation. -Try using -xO5 optimalization flag to generate significantly faster binaries. -Do not use any flags which modify behavior of floating point operations and -errno processing (e.g. -fast). These flags should raise some nonstandard -PostgreSQL behavior for example in the date/time computing. +On SPARC architecture Sun Studio is strongly recommended for +compilation. Try using -xO5 optimalization flag to generate +significantly faster binaries. Do not use any flags which modify +behavior of floating point operations and errno processing (e.g. +-fast). These flags should raise some nonstandard PostgreSQL behavior +for example in the date/time computing. -If you do not reason to use 64-bit binaries on SPARC, prefer 32-bit version. -The 64-bit operations are slower and 64-bit binaries are slower then 32-bits. -And on other side a 32-bit code on the AMD64 CPU family is not native and -that is why 32-bit code is significant slower on this CPU family. +If you do not reason to use 64-bit binaries on SPARC, prefer 32-bit +version. The 64-bit operations are slower and 64-bit binaries are slower +then 32-bits. And on other side a 32-bit code on the AMD64 CPU family is +not native and that is why 32-bit code is significant slower on this +CPU family. 6) How to compile PostgreSQL with Sun Studio? On Solaris 10 you can performed following steps: -export CC=/opt/SUNWspro/bin/cc -export CFLAGS=-xO5 -export LDFLAGS=-lm -./configure --without-readline -gmake + export CC=/opt/SUNWspro/bin/cc + export CFLAGS=-xO5 + export LDFLAGS=-lm + ./configure --without-readline + gmake 7) Where I can download prepared Solaris packages? -The PostgreSQL is bundled with Solaris 10 (from update 2). Official packages -are too available on http://pgfoundry.org/projects/solarispackages/. - -Packages for older Solaris version (8,9) you can download from: -http://www.sunfreeware.com or http://www.blastwave.org +The PostgreSQL is bundled with Solaris 10 (from update 2). Official +packages are too available on +http://pgfoundry.org/projects/solarispackages/. Packages for older +Solaris version (8,9) you can download from: http://www.sunfreeware.com +or http://www.blastwave.org 8) How to tune PostgreSQL and Solaris for best performance? Some tuning tricks can be found here: -http://www.sun.com/servers/coolthreads/tnb/applications_postgresql.jsp + + http://www.sun.com/servers/coolthreads/tnb/applications_postgresql.jsp This article is primary focused on T2000 platform, however, many of recommendations are general for other hardware with Solaris. @@ -149,29 +153,31 @@ recommendations are general for other hardware with Solaris. 9) Can I use dtrace for tracing PostgreSQL? The PostgreSQL 8.2 has implemented dtrace support. You can enable it by -the --enable-dtrace configure switch. If you want to compile a 64-bit code -with dtrace you must specify DTRACEFLAGS='-64', e.g. +the --enable-dtrace configure switch. If you want to compile a 64-bit +code with dtrace you must specify DTRACEFLAGS='-64', e.g. Using gcc compiler: -$ ./configure CC='gcc -m64' --enable-dtrace DTRACEFLAGS='-64' ... + + $ ./configure CC='gcc -m64' --enable-dtrace DTRACEFLAGS='-64' ... Using Sun compiler: -$ configure CC='/opt/SUNWspro/bin/cc -xtarget=native64' --enable-dtrace DTRACEFLAGS='-64' + + $ configure CC='/opt/SUNWspro/bin/cc -xtarget=native64' --enable-dtrace DTRACEFLAGS='-64' If you have some problem with postgres linking, looks like: -Undefined first referenced - symbol in file -AbortTransaction utils/probes.o -CommitTransaction utils/probes.o -ld: fatal: Symbol referencing errors. No output written to postgres -collect2: ld returned 1 exit status -gmake: *** [postgres] Error 1 + Undefined first referenced + symbol in file + AbortTransaction utils/probes.o + CommitTransaction utils/probes.o + ld: fatal: Symbol referencing errors. No output written to postgres + collect2: ld returned 1 exit status + gmake: *** [postgres] Error 1 + +check if you have Solaris 10u3 or newer installed on your box. You can +also find more information here: -, check if you have Solaris 10u3 or newer installed on your box. - -You can also find more information here: -http://blogs.sun.com/robertlor/entry/user_level_dtrace_probes_in + http://blogs.sun.com/robertlor/entry/user_level_dtrace_probes_in