diff options
Diffstat (limited to 'doc/src/sgml/installation.sgml')
-rw-r--r-- | doc/src/sgml/installation.sgml | 664 |
1 files changed, 656 insertions, 8 deletions
diff --git a/doc/src/sgml/installation.sgml b/doc/src/sgml/installation.sgml index cee4681ce39..7c86d2521fb 100644 --- a/doc/src/sgml/installation.sgml +++ b/doc/src/sgml/installation.sgml @@ -1,4 +1,4 @@ -<!-- $PostgreSQL: pgsql/doc/src/sgml/installation.sgml,v 1.313 2008/09/05 12:11:18 petere Exp $ --> +<!-- $PostgreSQL: pgsql/doc/src/sgml/installation.sgml,v 1.314 2008/11/21 16:46:19 petere Exp $ --> <chapter id="installation"> <title><![%standalone-include[<productname>PostgreSQL</>]]> @@ -96,7 +96,9 @@ su - postgres <para> <application>tar</> is required to unpack the source distribution in the first place, in addition to either - <application>gzip</> or <application>bzip2</>. + <application>gzip</> or <application>bzip2</>. In + addition, <application>gzip</> is required to install the + documentation. </para> </listitem> @@ -109,9 +111,12 @@ su - postgres <primary>libedit</primary> </indexterm> - The <acronym>GNU</> <productname>Readline</> library (for - simple line editing and command history retrieval) is - used by default. If you don't want to use it then you must specify + The <acronym>GNU</> <productname>Readline</> library is used by + default. It allows <application>psql</application> (the + PostgreSQL command line SQL interpreter) to remember each + command you type, and allows you to use arrow keys to recall and + edit previous commands. This is very helpful and is strongly + recommended. If you don't want to use it then you must specify the <option>--without-readline</option> option for <filename>configure</>. As an alternative, you can often use the BSD-licensed <filename>libedit</filename> library, originally @@ -2001,8 +2006,9 @@ kill `cat /usr/local/pgsql/data/postmaster.pid` FreeBSD, OpenBSD, NetBSD, Mac OS X, AIX, HP/UX, IRIX, Solaris, Tru64 Unix, and UnixWare. Other Unix-like systems may also work but are not currently being tested. In most cases, all CPU architectures supported by - a given operating system will work. Look in the <filename>doc/</> - directory of the source distribution to see if there is a FAQ document + a given operating system will work. Look in + the <xref linkend="installation-platform-notes"> below to see if + there is information specific to your operating system, particularly if using an older system. </para> @@ -2011,9 +2017,651 @@ kill `cat /usr/local/pgsql/data/postmaster.pid` to be supported according to recent build farm results, please report it to <email>[email protected]</email>. If you are interested in porting <productname>PostgreSQL</> to a new platform, - <email>[email protected]</email> is the appropriate place + <email>[email protected]</email> is the appropriate place to discuss that. </para> </sect1> + <sect1 id="installation-platform-notes"> + <title>Platform-Specific Notes</title> + + <para> + This section documents additional platform-specific issues + regarding the installation and setup of PostgreSQL. Be sure to + read the installation instructions, and in + particular <xref linkend="install-requirements"> as well. Also, + check <![%standalone-include[the + file <filename>src/test/regress/README</> and the documentation]]> + <![%standalone-ignore[<xref linkend="regress">]]> regarding the + interpretation of regression test results. + </para> + + <para> + Platforms that are not covered here have no known platform-specific + installation issues. + </para> + + <sect2 id="installation-notes-cygwin"> + <title>Cygwin</title> + + <indexterm zone="installation-notes-cygwin"> + <primary>Cyginw</primary> + <secondary>installation on</secondary> + </indexterm> + + <para> + PostgreSQL can be built using Cygwin, a Linux-like environment for + Windows, but that method is inferior to the native Windows build + <![%standalone-ignore[(see <xref linkend="install-win32">)]]> and + is no longer recommended. + </para> + + <para> + When building from source, proceed according to the normal + installation procedure (i.e., <literal>./configure; + make</literal>; etc.), noting the following-Cygwin specific + differences: + + <itemizedlist> + <listitem> + <para> + Set your path to use the Cygwin bin directory before the + Windows utilities. This will help prevent problems with + compilation. + </para> + </listitem> + + <listitem> + <para> + The GNU make command is called "make" not "gmake". + </para> + </listitem> + + <listitem> + <para> + The <command>adduser</command> command is not supported; use + the appropriate user management application on Windows NT, + 2000, or XP. Otherwise, skip this step. + </para> + </listitem> + + <listitem> + <para> + The <command>su</command> command is not supported; use ssh to + simulate su on Windows NT, 2000, or XP. Otherwise, skip this + step. + </para> + </listitem> + + <listitem> + <para> + Start <command>cygserver</command> for shared memory support. + To do this, enter the command <literal>/usr/sbin/cygserver + &</literal>. This program needs to be running anytime you + start the PostgreSQL server or initialize a database cluster + (<command>initdb</command>). The + default <command>cygserver</command> configuration may need to + be changed (e.g., increase <symbol>SEMMNS</symbol>) to prevent + PostgreSQL from failing due to a lack of system resources. + </para> + </listitem> + + <listitem> + <para> + The parallel regression tests (<literal>make check</literal>) + can generate spurious regression test failures due to + overflowing the <function>listen()</function> backlog queue + which causes connection refused errors or hangs. You can limit + the number of connections using the make + variable <varname>MAX_CONNECTIONS</varname> thus: +<programlisting> +make MAX_CONNECTIONS=5 check +</programlisting> + (On some systems you can have up to about 10 simultaneous + connections). + </para> + </listitem> + </itemizedlist> + </para> + + <para> + It is possible to install <command>cygserver</command> and the + PostgreSQL server as Windows NT services. For information on how + to do this, please refer to the <filename>README</filename> + document included with the PostgreSQL binary package on Cygwin. + It is installed in the + directory <filename>/usr/share/doc/Cygwin</filename>. + </para> + </sect2> + + <sect2 id="installation-notes-hpux"> + <title>HP-UX</title> + + <indexterm zone="installation-notes-hpux"> + <primary>HP-UX</primary> + <secondary>installation on</secondary> + </indexterm> + + <para> + PostgreSQL 7.3+ should work on Series 700/800 PA-RISC machines + running HP-UX 10.X or 11.X, given appropriate system patch levels + and build tools. At least one developer routinely tests on HP-UX + 10.20, and we have reports of successful installations on HP-UX + 11.00 and 11.11. + </para> + + <para> + Aside from the PostgreSQL source distribution, you will need GNU + make (HP's make will not do), and either GCC or HP's full ANSI C + compiler. If you intend to build from CVS sources rather than a + distribution tarball, you will also need Flex (GNU lex) and Bison + (GNU yacc). We also recommend making sure you are fairly + up-to-date on HP patches. At a minimum, if you are building 64 + bit binaries on on HP-UX 11.11 you may need PHSS_30966 (11.11) or a + successor patch otherwise <command>initdb</command> may hang: +<literallayout> +PHSS_30966 s700_800 ld(1) and linker tools cumulative patch +</literallayout> + + On general principles you should be current on libc and ld/dld + patches, as well as compiler patches if you are using HP's C + compiler. See HP's support sites such + as <ulink url="http://itrc.hp.com"></ulink> and + <ulink url="ftp://us-ffs.external.hp.com/"></ulink> for free + copies of their latest patches. + </para> + + <para> + If you are building on a PA-RISC 2.0 machine and want to have + 64-bit binaries using GCC, you must use GCC 64-bit version. GCC + binaries for HP-UX PA-RISC and Itanium are available from + <ulink url="http://www.hp.com/go/gcc"></ulink>. Don't forget to + get and install binutils at the same time. + </para> + + <para> + If you are building on a PA-RISC 2.0 machine and want the compiled + binaries to run on PA-RISC 1.1 machines you will need to specify + <option>+DAportable</option> in <envar>CFLAGS</envar>. + </para> + + <para> + If you are building on a HP-UX Itanium machine, you will need the + latest HP ANSI C compiler with its dependent patch or successor + patches: +<literallayout> +PHSS_30848 s700_800 HP C Compiler (A.05.57) +PHSS_30849 s700_800 u2comp/be/plugin library Patch +</literallayout> + </para> + + <para> + If you have both HP's C compiler and GCC's, then you might want to + explicitly select the compiler to use when you + run <command>configure</command>: +<programlisting> +./configure CC=cc +</programlisting> + for HP's C compiler, or +<programlisting> +./configure CC=gcc +</programlisting> + for GCC. If you omit this setting, then configure will + pick <command>gcc</command> if it has a choice. + </para> + + <para> + The default install target location + is <filename>/usr/local/pgsql</filename>, which you might want to + change to something under <filename>/opt</filename>. If so, use + the + <option>--prefix</option> switch to <command>configure</command>. + </para> + + <para> + In the regression tests, there might be some low-order-digit + differences in the geometry tests, which vary depending on which + compiler and math library versions you use. Any other error is + cause for suspicion. + </para> + </sect2> + + <sect2 id="installation-notes-irix"> + <title>IRIX</title> + + <indexterm zone="installation-notes-irix"> + <primary>IRIX</primary> + <secondary>installation on</secondary> + </indexterm> + + <para> + PostgreSQL has been reported to run successfully on MIPS r8000, + r10000 (both ip25 and ip27) and r12000(ip35) processors, running + IRIX 6.5.5m, 6.5.12, 6.5.13, and 6.5.26 with MIPSPro compilers + version 7.30, 7.3.1.2m, 7.3, and 7.4.4m. + </para> + + <para> + You will need the MIPSPro full ANSI C compiler. There are + problems trying to build with GCC. It is a known GCC bug (not + fixed as of version 3.0) related to using functions that return + certain kinds of structures. This bug affects functions like + <function>inet_ntoa</>, <function>inet_lnaof</>, <function>inet_netof</>, <function>inet_makeaddr</>, + and <function>semctl</>. It is supposed to be fixed by forcing + code to link those functions with libgcc, but this has not been + tested yet. + </para> + + <para> + It is known that version 7.4.1m of the MIPSPro compiler generates + incorrect code. The symptom is <quote>invalid primary checkpoint + record</quote> when trying to start the database.) Version 7.4.4m + is OK; the status of intermediate versions is uncertain. + </para> + + <para> + There may be a compilation problem like the following: +<screen> +cc-1020 cc: ERROR File = pqcomm.c, Line = 427 + The identifier "TCP_NODELAY" is undefined. + + if (setsockopt(port->sock, IPPROTO_TCP, TCP_NODELAY, +</screen> + Some versions include TCP definitions + in <filename>sys/xti.h</filename>, so it is necessary to + add <literal>#include <sys/xti.h></literal> + in <filename>src/backend/libpq/pqcomm.c</> and in + <filename>src/interfaces/libpq/fe-connect.c</>. If you encounter + this, please let us know so we can develop a proper fix. + </para> + + <para> + In the regression tests, there might be some low-order-digit + differences in the geometry tests, depending on which FPU are you + using. Any other error is cause for suspicion. + </para> + </sect2> + + <sect2 id="installation-notes-mingw"> + <title>MinGW/Native Windows</title> + + <indexterm zone="installation-notes-mingw"> + <primary>MinGW</primary> + <secondary>installation on</secondary> + </indexterm> + + <para> + PostgreSQL for Windows can be built using MinGW, a Unix-like build + environment for Microsoft operating systems, or using + Microsoft's <productname>Visual C++</productname> compiler suite. + The MinGW build variant uses the normal build system described in + this chapter; the Visual C++ build works completely differently + and is described in <![%standalone-include[the + documentation]]><![%standalone-ignore[<xref linkend="install-win32">]]>. + There is also a precompiled binary installer which you can find at + from <ulink url="http://pgfoundry.org/projects/pginstaller"></ulink>. + It is a fully native build and uses no additional software like + MinGW. The ready-made installer files are available on the main + PostgreSQL FTP servers in the <filename>binary/win32</filename> + directory. + </para> + + <para> + The native Win32 port requires a 32-bit NT-based Microsoft + operating system, like Windows NT 4, Windows 2000/2003, or Windows + XP. (NT 4 is no longer supported.) Earlier operating systems do + not have sufficient infrastructure (but Cygwin may be used on + those). MinGW, the Unix-like build tools, and MSYS, a collection + of Unix tools required to run shell scripts + like <command>configure</command>, can be downloaded + from <ulink url="http://www.mingw.org/"></ulink>. Neither is + required to run the resulting binaries; they are needed only for + creating the binaries. + </para> + + <para> + After you have everything installed, it is suggested that you + run <application>psql</application> + under <command>CMD.EXE</command>, as the MSYS console has + buffering issues. + </para> + </sect2> + + <sect2 id="installation-notes-sco"> + <title>SCO OpenServer and SCO UnixWare</title> + + <indexterm zone="installation-notes-sco"> + <primary>SCO</primary> + <secondary>installation on</secondary> + </indexterm> + + <indexterm zone="installation-notes-sco"> + <primary>UnixWare</primary> + <secondary>installation on</secondary> + </indexterm> + + <para> + PostgreSQL can be built on SCO UnixWare 7 and SCO OpenServer 5. + On OpenServer, you can use either the OpenServer Development Kit + or the Universal Development Kit. However, some tweaking may be + needed, as described below. + </para> + + <sect3> + <title>Skunkware</title> + + <para> + You should locate your copy of the SCO Skunkware CD. The + Skunkware CD is included with UnixWare 7 and current versions of + OpenServer 5. Skunkware includes ready-to-install versions of + many popular programs that are available on the Internet. For + example, gzip, gunzip, GNU Make, Flex, and Bison are all + included. For UnixWare 7.1, this CD is now labeled "Open License + Software Supplement". If you do not have this CD, the software + on it is available via anonymous FTP + from <ulink url="ftp://ftp.sco.com/skunkware"></ulink>. + </para> + + <para> + Skunkware has different versions for UnixWare and OpenServer. + Make sure you install the correct version for your operating + system, except as noted below. + </para> + + <para> + On UnixWare 7.1.3 and beyond, the GCC compiler is included on the + UDK CD as is GNU Make. + </para> + </sect3> + + <sect3> + <title>GNU Make</title> + + <para> + You need to use the GNU Make program, which is on the Skunkware + CD. By default, it installs + as <filename>/usr/local/bin/make</filename>. To avoid confusion + with the SCO <filename>make</filename> program, you may want to rename GNU <filename>make</filename> to + <filename>gmake</filename>. + </para> + + <para> + As of UnixWare 7.1.3 and above, the GNU Make program is is the + OSTK portion of the UDK CD, and is + in <filename>/usr/gnu/bin/gmake</filename>. + </para> + </sect3> + + <sect3> + <title>Readline</title> + + <para> + The Readline library is on the Skunkware CD. But it is not + included on the UnixWare 7.1 Skunkware CD. If you have the + UnixWare 7.0.0 or 7.0.1 Skunkware CDs, you can install it from + there. Otherwise, + try <ulink url="ftp://ftp.sco.com/skunkware"></ulink>. + </para> + + <para> + By default, Readline installs into <filename>/usr/local/lib</> and + <filename>/usr/local/include</>. However, the + PostgreSQL <command>configure</command> program will not find it + there without help. If you installed Readline, then use the + following options to <command>configure</command>: +<programlisting> +./configure --with-libraries=/usr/local/lib --with-includes=/usr/local/include +</programlisting> + </para> + </sect3> + + <sect3> + <title>Using the UDK on OpenServer</title> + + <para> + If you are using the new Universal Development Kit (UDK) compiler + on OpenServer, you need to specify the locations of the UDK + libraries: +<programlisting> +./configure --with-libraries=/udk/usr/lib --with-includes=/udk/usr/include +</programlisting> + Putting these together with the Readline options from above: +<programlisting> +./configure --with-libraries="/udk/usr/lib /usr/local/lib" --with-includes="/udk/usr/include /usr/local/include" +</programlisting> + </para> + </sect3> + + <sect3> + <title>Reading the PostgreSQL man pages</title> + + <para> + By default, the PostgreSQL man pages are installed into + <filename>/usr/local/pgsql/man</filename>. By default, UnixWare + does not look there for man pages. To be able to read them you + need to modify the + <varname>MANPATH</varname> variable + in <filename>/etc/default/man</filename>, for example: +<programlisting> +MANPATH=/usr/lib/scohelp/%L/man:/usr/dt/man:/usr/man:/usr/share/man:scohelp:/usr/local/man:/usr/local/pgsql/man +</programlisting> + </para> + + <para> + On OpenServer, some extra research needs to be invested to make + the man pages usable, because the man system is a bit different + from other platforms. Currently, PostgreSQL will not install + them at all. + </para> + </sect3> + + <sect3> + <title>C99 Issues with the 7.1.1b Feature Supplement</title> + + <para> + For compilers earlier than the one released with OpenUNIX 8.0.0 + (UnixWare 7.1.2), including the 7.1.1b Feature Supplement, you + may need to specify <option>-Xb</option> + in <varname>CFLAGS</varname> or the <varname>CC</varname> + environment variable. The indication of this is an error in + compiling <filename>tuplesort.c</filename> referencing inline + functions. Apparently there was a change in the 7.1.2(8.0.0) + compiler and beyond. + </para> + </sect3> + + <sect3> + <title><option>--enable-thread-safety</option> and UnixWare</title> + + <para> + If you use the <command>configure</command> + option <option>--enable-thread-safety</option>, + you <emphasis>must</emphasis> use <option>-Kpthread</option> + on <emphasis>all</emphasis> libpqiusing programs. libpq + uses <function>pthread_*</function> calls, which are only + available with the + <option>-Kpthread</>/<option>-Kthread</> flag. + </para> + </sect3> + </sect2> + + <sect2 id="installation-notes-solaris"> + <title>Solaris</title> + + <indexterm zone="installation-notes-solaris"> + <primary>Solaris</primary> + <secondary>installation on</secondary> + </indexterm> + + <para> + PostgreSQL is well-supported on Solaris. The more up to date your + operating system, the fewer issues you will experience; details + below. + </para> + + <para> + Note that PostgreSQL is bundled with Solaris 10 (from update 2). + Official packages are also available on + <ulink url="http://pgfoundry.org/projects/solarispackages/"></ulink>. + Packages for older Solaris versions (8, 9) you can be obtained + from <ulink url="http://www.sunfreeware.com/"></ulink> or + <ulink url="http://www.blastwave.org/"></ulink>. + </para> + + <sect3> + <title>Required tools</title> + + <para> + You can build with either GCC or Sun's compiler suite. For + better code optimization, 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 + <filename>/usr/ucb/cc</filename>; + use <filename>/opt/SUNWspro/bin/cc</filename>. + </para> + + <para> + You can download Sun Studio + from <ulink url="http://developers.sun.com/sunstudio/downloads/"></ulink>. + Many of GNU tools are integrated into 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 + at <ulink url="http://www.sunfreeware.com"></ulink> + or <ulink url="http://www.blastwave.org"></ulink>. If you prefer + sources, look + at <ulink url="http://www.gnu.org/order/ftp.html"></ulink>. + </para> + </sect3> + + <sect3> + <title>Problems with OpenSSL</title> + + <para> + When you build PostgreSQL with OpenSSL support you might get + compilation errors in the following files: + <itemizedlist> + <listitem><para><filename>src/backend/libpq/crypt.c</filename></para></listitem> + <listitem><para><filename>src/backend/libpq/password.c</filename></para></listitem> + <listitem><para><filename>src/interfaces/libpq/fe-auth.c</filename></para></listitem> + <listitem><para><filename>src/interfaces/libpq/fe-connect.c</filename></para></listitem> + </itemizedlist> + + This is because of a namespace conflict between the standard + <filename>/usr/include/crypt.h</filename> header and the header + files provided by OpenSSL. + </para> + + <para> + Upgrading your OpenSSL installation to version 0.9.6a fixes this + problem. Solaris 9 and above has a newer version of OpenSSL. + </para> + </sect3> + + <sect3> + <title>configure complains about a failed test program</title> + + <para> + If <command>configure</command> complains about a failed test + program, this is probably a case of the run-time linker being + unable to find some library, probably libz, libreadline or some + other non-standard library such as libssl. To point it to the + right location, set the <envar>LDFLAGS</envar> environment + variable on the <command>configure</command> command line, e.g., +<programlisting> +configure ... LDFLAGS="-R /usr/sfw/lib:/opt/sfw/lib:/usr/local/lib" +</programlisting> + See + the <citerefentry><refentrytitle>ld</><manvolnum>1</></citerefentry> + man page for more information. + </para> + </sect3> + + <sect3> + <title>64-bit build sometimes crashes</title> + + <para> + On Solaris 7 and older, the 64-bit version of libc has a buggy + <function>vsnprintf</function> 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 <command>configure</command> edit a file produced by + <command>configure</command>: + In <filename>src/Makefile.global</filename>, change the line +<programlisting> +LIBOBJS = +</programlisting> + to read +<programlisting> +LIBOBJS = snprintf.o +</programlisting> + (There might be other files already listed in this variable. + Order does not matter.) Then build as usual. + </para> + </sect3> + + <sect3> + <title>Compiling for optimal performance</title> + + <para> + On the SPARC architecture, Sun Studio is strongly recommended for + compilation. Try using the <option>-xO5</option> optimization + flag to generate significantly faster binaries. Do not use any + flags that modify behavior of floating-point operations + and <varname>errno</varname> processing (e.g., + <option>-fast</option>). These flags could raise some + nonstandard PostgreSQL behavior for example in the date/time + computing. + </para> + + <para> + If you do not have a reason to use 64-bit binaries on SPARC, + prefer the 32-bit version. The 64-bit operations are slower and + 64-bit binaries are slower than the 32-bit variants. And on + other hand, 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. + </para> + + <para> + Some tricks for tuning PostgreSQL and Solaris for performance can + be found + at <ulink url="http://www.sun.com/servers/coolthreads/tnb/applications_postgresql.jsp"></ulink>. + This article is primary focused on T2000 platform, but many of + the recommendations are also useful on other hardware with + Solaris. + </para> + </sect3> + + <sect3> + <title>Using DTrace for tracing PostgreSQL</title> + + <para> + Yes, using DTrace is possible. See <![%standalone-include[the + documentation]]> + <![%standalone-ignore[<xref linkend="monitoring">]]> for further + information. You can also find more information in this + article: <ulink url="http://blogs.sun.com/robertlor/entry/user_level_dtrace_probes_in"></ulink>. + </para> + + <para> + If you see the linking of the postgres executable abort with an + error message like +<screen> +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 +</screen> + your DTrace installation is too old to handle probes in static + functions. You need Solaris 10u4 or newer. + </para> + </sect3> + </sect2> + </sect1> + </chapter> |