mirror of
				https://github.com/postgres/postgres.git
				synced 2025-11-03 09:13:20 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			184 lines
		
	
	
		
			6.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			184 lines
		
	
	
		
			6.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
============================================================
 | 
						|
Frequently Asked Questions (FAQ) for PostgreSQL
 | 
						|
Sun Solaris specific
 | 
						|
To be read in conjunction with the installation instructions.
 | 
						|
============================================================
 | 
						|
Last updated:        $Date: 2006/10/05 03:13:15 $
 | 
						|
 | 
						|
 | 
						|
Contents:
 | 
						|
 | 
						|
1) What tools do I need to build and install PostgreSQL on Solaris?
 | 
						|
2) Why do I get problems when building with OpenSSL support?
 | 
						|
3) Why does configure complain about a failed test program?
 | 
						|
4) Why does my 64-bit build sometimes crash?
 | 
						|
5) How can I compile for optimum performance?
 | 
						|
6) How to compile PostgreSQL with Sun Studio?
 | 
						|
7) Where I can download prepared Solaris packages?
 | 
						|
8) How to tune PostgreSQL and Solaris for best performance?
 | 
						|
9) Can I use dtrace for tracing PostgreSQL?
 | 
						|
 | 
						|
1) What tools do I need to build and install PostgreSQL on Solaris?
 | 
						|
 | 
						|
You will need
 | 
						|
 | 
						|
	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
 | 
						|
 | 
						|
Many of GNU tools are integrated into the Solaris 10 or they are
 | 
						|
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
 | 
						|
 | 
						|
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.
 | 
						|
 | 
						|
 | 
						|
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:
 | 
						|
 | 
						|
	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.
 | 
						|
 | 
						|
 | 
						|
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.,
 | 
						|
 | 
						|
	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.
 | 
						|
 | 
						|
 | 
						|
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:
 | 
						|
 | 
						|
In src/Makefile.global, change the line
 | 
						|
 | 
						|
    LIBOBJS =
 | 
						|
 | 
						|
to read
 | 
						|
 | 
						|
    LIBOBJS = snprintf.o
 | 
						|
 | 
						|
(There might be other files already listed in this variable.  Order
 | 
						|
does not matter.)
 | 
						|
 | 
						|
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. 
 | 
						|
 | 
						|
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
 | 
						|
 | 
						|
 | 
						|
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
 | 
						|
 | 
						|
 | 
						|
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
 | 
						|
 | 
						|
This article is primary focused on T2000 platform, however, many of
 | 
						|
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.
 | 
						|
 | 
						|
Using gcc compiler:
 | 
						|
 | 
						|
	$ ./configure CC='gcc -m64' --enable-dtrace DTRACEFLAGS='-64' ...
 | 
						|
            
 | 
						|
Using Sun compiler:
 | 
						|
 | 
						|
	$ 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
 | 
						|
	
 | 
						|
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
 | 
						|
 | 
						|
 |