-<!-- $PostgreSQL: pgsql/doc/src/sgml/installation.sgml,v 1.216 2004/12/24 18:11:16 momjian Exp $ -->
-
-<chapter id="installation">
- <title><![%standalone-include[<productname>PostgreSQL</>]]>
- Installation Instructions</title>
-
- <indexterm zone="installation">
- <primary>installation</primary>
- </indexterm>
-
- <para>
- This <![%standalone-include;[document]]>
- <![%standalone-ignore;[chapter]]> describes the installation of
- <productname>PostgreSQL</productname> from the source code
- distribution.
- </para>
-
- <sect1 id="install-short">
- <title>Short Version</title>
-
- <para>
-<synopsis>
-./configure
-gmake
-su
-gmake install
-adduser postgres
-mkdir /usr/local/pgsql/data
-chown postgres /usr/local/pgsql/data
-su - postgres
-/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
-/usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data >logfile 2>&1 &
-/usr/local/pgsql/bin/createdb test
-/usr/local/pgsql/bin/psql test
-</synopsis>
- The long version is the rest of this
- <![%standalone-include;[document.]]>
- <![%standalone-ignore;[chapter.]]>
- </para>
- </sect1>
-
-
- <sect1 id="install-requirements">
- <title>Requirements</title>
-
- <para>
- In general, a modern Unix-compatible platform should be able to run
- <productname>PostgreSQL</>.
- The platforms that had received specific testing at the
- time of release are listed in <xref linkend="supported-platforms">
- below. In the <filename>doc</> subdirectory of the distribution
- there are several platform-specific <acronym>FAQ</> documents you
- might wish to consult if you are having trouble.
- </para>
-
- <para>
- The following software packages are required for building
- <productname>PostgreSQL</>:
-
- <itemizedlist>
- <listitem>
- <para>
- <indexterm>
- <primary>make</primary>
- </indexterm>
-
- <acronym>GNU</> <application>make</> is required; other
- <application>make</> programs will <emphasis>not</> work.
- <acronym>GNU</> <application>make</> is often installed under
- the name <filename>gmake</filename>; this document will always
- refer to it by that name. (On some systems
- <acronym>GNU</acronym> <application>make</> is the default tool with the name
- <filename>make</>.) To test for <acronym>GNU</acronym>
- <application>make</application> enter
-<screen>
-<userinput>gmake --version</userinput>
-</screen>
- It is recommended to use version 3.76.1 or later.
- </para>
- </listitem>
-
- <listitem>
- <para>
- You need an <acronym>ISO</>/<acronym>ANSI</> C compiler. Recent
- versions of <productname>GCC</> are recommendable, but
- <productname>PostgreSQL</> is known to build with a wide variety
- of compilers from different vendors.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <application>gzip</> is needed to unpack the distribution in the
- first place.<![%standalone-include;[ If you are reading this, you probably already got
- past that hurdle.]]>
- </para>
- </listitem>
-
- <listitem>
- <para>
- <indexterm>
- <primary>readline</primary>
- </indexterm>
-
- The <acronym>GNU</> <productname>Readline</> library (for
- comfortable line editing and command history retrieval) will be
- used by default. If you don't want to use it then you must
- specify the <option>--without-readline</option> option for
- <filename>configure</>. (On <productname>NetBSD</productname>,
- the <filename>libedit</filename> library is
- <productname>Readline</productname>-compatible and is used if
- <filename>libreadline</filename> is not found.)
- </para>
- </listitem>
-
- <listitem>
- <para>
- <indexterm>
- <primary>installation</primary>
- <secondary>on Windows</secondary>
- </indexterm>
-
- To build on <productname>Windows</> platforms see
- <![%standalone-include[the documentation chapter "Installation on Windows"]]>
- <![%standalone-ignore[<xref linkend="install-win32">]]>.
- </para>
- </listitem>
- </itemizedlist>
- </para>
-
- <para>
- The following packages are optional. They are not required in the
- default configuration, but they are needed when certain build
- options are enabled, as explained below.
-
- <itemizedlist>
- <listitem>
- <para>
- To build the server programming language
- <application>PL/Perl</application> you need a full
- <productname>Perl</productname> installation, including the
- <filename>libperl</filename> library and the header files.
- Since <application>PL/Perl</application> will be a shared
- library, the <indexterm><primary>libperl</primary></indexterm>
- <filename>libperl</filename> library must be a shared library
- also on most platforms. This appears to be the default in
- recent <productname>Perl</productname> versions, but it was not
- in earlier versions, and in general it is the choice of whomever
- installed Perl at your site.
- </para>
-
- <para>
- If you don't have the shared library but you need one, a message
- like this will appear during the build to point out this fact:
-<screen>
-*** Cannot build PL/Perl because libperl is not a shared library.
-*** You might have to rebuild your Perl installation. Refer to
-*** the documentation for details.
-</screen>
- (If you don't follow the on-screen output you will merely notice
- that the <application>PL/Perl</application> library object,
- <filename>plperl.so</filename> or similar, will not be
- installed.) If you see this, you will have to rebuild and
- install <productname>Perl</productname> manually to be able to
- build <application>PL/Perl</application>. During the
- configuration process for <productname>Perl</productname>,
- request a shared library.
- </para>
- </listitem>
-
- <listitem>
- <para>
- To build the <application>PL/Python</> server programming
- language, you need a <productname>Python</productname>
- installation with the header files and the <application>distutils</application> module.
- The <application>distutils</application> module is included by default with
- <productname>Python</productname> 1.6 and later; users of
- earlier versions of <productname>Python</productname> will need
- to install it.
- </para>
-
- <para>
- Since <application>PL/Python</application> will be a shared
- library, the <indexterm><primary>libpython</primary></indexterm>
- <filename>libpython</filename> library must be a shared library
- also on most platforms. This is not the case in a default
- <productname>Python</productname> installation. If after
- building and installing you have a file called
- <filename>plpython.so</filename> (possibly a different
- extension), then everything went well. Otherwise you should
- have seen a notice like this flying by:
-<screen>
-*** Cannot build PL/Python because libpython is not a shared library.
-*** You might have to rebuild your Python installation. Refer to
-*** the documentation for details.
-</screen>
- That means you have to rebuild (part of) your
- <productname>Python</productname> installation to supply this
- shared library.
- </para>
-
- <para>
- If you have problems, run <productname>Python</> 2.3 or later's
- configure using the <literal>--enable-shared</> flag. On some
- operating systems you don't have to build a shared library, but
- you will have to convince the <productname>PostgreSQL</> build
- system of this. Consult the <filename>Makefile</filename> in
- the <filename>src/pl/plpython</filename> directory for details.
- </para>
- </listitem>
-
- <listitem>
- <para>
- If you want to build the <application>PL/Tcl</application>
- procedural language, you of course need a Tcl installation.
- </para>
- </listitem>
-
- <listitem>
- <para>
- To enable Native Language Support (<acronym>NLS</acronym>), that
- is, the ability to display a program's messages in a language
- other than English, you need an implementation of the
- <application>Gettext</> <acronym>API</acronym>. Some operating
- systems have this built-in (e.g., <systemitem
- class="osname">Linux</>, <systemitem class="osname">NetBSD</>,
- <systemitem class="osname">Solaris</>), for other systems you
- can download an add-on package from here: <ulink
- url="http://developer.postgresql.org/~petere/bsd-gettext/" ></ulink>.
- If you are using the <application>Gettext</> implementation in
- the <acronym>GNU</acronym> C library then you will additionally
- need the <productname>GNU Gettext</productname> package for some
- utility programs. For any of the other implementations you will
- not need it.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <application>Kerberos</>, <productname>OpenSSL</>, or <application>PAM</>,
- if you want to support authentication using these services.
- </para>
- </listitem>
- </itemizedlist>
- </para>
-
- <para>
- If you are building from a <acronym>CVS</acronym> tree instead of
- using a released source package, or if you want to do development,
- you also need the following packages:
-
- <itemizedlist>
- <listitem>
- <para>
- <indexterm>
- <primary>flex</primary>
- </indexterm>
- <indexterm>
- <primary>bison</primary>
- </indexterm>
- <indexterm>
- <primary>yacc</primary>
- </indexterm>
-
- <application>Flex</> and <application>Bison</>
- are needed to build a CVS checkout or if you changed the actual
- scanner and parser definition files. If you need them, be sure
- to get <application>Flex</> 2.5.4 or later and
- <application>Bison</> 1.875 or later. Other <application>yacc</>
- programs can sometimes be used, but doing so requires extra
- effort and is not recommended. Other <application>lex</>
- programs will definitely not work.
- </para>
- </listitem>
- </itemizedlist>
- </para>
-
- <para>
- If you need to get a <acronym>GNU</acronym> package, you can find
- it at your local <acronym>GNU</acronym> mirror site (see <ulink
- url="http://www.gnu.org/order/ftp.html"></>
- for a list) or at <ulink
- url="ftp://ftp.gnu.org/gnu/"></ulink>.
- </para>
-
- <para>
- Also check that you have sufficient disk space. You will need about
- 65 MB for the source tree during compilation and about 15 MB for
- the installation directory. An empty database cluster takes about
- 25 MB, databases take about five times the amount of space that a
- flat text file with the same data would take. If you are going to
- run the regression tests you will temporarily need up to an extra
- 90 MB. Use the <command>df</command> command to check for disk
- space.
- </para>
- </sect1>
-
-<![%standalone-ignore;[
- <sect1 id="install-getsource">
- <title>Getting The Source</title>
-
- <para>
- The <productname>PostgreSQL</> &version; sources can be obtained by
- anonymous FTP from <ulink
- url="ftp://ftp.postgresql.org/pub/source/v&version;/postgresql-&version;.tar.gz"></ulink>.
- Use a mirror if possible. After you have obtained the file, unpack it:
-<screen>
-<userinput>gunzip postgresql-&version;.tar.gz</userinput>
-<userinput>tar xf postgresql-&version;.tar</userinput>
-</screen>
- This will create a directory
- <filename>postgresql-&version;</filename> under the current directory
- with the <productname>PostgreSQL</> sources.
- Change into that directory for the rest
- of the installation procedure.
- </para>
- </sect1>
-]]>
-
- <sect1 id="install-upgrading">
- <title>If You Are Upgrading</title>
-
- <indexterm zone="install-upgrading">
- <primary>upgrading</primary>
- </indexterm>
-
- <para>
- The internal data storage format changes with new releases of
- <productname>PostgreSQL</>. Therefore, if you are upgrading an
- existing installation that does not have a version number
- <quote>&majorversion;.x</quote>, you must back up and restore your
- data as shown here. These instructions assume that your existing
- installation is under the <filename>/usr/local/pgsql</> directory,
- and that the data area is in <filename>/usr/local/pgsql/data</>.
- Substitute your paths appropriately.
- </para>
-
- <procedure>
- <step>
- <para>
- Make sure that your database is not updated during or after the
- backup. This does not affect the integrity of the backup, but the
- changed data would of course not be included. If necessary, edit
- the permissions in the file
- <filename>/usr/local/pgsql/data/pg_hba.conf</> (or equivalent) to
- disallow access from everyone except you.
- </para>
- </step>
-
- <step>
- <para>
- <indexterm>
- <primary>pg_dumpall</primary>
- <secondary>use during upgrade</secondary>
- </indexterm>
-
- To back up your database installation, type:
-<screen>
-<userinput>pg_dumpall > <replaceable>outputfile</></userinput>
-</screen>
- If you need to preserve OIDs (such as when using them as
- foreign keys), then use the <option>-o</option> option when running
- <application>pg_dumpall</>.
- </para>
-
- <para>
- <application>pg_dumpall</application> does not
- save large objects. Check
- <![%standalone-include[the documentation]]>
- <![%standalone-ignore[<xref linkend="backup-dump-caveats">]]>
- if you need to do this.
- </para>
-
- <para>
- To make the backup, you can use the <application>pg_dumpall</application>
- command from the version you are currently running. For best
- results, however, try to use the <application>pg_dumpall</application>
- command from <productname>PostgreSQL</productname> &version;,
- since this version contains bug fixes and improvements over older
- versions. While this advice might seem idiosyncratic since you
- haven't installed the new version yet, it is advisable to follow
- it if you plan to install the new version in parallel with the
- old version. In that case you can complete the installation
- normally and transfer the data later. This will also decrease
- the downtime.
- </para>
- </step>
-
- <step>
- <para>
- If you are installing the new version at the same location as the
- old one then shut down the old server, at the latest before you
- install the new files:
-<screen>
-<userinput>kill -INT `cat /usr/local/pgsql/data/postmaster.pid | sed 1q`</>
-</screen>
- Versions prior to 7.0 do not have this
- <filename>postmaster.pid</> file. If you are using such a version
- you must find out the process ID of the server yourself, for
- example by typing <userinput>ps ax | grep postmaster</>, and
- supply it to the <command>kill</> command.
- </para>
-
- <para>
- On systems that have <productname>PostgreSQL</> started at boot time, there is
- probably a start-up file that will accomplish the same thing. For
- example, on a <systemitem class="osname">Red Hat Linux</> system one might find that
-<screen>
-<userinput>/etc/rc.d/init.d/postgresql stop</userinput>
-</screen>
- works. Another possibility is <userinput>pg_ctl stop</>.
- </para>
- </step>
-
- <step>
- <para>
- If you are installing in the same place as the old version then
- it is also a good idea to move the old installation out of the
- way, in case you have trouble and need to revert to it.
- Use a command like this:
-<screen>
-<userinput>mv /usr/local/pgsql /usr/local/pgsql.old</>
-</screen>
- </para>
- </step>
- </procedure>
-
- <para>
- After you have installed <productname>PostgreSQL</> &version;, create a new database
- directory and start the new server. Remember that you must execute
- these commands while logged in to the special database user account
- (which you already have if you are upgrading).
-<programlisting>
-<userinput>/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data</>
-<userinput>/usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data</>
-</programlisting>
- Finally, restore your data with
-<screen>
-<userinput>/usr/local/pgsql/bin/psql -d template1 -f <replaceable>outputfile</></userinput>
-</screen>
- using the <emphasis>new</> <application>psql</>.
- </para>
-
- <para>
- These topics are discussed at length in <![%standalone-include[the
- documentation,]]> <![%standalone-ignore[<xref
- linkend="migration">,]]> which you are encouraged to read in any
- case.
- </para>
- </sect1>
-
-
- <sect1 id="install-procedure">
- <title>Installation Procedure</title>
-
- <procedure>
-
- <step id="configure">
- <title>Configuration</>
-
- <indexterm zone="configure">
- <primary>configure</primary>
- </indexterm>
-
- <para>
- The first step of the installation procedure is to configure the
- source tree for your system and choose the options you would like.
- This is done by running the <filename>configure</> script. For a
- default installation simply enter
-<screen>
-<userinput>./configure</userinput>
-</screen>
- This script will run a number of tests to guess values for various
- system dependent variables and detect some quirks of your
- operating system, and finally will create several files in the
- build tree to record what it found. (You can also run
- <filename>configure</filename> in a directory outside the source
- tree if you want to keep the build directory separate.)
- </para>
-
- <para>
- The default configuration will build the server and utilities, as
- well as all client applications and interfaces that require only a
- C compiler. All files will be installed under
- <filename>/usr/local/pgsql</> by default.
- </para>
-
- <para>
- You can customize the build and installation process by supplying one
- or more of the following command line options to
- <filename>configure</filename>:
-
- <variablelist>
- <varlistentry>
- <term><option>--prefix=<replaceable>PREFIX</></option></term>
- <listitem>
- <para>
- Install all files under the directory <replaceable>PREFIX</>
- instead of <filename>/usr/local/pgsql</filename>. The actual
- files will be installed into various subdirectories; no files
- will ever be installed directly into the
- <replaceable>PREFIX</> directory.
- </para>
-
- <para>
- If you have special needs, you can also customize the
- individual subdirectories with the following options. However,
- if you leave these with their defaults, the installation will be
- relocatable, meaning you can move the directory after
- installation. (The <literal>man</> and <literal>doc</>
- locations are not affected by this.)
- </para>
-
- <para>
- For relocatable installs, you might want to use
- <filename>configure</filename>'s <literal>--disable-rpath</>
- option. Also, you will need to tell the operating system how
- to find the shared libraries.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>--exec-prefix=<replaceable>EXEC-PREFIX</></option></term>
- <listitem>
- <para>
- You can install architecture-dependent files under a
- different prefix, <replaceable>EXEC-PREFIX</>, than what
- <replaceable>PREFIX</> was set to. This can be useful to
- share architecture-independent files between hosts. If you
- omit this, then <replaceable>EXEC-PREFIX</> is set equal to
- <replaceable>PREFIX</> and both architecture-dependent and
- independent files will be installed under the same tree,
- which is probably what you want.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>--bindir=<replaceable>DIRECTORY</></option></term>
- <listitem>
- <para>
- Specifies the directory for executable programs. The default
- is <filename><replaceable>EXEC-PREFIX</>/bin</>, which
- normally means <filename>/usr/local/pgsql/bin</>.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>--datadir=<replaceable>DIRECTORY</></option></term>
- <listitem>
- <para>
- Sets the directory for read-only data files used by the
- installed programs. The default is
- <filename><replaceable>PREFIX</>/share</>. Note that this has
- nothing to do with where your database files will be placed.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>--sysconfdir=<replaceable>DIRECTORY</></option></term>
- <listitem>
- <para>
- The directory for various configuration files,
- <filename><replaceable>PREFIX</>/etc</> by default.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>--libdir=<replaceable>DIRECTORY</></option></term>
- <listitem>
- <para>
- The location to install libraries and dynamically loadable
- modules. The default is
- <filename><replaceable>EXEC-PREFIX</>/lib</>.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>--includedir=<replaceable>DIRECTORY</></option></term>
- <listitem>
- <para>
- The directory for installing C and C++ header files. The
- default is <filename><replaceable>PREFIX</>/include</>.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>--mandir=<replaceable>DIRECTORY</></option></term>
- <listitem>
- <para>
- The man pages that come with <productname>PostgreSQL</> will be installed under
- this directory, in their respective
- <filename>man<replaceable>x</></> subdirectories.
- The default is <filename><replaceable>PREFIX</>/man</>.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>--with-docdir=<replaceable>DIRECTORY</></option></term>
- <term><option>--without-docdir</option></term>
- <listitem>
- <para>
- Documentation files, except <quote>man</> pages, will be
- installed into this directory. The default is
- <filename><replaceable>PREFIX</>/doc</>. If the option
- <option>--without-docdir</option> is specified, the
- documentation will not be installed by <command>make
- install</command>. This is intended for packaging scripts
- that have special methods for installing documentation.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
-
- <note>
- <para>
- Care has been taken to make it possible to install
- <productname>PostgreSQL</> into shared installation locations
- (such as <filename>/usr/local/include</filename>) without
- interfering with the namespace of the rest of the system. First,
- the string <quote><literal>/postgresql</literal></quote> is
- automatically appended to <varname>datadir</varname>,
- <varname>sysconfdir</varname>, and <varname>docdir</varname>,
- unless the fully expanded directory name already contains the
- string <quote><literal>postgres</></quote> or
- <quote><literal>pgsql</></quote>. For example, if you choose
- <filename>/usr/local</filename> as prefix, the documentation will
- be installed in <filename>/usr/local/doc/postgresql</filename>,
- but if the prefix is <filename>/opt/postgres</filename>, then it
- will be in <filename>/opt/postgres/doc</filename>. The public C
- header files of the client interfaces are installed into
- <varname>includedir</varname> and are namespace-clean. The
- internal header files and the server header files are installed
- into private directories under <varname>includedir</varname>. See
- the documentation of each interface for information about how to
- get at the its header files. Finally, a private subdirectory will
- also be created, if appropriate, under <varname>libdir</varname>
- for dynamically loadable modules.
- </para>
- </note>
- </para>
-
- <para>
- <variablelist>
- <varlistentry>
- <term><option>--with-includes=<replaceable>DIRECTORIES</></option></term>
- <listitem>
- <para>
- <replaceable>DIRECTORIES</> is a colon-separated list of
- directories that will be added to the list the compiler
- searches for header files. If you have optional packages
- (such as GNU <application>Readline</>) installed in a non-standard
- location,
- you have to use this option and probably also the corresponding
- <option>--with-libraries</> option.
- </para>
- <para>
- Example: <literal>--with-includes=/opt/gnu/include:/usr/sup/include</>.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>--with-libraries=<replaceable>DIRECTORIES</></option></term>
- <listitem>
- <para>
- <replaceable>DIRECTORIES</> is a colon-separated list of
- directories to search for libraries. You will probably have
- to use this option (and the corresponding
- <option>--with-includes</> option) if you have packages
- installed in non-standard locations.
- </para>
- <para>
- Example: <literal>--with-libraries=/opt/gnu/lib:/usr/sup/lib</>.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>--enable-nls<optional>=<replaceable>LANGUAGES</replaceable></optional></option></term>
- <listitem>
- <para>
- Enables Native Language Support (<acronym>NLS</acronym>),
- that is, the ability to display a program's messages in a
- language other than English.
- <replaceable>LANGUAGES</replaceable> is a space separated
- list of codes of the languages that you want supported, for
- example <literal>--enable-nls='de fr'</>. (The intersection
- between your list and the set of actually provided
- translations will be computed automatically.) If you do not
- specify a list, then all available translations are
- installed.
- </para>
-
- <para>
- To use this option, you will need an implementation of the
- <application>Gettext</> API; see above.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>--with-pgport=<replaceable>NUMBER</></option></term>
- <listitem>
- <para>
- Set <replaceable>NUMBER</> as the default port number for
- server and clients. The default is 5432. The port can always
- be changed later on, but if you specify it here then both
- server and clients will have the same default compiled in,
- which can be very convenient. Usually the only good reason
- to select a non-default value is if you intend to run multiple
- <productname>PostgreSQL</> servers on the same machine.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>--with-perl</option></term>
- <listitem>
- <para>
- Build the <application>PL/Perl</> server-side language.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>--with-python</option></term>
- <listitem>
- <para>
- Build the <application>PL/Python</> server-side language.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>--with-tcl</option></term>
- <listitem>
- <para>
- Build the <application>PL/Tcl</> server-side language.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>--with-tclconfig=<replaceable>DIRECTORY</replaceable></option></term>
- <listitem>
- <para>
- Tcl installs the file <filename>tclConfig.sh</filename>, which
- contains configuration information needed to build modules
- interfacing to Tcl. This file is normally found automatically
- at a well-known location, but if you want to use a different
- version of Tcl you can specify the directory in which to look
- for it.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>--with-krb4</option></term>
- <term><option>--with-krb5</option></term>
- <listitem>
- <para>
- Build with support for Kerberos authentication. You can use
- either Kerberos version 4 or 5, but not both. On many
- systems, the Kerberos system is not installed in a location
- that is searched by default (e.g., <filename>/usr/include</>,
- <filename>/usr/lib</>), so you must use the options
- <option>--with-includes</> and <option>--with-libraries</> in
- addition to this option. <filename>configure</> will check
- for the required header files and libraries to make sure that
- your Kerberos installation is sufficient before proceeding.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>--with-krb-srvnam=<replaceable>NAME</></option></term>
- <listitem>
- <para>
- The name of the Kerberos service principal.
- <literal>postgres</literal> is the default. There's probably no
- reason to change this.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <indexterm>
- <primary>OpenSSL</primary>
- <seealso>SSL</seealso>
- </indexterm>
-
- <term><option>--with-openssl</option></term>
- <listitem>
- <para>
- Build with support for <acronym>SSL</> (encrypted)
- connections. This requires the <productname>OpenSSL</>
- package to be installed. <filename>configure</> will check
- for the required header files and libraries to make sure that
- your <productname>OpenSSL</> installation is sufficient
- before proceeding.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>--with-pam</option></term>
- <listitem>
- <para>
- Build with <acronym>PAM</><indexterm><primary>PAM</></>
- (Pluggable Authentication Modules) support.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>--without-readline</option></term>
- <listitem>
- <para>
- Prevents the use of the <application>Readline</> library. This disables
- command-line editing and history in
- <application>psql</application>, so it is not recommended.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>--with-rendezvous</option></term>
- <listitem>
- <para>
- Build with Rendezvous support.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>--disable-spinlocks</option></term>
- <listitem>
- <para>
- Allow the build to succeed even if <productname>PostgreSQL</>
- has no CPU spinlock support for the platform. The lack of
- spinlock support will result in poor performance; therefore,
- this option should only be used if the build aborts and
- informs you that the platform lacks spinlock support. If this
- option is required to build <productname>PostgreSQL</> on
- your platform, please report the problem to the
- <productname>PostgreSQL</> developers.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>--enable-thread-safety</option></term>
- <listitem>
- <para>
- Make the client libraries thread-safe. This allows
- concurrent threads in <application>libpq</application> and
- <application>ECPG</application> programs to safely control
- their private connection handles.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>--without-zlib</option></term>
- <listitem>
- <para>
- Prevents the use of the <application>Zlib</> library. This disables
- compression support in <application>pg_dump</application>.
- This option is only intended for those rare systems where this
- library is not available.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>--enable-debug</option></term>
- <listitem>
- <para>
- Compiles all programs and libraries with debugging symbols.
- This means that you can run the programs through a debugger
- to analyze problems. This enlarges the size of the installed
- executables considerably, and on non-GCC compilers it usually
- also disables compiler optimization, causing slowdowns. However,
- having the symbols available is extremely helpful for dealing
- with any problems that may arise. Currently, this option is
- recommended for production installations only if you use GCC.
- But you should always have it on if you are doing development work
- or running a beta version.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>--enable-cassert</option></term>
- <listitem>
- <para>
- Enables <firstterm>assertion</> checks in the server, which test for
- many <quote>can't happen</> conditions. This is invaluable for
- code development purposes, but the tests slow things down a little.
- Also, having the tests turned on won't necessarily enhance the
- stability of your server! The assertion checks are not categorized
- for severity, and so what might be a relatively harmless bug will
- still lead to server restarts if it triggers an assertion
- failure. Currently, this option is not recommended for
- production use, but you should have it on for development work
- or when running a beta version.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>--enable-depend</option></term>
- <listitem>
- <para>
- Enables automatic dependency tracking. With this option, the
- makefiles are set up so that all affected object files will
- be rebuilt when any header file is changed. This is useful
- if you are doing development work, but is just wasted overhead
- if you intend only to compile once and install. At present,
- this option will work only if you use GCC.
- </para>
- </listitem>
- </varlistentry>
-
- </variablelist>
- </para>
-
- <para>
- If you prefer a C compiler different from the one
- <filename>configure</filename> picks then you can set the
- environment variable <envar>CC</> to the program of your choice.
- By default, <filename>configure</filename> will pick
- <filename>gcc</filename> unless this is inappropriate for the
- platform. Similarly, you can override the default compiler flags
- with the <envar>CFLAGS</envar> variable.
- </para>
-
- <para>
- You can specify environment variables on the
- <filename>configure</filename> command line, for example:
-<screen>
-<userinput>./configure CC=/opt/bin/gcc CFLAGS='-O2 -pipe'</>
-</screen>
- </para>
- </step>
-
- <step>
- <title>Build</title>
-
- <para>
- To start the build, type
-<screen>
-<userinput>gmake</userinput>
-</screen>
- (Remember to use <acronym>GNU</> <application>make</>.) The build
- may take anywhere from 5 minutes to half an hour depending on your
- hardware. The last line displayed should be
-<screen>
-All of PostgreSQL is successfully made. Ready to install.
-</screen>
- </para>
- </step>
-
- <step>
- <title>Regression Tests</title>
-
- <indexterm>
- <primary>regression test</primary>
- </indexterm>
-
- <para>
- If you want to test the newly built server before you install it,
- you can run the regression tests at this point. The regression
- tests are a test suite to verify that <productname>PostgreSQL</>
- runs on your machine in the way the developers expected it
- to. Type
-<screen>
-<userinput>gmake check</userinput>
-</screen>
- (This won't work as root; do it as an unprivileged user.)
- <![%standalone-include[The file
- <filename>src/test/regress/README</> and the
- documentation contain]]>
- <![%standalone-ignore[<xref linkend="regress"> contains]]>
- detailed information about interpreting the test results. You can
- repeat this test at any later time by issuing the same command.
- </para>
- </step>
-
- <step id="install">
- <title>Installing The Files</title>
-
- <note>
- <para>
- If you are upgrading an existing system and are going to install
- the new files over the old ones, then you should have backed up
- your data and shut down the old server by now, as explained in
- <xref linkend="install-upgrading"> above.
- </para>
- </note>
-
- <para>
- To install <productname>PostgreSQL</> enter
-<screen>
-<userinput>gmake install</userinput>
-</screen>
- This will install files into the directories that were specified
- in <xref linkend="configure">. Make sure that you have appropriate
- permissions to write into that area. Normally you need to do this
- step as root. Alternatively, you could create the target
- directories in advance and arrange for appropriate permissions to
- be granted.
- </para>
-
- <para>
- You can use <literal>gmake install-strip</literal> instead of
- <literal>gmake install</literal> to strip the executable files and
- libraries as they are installed. This will save some space. If
- you built with debugging support, stripping will effectively
- remove the debugging support, so it should only be done if
- debugging is no longer needed. <literal>install-strip</literal>
- tries to do a reasonable job saving space, but it does not have
- perfect knowledge of how to strip every unneeded byte from an
- executable file, so if you want to save all the disk space you
- possibly can, you will have to do manual work.
- </para>
-
- <para>
- The standard installation provides all the header files needed for client
- application development as well as for any server-side program
- development (such as custom functions or data types written in C).
- </para>
-
- <formalpara>
- <title>Client-only installation:</title>
- <para>
- If you want to install only the client applications and
- interface libraries, then you can use these commands:
-<screen>
-<userinput>gmake -C src/bin install</>
-<userinput>gmake -C src/include install</>
-<userinput>gmake -C src/interfaces install</>
-<userinput>gmake -C doc install</>
-</screen>
- </para>
- </formalpara>
- </step>
- </procedure>
-
- <formalpara>
- <title>Registering <application>eventlog</> on <systemitem
- class="osname">Windows</>:</title>
- <para>
- To register a <systemitem class="osname">Windows</> <application>eventlog</>
- library with the operating system, issue this command after installation:
-<screen>
-<userinput>regsvr32 <replaceable>pgsql_library_directory</>/pgevent.dll</>
-</screen>
- This creates registry entries used by the event viewer.
- </para>
- </formalpara>
-
- <formalpara>
- <title>Uninstallation:</title>
- <para>
- To undo the installation use the command <command>gmake
- uninstall</>. However, this will not remove any created directories.
- </para>
- </formalpara>
-
- <formalpara>
- <title>Cleaning:</title>
-
- <para>
- After the installation you can make room by removing the built
- files from the source tree with the command <command>gmake
- clean</>. This will preserve the files made by the <command>configure</command>
- program, so that you can rebuild everything with <command>gmake</>
- later on. To reset the source tree to the state in which it was
- distributed, use <command>gmake distclean</>. If you are going to
- build for several platforms from the same source tree you must do
- this and re-configure for each build.
- </para>
- </formalpara>
-
- <para>
- If you perform a build and then discover that your <command>configure</>
- options were wrong, or if you change anything that <command>configure</>
- investigates (for example, software upgrades), then it's a good
- idea to do <command>gmake distclean</> before reconfiguring and
- rebuilding. Without this, your changes in configuration choices
- may not propagate everywhere they need to.
- </para>
- </sect1>
-
- <sect1 id="install-post">
- <title>Post-Installation Setup</title>
-
- <sect2>
- <title>Shared Libraries</title>
-
- <indexterm>
- <primary>shared library</primary>
- </indexterm>
-
- <para>
- On some systems that have shared libraries (which most systems do)
- you need to tell your system how to find the newly installed
- shared libraries. The systems on which this is
- <emphasis>not</emphasis> necessary include <systemitem
- class="osname">BSD/OS</>, <systemitem class="osname">FreeBSD</>,
- <systemitem class="osname">HP-UX</>, <systemitem
- class="osname">IRIX</>, <systemitem class="osname">Linux</>,
- <systemitem class="osname">NetBSD</>, <systemitem
- class="osname">OpenBSD</>, <systemitem class="osname">Tru64
- UNIX</> (formerly <systemitem class="osname">Digital UNIX</>), and
- <systemitem class="osname">Solaris</>.
- </para>
-
- <para>
- The method to set the shared library search path varies between
- platforms, but the most widely usable method is to set the
- environment variable <envar>LD_LIBRARY_PATH</> like so: In Bourne
- shells (<command>sh</>, <command>ksh</>, <command>bash</>, <command>zsh</>)
-<programlisting>
-LD_LIBRARY_PATH=/usr/local/pgsql/lib
-export LD_LIBRARY_PATH
-</programlisting>
- or in <command>csh</> or <command>tcsh</>
-<programlisting>
-setenv LD_LIBRARY_PATH /usr/local/pgsql/lib
-</programlisting>
- Replace <literal>/usr/local/pgsql/lib</> with whatever you set
- <option><literal>--libdir</></> to in <xref linkend="configure">.
- You should put these commands into a shell start-up file such as
- <filename>/etc/profile</> or <filename>~/.bash_profile</>. Some
- good information about the caveats associated with this method can
- be found at <ulink
- url="http://www.visi.com/~barr/ldpath.html"></ulink>.
- </para>
-
- <para>
- On some systems it might be preferable to set the environment
- variable <envar>LD_RUN_PATH</envar> <emphasis>before</emphasis>
- building.
- </para>
-
- <para>
- On <systemitem class="osname">Cygwin</systemitem>, put the library
- directory in the <envar>PATH</envar> or move the
- <filename>.dll</filename> files into the <filename>bin</filename>
- directory.
- </para>
-
- <para>
- If in doubt, refer to the manual pages of your system (perhaps
- <command>ld.so</command> or <command>rld</command>). If you later
- on get a message like
-<screen>
-psql: error in loading shared libraries
-libpq.so.2.1: cannot open shared object file: No such file or directory
-</screen>
- then this step was necessary. Simply take care of it then.
- </para>
-
- <para>
- <indexterm>
- <primary>ldconfig</primary>
- </indexterm>
- If you are on <systemitem class="osname">BSD/OS</>, <systemitem
- class="osname">Linux</>, or <systemitem class="osname">SunOS 4</>
- and you have root access you can run
-<programlisting>
-/sbin/ldconfig /usr/local/pgsql/lib
-</programlisting>
- (or equivalent directory) after installation to enable the
- run-time linker to find the shared libraries faster. Refer to the
- manual page of <command>ldconfig</> for more information. On
- <systemitem class="osname">FreeBSD</>, <systemitem
- class="osname">NetBSD</>, and <systemitem
- class="osname">OpenBSD</> the command is
-<programlisting>
-/sbin/ldconfig -m /usr/local/pgsql/lib
-</programlisting>
- instead. Other systems are not known to have an equivalent
- command.
- </para>
- </sect2>
-
- <sect2>
- <title>Environment Variables</title>
-
- <indexterm>
- <primary><envar>PATH</envar></primary>
- </indexterm>
-
- <para>
- If you installed into <filename>/usr/local/pgsql</> or some other
- location that is not searched for programs by default, you should
- add <filename>/usr/local/pgsql/bin</> (or whatever you set
- <option><literal>--bindir</></> to in <xref linkend="configure">)
- into your <envar>PATH</>. Strictly speaking, this is not
- necessary, but it will make the use of <productname>PostgreSQL</>
- much more convenient.
- </para>
-
- <para>
- To do this, add the following to your shell start-up file, such as
- <filename>~/.bash_profile</> (or <filename>/etc/profile</>, if you
- want it to affect every user):
-<programlisting>
-PATH=/usr/local/pgsql/bin:$PATH
-export PATH
-</programlisting>
- If you are using <command>csh</> or <command>tcsh</>, then use this command:
-<programlisting>
-set path = ( /usr/local/pgsql/bin $path )
-</programlisting>
- </para>
-
- <para>
- <indexterm>
- <primary><envar>MANPATH</envar></primary>
- </indexterm>
- To enable your system to find the <application>man</>
- documentation, you need to add lines like the following to a
- shell start-up file unless you installed into a location that is
- searched by default.
-<programlisting>
-MANPATH=/usr/local/pgsql/man:$MANPATH
-export MANPATH
-</programlisting>
- </para>
-
- <para>
- The environment variables <envar>PGHOST</> and <envar>PGPORT</>
- specify to client applications the host and port of the database
- server, overriding the compiled-in defaults. If you are going to
- run client applications remotely then it is convenient if every
- user that plans to use the database sets <envar>PGHOST</>. This
- is not required, however: the settings can be communicated via command
- line options to most client programs.
- </para>
- </sect2>
- </sect1>
-
-
-<![%standalone-include;[
- <sect1 id="install-getting-started">
- <title>Getting Started</title>
-
- <para>
- The following is a quick summary of how to get <productname>PostgreSQL</> up and
- running once installed. The main documentation contains more information.
- </para>
-
- <procedure>
- <step>
- <para>
- Create a user account for the <productname>PostgreSQL</>
- server. This is the user the server will run as. For production
- use you should create a separate, unprivileged account
- (<quote>postgres</> is commonly used). If you do not have root
- access or just want to play around, your own user account is
- enough, but running the server as root is a security risk and
- will not work.
-<screen>
-<userinput>adduser postgres</>
-</screen>
- </para>
- </step>
-
- <step>
- <para>
- Create a database installation with the <command>initdb</>
- command. To run <command>initdb</> you must be logged in to your
- <productname>PostgreSQL</> server account. It will not work as
- root.
-<screen>
-root# <userinput>mkdir /usr/local/pgsql/data</>
-root# <userinput>chown postgres /usr/local/pgsql/data</>
-root# <userinput>su - postgres</>
-postgres$ <userinput>/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data</>
-</screen>
- </para>
-
- <para>
- The <option>-D</> option specifies the location where the data
- will be stored. You can use any path you want, it does not have
- to be under the installation directory. Just make sure that the
- server account can write to the directory (or create it, if it
- doesn't already exist) before starting <command>initdb</>, as
- illustrated here.
- </para>
- </step>
-
- <step>
- <para>
- The previous step should have told you how to start up the
- database server. Do so now. The command should look something
- like
-<programlisting>
-/usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data
-</programlisting>
- This will start the server in the foreground. To put the server
- in the background use something like
-<programlisting>
-nohup /usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data \
- </dev/null >>server.log 2>&1 </dev/null &
-</programlisting>
- </para>
-
- <para>
- To stop a server running in the background you can type
-<programlisting>
-kill `cat /usr/local/pgsql/data/postmaster.pid`
-</programlisting>
- </para>
-
- <para>
- In order to allow TCP/IP connections (rather than only Unix
- domain socket ones) you need to pass the <option>-i</> option to
- <filename>postmaster</>.
- </para>
- </step>
-
- <step>
- <para>
- Create a database:
-<screen>
-<userinput>createdb testdb</>
-</screen>
- Then enter
-<screen>
-<userinput>psql testdb</>
-</screen>
- to connect to that database. At the prompt you can enter SQL
- commands and start experimenting.
- </para>
- </step>
- </procedure>
- </sect1>
-
- <sect1 id="install-whatnow">
- <title>What Now?</title>
-
- <para>
- <itemizedlist>
- <listitem>
- <para>
- The <productname>PostgreSQL</> distribution contains a
- comprehensive documentation set, which you should read sometime.
- After installation, the documentation can be accessed by
- pointing your browser to
- <filename>/usr/local/pgsql/doc/html/index.html</>, unless you
- changed the installation directories.
- </para>
-
- <para>
- The first few chapters of the main documentation are the Tutorial,
- which should be your first reading if you are completely new to
- <acronym>SQL</> databases. If you are familiar with database
- concepts then you want to proceed with part on server
- administration, which contains information about how to set up
- the database server, database users, and authentication.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Usually, you will want to modify your computer so that it will
- automatically start the database server whenever it boots. Some
- suggestions for this are in the documentation.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Run the regression tests against the installed server (using
- <command>gmake installcheck</command>). If you didn't run the
- tests before installation, you should definitely do it now. This
- is also explained in the documentation.
- </para>
- </listitem>
-
- <listitem>
- <para>
- By default, <productname>PostgreSQL</> is configured to run on
- minimal hardware. This allows it to start up with almost any
- hardware configuration. The default configuration is, however,
- not designed for optimum performance. To achieve optimum
- performance, several server parameters must be adjusted, the two
- most common being <varname>shared_buffers</varname> and
- <varname>work_mem</varname>.
- Other parameters mentioned in the documentation also affect
- performance.
- </para>
- </listitem>
- </itemizedlist>
- </para>
- </sect1>
-]]>
-
-
- <sect1 id="supported-platforms">
- <title>Supported Platforms</title>
-
- <para>
- <productname>PostgreSQL</> has been verified by the developer
- community to work on the platforms listed below. A supported
- platform generally means that <productname>PostgreSQL</> builds and
- installs according to these instructions and that the regression
- tests pass. <quote>Build farm</quote> entries refer to builds
- reported by the <ulink url="http://www.pgbuildfarm.org/">PostgreSQL
- Build Farm</ulink>.
- </para>
-
- <note>
- <para>
- If you are having problems with the installation on a supported
- platform, please write to <email>pgsql-bugs@postgresql.org</email>
- or <email>pgsql-ports@postgresql.org</email>, not to the people
- listed here.
- </para>
- </note>
-
- <informaltable>
- <tgroup cols="5">
- <thead>
- <row>
- <entry><acronym>OS</acronym></entry>
- <entry>Processor</entry>
- <entry>Version</entry>
- <entry>Reported</entry>
- <entry>Remarks</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry><systemitem class="osname">AIX</></entry>
- <entry><systemitem>PowerPC</></entry>
- <entry>8.0.0</entry>
- <entry>Travis P (<email>twp@castle.fastmail.fm</email>), 2004-12-12</entry>
- <entry>see also <filename>doc/FAQ_AIX</filename></entry>
- </row>
- <row>
- <entry><systemitem class="osname">AIX</></entry>
- <entry><systemitem>RS6000</></entry>
- <entry>8.0.0</entry>
- <entry>Hans-Jürgen Schönig (<email>hs@cybertec.at</email>), 2004-12-06</entry>
- <entry>see also <filename>doc/FAQ_AIX</filename></entry>
- </row>
- <row>
- <entry><systemitem class="osname">BSD/OS</></entry>
- <entry><systemitem>x86</></entry>
- <entry>8.0.0</entry>
- <entry>Bruce Momjian (<email>pgman@candle.pha.pa.us</email>), 2004-12-07</entry>
- <entry>4.3.1</entry>
- </row>
- <row>
- <entry><systemitem class="osname">Debian GNU/Linux</></entry>
- <entry><systemitem>Alpha</></entry>
- <entry>7.4</entry>
- <entry>Noèl Köthe (<email>noel@debian.org</email>), 2003-10-25</entry>
- <entry></entry>
- </row>
- <row>
- <entry><systemitem class="osname">Debian GNU/Linux</></entry>
- <entry><systemitem>AMD64</></entry>
- <entry>8.0.0</entry>
- <entry>Build farm <systemitem class="systemname">panda</systemitem>, snapshot 2004-12-06 01:20:02</entry>
- <entry>sid, kernel 2.6</entry>
- </row>
- <row>
- <entry><systemitem class="osname">Debian GNU/Linux</></entry>
- <entry><systemitem>arm41</></entry>
- <entry>7.4</entry>
- <entry>Noèl Köthe (<email>noel@debian.org</email>), 2003-10-25</entry>
- <entry></entry>
- </row>
- <row>
- <entry><systemitem class="osname">Debian GNU/Linux</></entry>
- <entry><systemitem>Itanium</></entry>
- <entry>7.4</entry>
- <entry>Noèl Köthe (<email>noel@debian.org</email>), 2003-10-25</entry>
- <entry></entry>
- </row>
- <row>
- <entry><systemitem class="osname">Debian GNU/Linux</></entry>
- <entry><systemitem>m68k</></entry>
- <entry>8.0.0</entry>
- <entry>Noèl Köthe (<email>noel@debian.org</email>), 2004-12-09</entry>
- <entry>sid</entry>
- </row>
- <row>
- <entry><systemitem class="osname">Debian GNU/Linux</></entry>
- <entry><systemitem>MIPS</></entry>
- <entry>8.0.0</entry>
- <entry>Build farm <systemitem class="systemname">lionfish</systemitem>, snapshot 2004-12-06 11:00:08</entry>
- <entry>3.1 (sarge), kernel 2.4</entry>
- </row>
- <row>
- <entry><systemitem class="osname">Debian GNU/Linux</></entry>
- <entry><systemitem>PA-RISC</></entry>
- <entry>8.0.0</entry>
- <entry>Noèl Köthe (<email>noel@debian.org</email>), 2004-12-07</entry>
- <entry></entry>
- </row>
- <row>
- <entry><systemitem class="osname">Debian GNU/Linux</></entry>
- <entry><systemitem>PowerPC</></entry>
- <entry>8.0.0</entry>
- <entry>Noèl Köthe (<email>noel@debian.org</email>), 2004-12-15</entry>
- <entry></entry>
- </row>
- <row>
- <entry><systemitem class="osname">Debian GNU/Linux</></entry>
- <entry><systemitem>S/390</></entry>
- <entry>7.4</entry>
- <entry>Noèl Köthe (<email>noel@debian.org</email>), 2003-10-25</entry>
- <entry></entry>
- </row>
- <row>
- <entry><systemitem class="osname">Debian GNU/Linux</></entry>
- <entry><systemitem>Sparc</></entry>
- <entry>8.0.0</entry>
- <entry>Noèl Köthe (<email>noel@debian.org</email>), 2004-12-09</entry>
- <entry>sid, 32-bit</entry>
- </row>
- <row>
- <entry><systemitem class="osname">Debian GNU/Linux</></entry>
- <entry><systemitem>x86</></entry>
- <entry>8.0.0</entry>
- <entry>Peter Eisentraut (<email>peter_e@gmx.net</email>), 2004-12-06</entry>
- <entry>3.1 (sarge), kernel 2.6</entry>
- </row>
- <row>
- <entry><systemitem class="osname">Fedora</></entry>
- <entry><systemitem>AMD64</></entry>
- <entry>8.0.0</entry>
- <entry>John Gray (<email>jgray@azuli.co.uk</email>), 2004-12-12</entry>
- <entry>FC3</entry>
- </row>
- <row>
- <entry><systemitem class="osname">Fedora</></entry>
- <entry><systemitem>x86</></entry>
- <entry>8.0.0</entry>
- <entry>Build farm <systemitem class="systemname">dog</systemitem>, snapshot 2004-12-06 02:06:01</entry>
- <entry>FC1</entry>
- </row>
- <row>
- <entry><systemitem class="osname">FreeBSD</></entry>
- <entry><systemitem>Alpha</></entry>
- <entry>7.4</entry>
- <entry>Peter Eisentraut (<email>peter_e@gmx.net</email>), 2003-10-25</entry>
- <entry>4.8</entry>
- </row>
- <row>
- <entry><systemitem class="osname">FreeBSD</></entry>
- <entry><systemitem>x86</></entry>
- <entry>8.0.0</entry>
- <entry>Build farm <systemitem class="systemname">cockatoo</systemitem>, snapshot 2004-12-06 14:10:01 (4.10);
- Marc Fournier (<email>scrappy@postgresql.org</email>), 2004-12-07 (5.3)</entry>
- <entry></entry>
- </row>
- <row>
- <entry><systemitem class="osname">Gentoo Linux</></entry>
- <entry><systemitem>x86</></entry>
- <entry>8.0.0</entry>
- <entry>Paul Bort (<email>pbort@tmwsystems.com</email>), 2004-12-07</entry>
- <entry></entry>
- </row>
- <row>
- <entry><systemitem class="osname">HP-UX</></entry>
- <entry><systemitem>PA-RISC</></entry>
- <entry>7.4</entry>
- <entry>
- Tom Lane (<email>tgl@sss.pgh.pa.us</email>), 2003-10-31 (10.20);
- Peter Eisentraut (<email>peter_e@gmx.net</email>), 2003-11-04 (11.00)
- </entry>
- <entry><command>gcc</> and <command>cc</>; see also <filename>doc/FAQ_HPUX</filename></entry>
- </row>
- <row>
- <entry><systemitem class="osname">IRIX</></entry>
- <entry><systemitem>MIPS</></entry>
- <entry>7.4</entry>
- <entry>Robert E. Bruccoleri (<email>bruc@stone.congenomics.com</email>), 2003-11-12</entry>
- <entry>6.5.20, <command>cc</command> only</entry>
- </row>
- <row>
- <entry><systemitem class="osname">Mac OS X</></entry>
- <entry><systemitem>PowerPC</></entry>
- <entry>8.0.0</entry>
- <entry>Andrew Rawnsley (<email>ronz@ravensfield.com</email>), 2004-12-07</entry>
- <entry>10.3.5</entry>
- </row>
- <row>
- <entry><systemitem class="osname">Mandrakelinux</></entry>
- <entry><systemitem>x86</></entry>
- <entry>8.0.0</entry>
- <entry>Build farm <systemitem class="systemname">shrew</systemitem>, snapshot 2004-12-06 02:02:01</entry>
- <entry>10.0</entry>
- </row>
- <row>
- <entry><systemitem class="osname">NetBSD</></entry>
- <entry><systemitem>arm32</></entry>
- <entry>7.4</entry>
- <entry>Patrick Welche (<email>prlw1@newn.cam.ac.uk</email>), 2003-11-12</entry>
- <entry>1.6ZE/acorn32</entry>
- </row>
- <row>
- <entry><systemitem class="osname">NetBSD</></entry>
- <entry><systemitem>Sparc</></entry>
- <entry>7.4.1</entry>
- <entry>Peter Eisentraut (<email>peter_e@gmx.net</email>), 2003-11-26</entry>
- <entry>1.6.1, 32-bit</entry>
- </row>
- <row>
- <entry><systemitem class="osname">NetBSD</></entry>
- <entry><systemitem>x86</></entry>
- <entry>8.0.0</entry>
- <entry>Build farm <systemitem class="systemname">canary</systemitem>, snapshot 2004-12-06 03:30:00</entry>
- <entry>1.6</entry>
- </row>
- <row>
- <entry><systemitem class="osname">OpenBSD</></entry>
- <entry><systemitem>Sparc</></entry>
- <entry>7.4</entry>
- <entry>Peter Eisentraut (<email>peter_e@gmx.net</email>), 2003-11-01</entry>
- <entry>3.4</entry>
- </row>
- <row>
- <entry><systemitem class="osname">OpenBSD</></entry>
- <entry><systemitem>x86</></entry>
- <entry>8.0.0</entry>
- <entry>Build farm <systemitem class="systemname">emu</systemitem>, snapshot 2004-12-06 11:35:03</entry>
- <entry>3.6</entry>
- </row>
- <row>
- <entry><systemitem class="osname">Red Hat Linux</></entry>
- <entry><systemitem>AMD64</></entry>
- <entry>8.0.0</entry>
- <entry>Tom Lane (<email>tgl@sss.pgh.pa.us</email>), 2004-12-07</entry>
- <entry>RHEL 3AS</entry>
- </row>
- <row>
- <entry><systemitem class="osname">Red Hat Linux</></entry>
- <entry><systemitem>IA64</></entry>
- <entry>8.0.0</entry>
- <entry>Tom Lane (<email>tgl@sss.pgh.pa.us</email>), 2004-12-07</entry>
- <entry>RHEL 3AS</entry>
- </row>
- <row>
- <entry><systemitem class="osname">Red Hat Linux</></entry>
- <entry><systemitem>PowerPC</></entry>
- <entry>8.0.0</entry>
- <entry>Tom Lane (<email>tgl@sss.pgh.pa.us</email>), 2004-12-07</entry>
- <entry>RHEL 3AS</entry>
- </row>
- <row>
- <entry><systemitem class="osname">Red Hat Linux</></entry>
- <entry><systemitem>PowerPC 64</></entry>
- <entry>8.0.0</entry>
- <entry>Tom Lane (<email>tgl@sss.pgh.pa.us</email>), 2004-12-07</entry>
- <entry>RHEL 3AS</entry>
- </row>
- <row>
- <entry><systemitem class="osname">Red Hat Linux</></entry>
- <entry><systemitem>S/390</></entry>
- <entry>8.0.0</entry>
- <entry>Tom Lane (<email>tgl@sss.pgh.pa.us</email>), 2004-12-07</entry>
- <entry>RHEL 3AS</entry>
- </row>
- <row>
- <entry><systemitem class="osname">Red Hat Linux</></entry>
- <entry><systemitem>S/390x</></entry>
- <entry>8.0.0</entry>
- <entry>Tom Lane (<email>tgl@sss.pgh.pa.us</email>), 2004-12-07</entry>
- <entry>RHEL 3AS</entry>
- </row>
- <row>
- <entry><systemitem class="osname">Red Hat Linux</></entry>
- <entry><systemitem>x86</></entry>
- <entry>8.0.0</entry>
- <entry>Tom Lane (<email>tgl@sss.pgh.pa.us</email>), 2004-12-07</entry>
- <entry>RHEL 3AS</entry>
- </row>
- <row>
- <entry><systemitem class="osname">Solaris</></entry>
- <entry><systemitem>Sparc</></entry>
- <entry>8.0.0</entry>
- <entry>Kenneth Marshall (<email>ktm@is.rice.edu</email>), 2004-12-07</entry>
- <entry>Solaris 8; see also <filename>doc/FAQ_Solaris</filename></entry>
- </row>
- <row>
- <entry><systemitem class="osname">Solaris</></entry>
- <entry><systemitem>x86</></entry>
- <entry>8.0.0</entry>
- <entry>Build farm <systemitem class="systemname">kudu</systemitem>, snapshot 2004-12-10 02:30:04 (<command>cc</command>);
- <systemitem class="systemname">dragonfly</systemitem>, snapshot 2004-12-09 04:30:00 (<command>gcc</command>)</entry>
- <entry>Solaris 9; see also <filename>doc/FAQ_Solaris</filename></entry>
- </row>
- <row>
- <entry><systemitem class="osname">Tru64 UNIX</></entry>
- <entry><systemitem>Alpha</></entry>
- <entry>7.4</entry>
- <entry>Peter Eisentraut (<email>peter_e@gmx.net</email>), 2003-10-25 (5.1b);
- Alessio Bragadini (<email>alessio@albourne.com</email>), 2003-10-29 (4.0g)</entry>
- <entry></entry>
- </row>
- <row>
- <entry><systemitem class="osname">UnixWare</></entry>
- <entry><systemitem>x86</></entry>
- <entry>8.0.0</entry>
- <entry>Peter Eisentraut (<email>peter_e@gmx.net</email>), 2004-12-14</entry>
- <entry><command>cc</command>, 7.1.4; see also <filename>doc/FAQ_SCO</filename></entry>
- </row>
- <row>
- <entry><systemitem class="osname">Windows</></entry>
- <entry><systemitem>x86</></entry>
- <entry>8.0.0</entry>
- <entry>Dave Page (<email>dpage@vale-housing.co.uk</email>), 2004-12-07</entry>
- <entry>see <filename>doc/FAQ_MINGW</filename></entry>
- </row>
- <row>
- <entry><systemitem class="osname">Windows with <application>Cygwin</application></></entry>
- <entry><systemitem>x86</></entry>
- <entry>8.0.0</entry>
- <entry>Build farm <systemitem class="systemname">gibbon</systemitem>, snapshot 2004-12-11 01:33:01</entry>
- <entry>see <filename>doc/FAQ_CYGWIN</filename></entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <formalpara>
- <title>Unsupported Platforms:</title>
- <para>
- The following platforms are either known not to work, or they used
- to work in a previous release and we did not receive explicit
- confirmation of a successful test with version &majorversion; at
- the time this list was compiled. We include these here to let you
- know that these platforms <emphasis>could</> be supported if given
- some attention.
- </para>
- </formalpara>
-
- <informaltable>
- <tgroup cols="5">
- <thead>
- <row>
- <entry><acronym>OS</acronym></entry>
- <entry>Processor</entry>
- <entry>Version</entry>
- <entry>Reported</entry>
- <entry>Remarks</entry>
- </row>
- </thead>
-
- <tbody>
- <row>
- <entry><systemitem class="osname">BeOS</></entry>
- <entry><systemitem>x86</></entry>
- <entry>7.2</entry>
- <entry>2001-11-29,
- Cyril Velter (<email>cyril.velter@libertysurf.fr</email>)</entry>
- <entry>needs updates to semaphore code</entry>
- </row>
- <row>
- <entry><systemitem class="osname">Linux</></entry>
- <entry><systemitem>PlayStation 2</></entry>
- <entry>7.4</entry>
- <entry>2003-11-02,
- Peter Eisentraut (<email>peter_e@gmx.net</email>)</entry>
- <entry>
- needs new <filename>config.guess</filename>,
- <option>--disable-spinlocks</option>
- </entry>
- </row>
- <row>
- <entry><systemitem class="osname">NetBSD</></entry>
- <entry><systemitem>Alpha</></entry>
- <entry>7.2</entry>
- <entry>2001-11-20,
- Thomas Thai (<email>tom@minnesota.com</email>)</entry>
- <entry>1.5W</entry>
- </row>
- <row>
- <entry><systemitem class="osname">NetBSD</></entry>
- <entry><systemitem>MIPS</></entry>
- <entry>7.2.1</entry>
- <entry>2002-06-13,
- Warwick Hunter (<email>whunter@agile.tv</email>)</entry>
- <entry>1.5.3</entry>
- </row>
- <row>
- <entry><systemitem class="osname">NetBSD</></entry>
- <entry><systemitem>PowerPC</></entry>
- <entry>7.2</entry>
- <entry>2001-11-28,
- Bill Studenmund (<email>wrstuden@netbsd.org</email>)</entry>
- <entry>1.5</entry>
- </row>
- <row>
- <entry><systemitem class="osname">NetBSD</></entry>
- <entry><systemitem>VAX</></entry>
- <entry>7.1</entry>
- <entry>2001-03-30,
- Tom I. Helbekkmo (<email>tih@kpnQwest.no</email>)</entry>
- <entry>1.5</entry>
- </row>
- <row>
- <entry><systemitem class="osname">QNX 4 RTOS</></entry>
- <entry><systemitem>x86</></entry>
- <entry>7.2</entry>
- <entry>2001-12-10,
- Bernd Tegge (<email>tegge@repas-aeg.de</email>)
- </entry>
- <entry>needs updates to semaphore code;
- see also <filename>doc/FAQ_QNX4</filename></entry>
- </row>
- <row>
- <entry><systemitem class="osname">QNX RTOS v6</></entry>
- <entry><systemitem>x86</></entry>
- <entry>7.2</entry>
- <entry>2001-11-20, Igor Kovalenko (<email>Igor.Kovalenko@motorola.com</email>)</entry>
- <entry>patches available in archives, but too late for 7.2</entry>
- </row>
- <row>
- <entry><systemitem class="osname">SCO OpenServer</></entry>
- <entry><systemitem>x86</></entry>
- <entry>7.3.1</entry>
- <entry>2002-12-11,
- Shibashish Satpathy (<email>shib@postmark.net</>)</entry>
- <entry>5.0.4, <command>gcc</>; see also <filename>doc/FAQ_SCO</filename></entry>
- </row>
- <row>
- <entry><systemitem class="osname">SunOS 4</></entry>
- <entry><systemitem>Sparc</></entry>
- <entry>7.2</entry>
- <entry>2001-12-04, Tatsuo Ishii (<email>t-ishii@sra.co.jp</email>)</entry>
- <entry></entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </sect1>
-
-</chapter>
-
-<!-- Keep this comment at the end of the file
-Local variables:
-mode:sgml
-sgml-omittag:nil
-sgml-shorttag:t
-sgml-minimize-attributes:nil
-sgml-always-quote-attributes:t
-sgml-indent-step:1
-sgml-indent-tabs-mode:nil
-sgml-indent-data:t
-sgml-parent-document:nil
-sgml-default-dtd-file:"./reference.ced"
-sgml-exposed-tags:nil
-sgml-local-catalogs:("/usr/share/sgml/catalog")
-sgml-local-ecat-files:nil
-End:
--->
+<!-- $PostgreSQL: pgsql/doc/src/sgml/installation.sgml,v 1.217 2004/12/24 18:32:50 momjian Exp $ -->\r
+\r
+<chapter id="installation">\r
+ <title><![%standalone-include[<productname>PostgreSQL</>]]>\r
+ Installation Instructions</title>\r
+\r
+ <indexterm zone="installation">\r
+ <primary>installation</primary>\r
+ </indexterm>\r
+\r
+ <para>\r
+ This <![%standalone-include;[document]]>\r
+ <![%standalone-ignore;[chapter]]> describes the installation of\r
+ <productname>PostgreSQL</productname> from the source code\r
+ distribution.\r
+ </para>\r
+\r
+ <sect1 id="install-short">\r
+ <title>Short Version</title>\r
+\r
+ <para>\r
+<synopsis>\r
+./configure\r
+gmake\r
+su\r
+gmake install\r
+adduser postgres\r
+mkdir /usr/local/pgsql/data\r
+chown postgres /usr/local/pgsql/data\r
+su - postgres\r
+/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data\r
+/usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data >logfile 2>&1 &\r
+/usr/local/pgsql/bin/createdb test\r
+/usr/local/pgsql/bin/psql test\r
+</synopsis>\r
+ The long version is the rest of this\r
+ <![%standalone-include;[document.]]>\r
+ <![%standalone-ignore;[chapter.]]>\r
+ </para>\r
+ </sect1>\r
+\r
+\r
+ <sect1 id="install-requirements">\r
+ <title>Requirements</title>\r
+\r
+ <para>\r
+ In general, a modern Unix-compatible platform should be able to run\r
+ <productname>PostgreSQL</>.\r
+ The platforms that had received specific testing at the\r
+ time of release are listed in <xref linkend="supported-platforms">\r
+ below. In the <filename>doc</> subdirectory of the distribution\r
+ there are several platform-specific <acronym>FAQ</> documents you\r
+ might wish to consult if you are having trouble.\r
+ </para>\r
+\r
+ <para>\r
+ The following software packages are required for building\r
+ <productname>PostgreSQL</>:\r
+\r
+ <itemizedlist>\r
+ <listitem>\r
+ <para>\r
+ <indexterm>\r
+ <primary>make</primary>\r
+ </indexterm>\r
+\r
+ <acronym>GNU</> <application>make</> is required; other\r
+ <application>make</> programs will <emphasis>not</> work.\r
+ <acronym>GNU</> <application>make</> is often installed under\r
+ the name <filename>gmake</filename>; this document will always\r
+ refer to it by that name. (On some systems\r
+ <acronym>GNU</acronym> <application>make</> is the default tool with the name\r
+ <filename>make</>.) To test for <acronym>GNU</acronym>\r
+ <application>make</application> enter\r
+<screen>\r
+<userinput>gmake --version</userinput>\r
+</screen>\r
+ It is recommended to use version 3.76.1 or later.\r
+ </para>\r
+ </listitem>\r
+\r
+ <listitem>\r
+ <para>\r
+ You need an <acronym>ISO</>/<acronym>ANSI</> C compiler. Recent\r
+ versions of <productname>GCC</> are recommendable, but\r
+ <productname>PostgreSQL</> is known to build with a wide variety\r
+ of compilers from different vendors.\r
+ </para>\r
+ </listitem>\r
+\r
+ <listitem>\r
+ <para>\r
+ <application>gzip</> is needed to unpack the distribution in the\r
+ first place.<![%standalone-include;[ If you are reading this, you probably already got\r
+ past that hurdle.]]>\r
+ </para>\r
+ </listitem>\r
+\r
+ <listitem>\r
+ <para>\r
+ <indexterm>\r
+ <primary>readline</primary>\r
+ </indexterm>\r
+\r
+ The <acronym>GNU</> <productname>Readline</> library (for\r
+ comfortable line editing and command history retrieval) will be\r
+ used by default. If you don't want to use it then you must\r
+ specify the <option>--without-readline</option> option for\r
+ <filename>configure</>. (On <productname>NetBSD</productname>,\r
+ the <filename>libedit</filename> library is\r
+ <productname>Readline</productname>-compatible and is used if\r
+ <filename>libreadline</filename> is not found.)\r
+ </para>\r
+ </listitem>\r
+\r
+ <listitem>\r
+ <para>\r
+ <indexterm>\r
+ <primary>installation</primary>\r
+ <secondary>on Windows</secondary>\r
+ </indexterm>\r
+\r
+ To build on <productname>NT</>-based versions of\r
+ <productname>Windows</> like Windows XP and 2003 see\r
+ <filename>doc/FAQ_MINGW</>. For earlier <productname>Windows</>\r
+ releases see <filename>doc/FAQ_CYGWIN</>.\r
+\r
+ To build <productname>Windows</> client-only interfaces using\r
+ tools like <productname>Visual C++</> and <productname>Borland\r
+ C++</> see\r
+ <![%standalone-include[the documentation chapter "Client-Only\r
+ Installation on Windows"]]> <![%standalone-ignore[<xref\r
+ linkend="install-win32">]]>.\r
+ </para>\r
+ </listitem>\r
+ </itemizedlist>\r
+ </para>\r
+\r
+ <para>\r
+ The following packages are optional. They are not required in the\r
+ default configuration, but they are needed when certain build\r
+ options are enabled, as explained below.\r
+\r
+ <itemizedlist>\r
+ <listitem>\r
+ <para>\r
+ To build the server programming language\r
+ <application>PL/Perl</application> you need a full\r
+ <productname>Perl</productname> installation, including the\r
+ <filename>libperl</filename> library and the header files.\r
+ Since <application>PL/Perl</application> will be a shared\r
+ library, the <indexterm><primary>libperl</primary></indexterm>\r
+ <filename>libperl</filename> library must be a shared library\r
+ also on most platforms. This appears to be the default in\r
+ recent <productname>Perl</productname> versions, but it was not\r
+ in earlier versions, and in general it is the choice of whomever\r
+ installed Perl at your site.\r
+ </para>\r
+\r
+ <para>\r
+ If you don't have the shared library but you need one, a message\r
+ like this will appear during the build to point out this fact:\r
+<screen>\r
+*** Cannot build PL/Perl because libperl is not a shared library.\r
+*** You might have to rebuild your Perl installation. Refer to\r
+*** the documentation for details.\r
+</screen>\r
+ (If you don't follow the on-screen output you will merely notice\r
+ that the <application>PL/Perl</application> library object,\r
+ <filename>plperl.so</filename> or similar, will not be\r
+ installed.) If you see this, you will have to rebuild and\r
+ install <productname>Perl</productname> manually to be able to\r
+ build <application>PL/Perl</application>. During the\r
+ configuration process for <productname>Perl</productname>,\r
+ request a shared library.\r
+ </para>\r
+ </listitem>\r
+\r
+ <listitem>\r
+ <para>\r
+ To build the <application>PL/Python</> server programming\r
+ language, you need a <productname>Python</productname>\r
+ installation with the header files and the <application>distutils</application> module.\r
+ The <application>distutils</application> module is included by default with\r
+ <productname>Python</productname> 1.6 and later; users of\r
+ earlier versions of <productname>Python</productname> will need\r
+ to install it.\r
+ </para>\r
+\r
+ <para>\r
+ Since <application>PL/Python</application> will be a shared\r
+ library, the <indexterm><primary>libpython</primary></indexterm>\r
+ <filename>libpython</filename> library must be a shared library\r
+ also on most platforms. This is not the case in a default\r
+ <productname>Python</productname> installation. If after\r
+ building and installing you have a file called\r
+ <filename>plpython.so</filename> (possibly a different\r
+ extension), then everything went well. Otherwise you should\r
+ have seen a notice like this flying by:\r
+<screen>\r
+*** Cannot build PL/Python because libpython is not a shared library.\r
+*** You might have to rebuild your Python installation. Refer to\r
+*** the documentation for details.\r
+</screen>\r
+ That means you have to rebuild (part of) your\r
+ <productname>Python</productname> installation to supply this\r
+ shared library.\r
+ </para>\r
+\r
+ <para>\r
+ If you have problems, run <productname>Python</> 2.3 or later's\r
+ configure using the <literal>--enable-shared</> flag. On some\r
+ operating systems you don't have to build a shared library, but\r
+ you will have to convince the <productname>PostgreSQL</> build\r
+ system of this. Consult the <filename>Makefile</filename> in\r
+ the <filename>src/pl/plpython</filename> directory for details.\r
+ </para>\r
+ </listitem>\r
+\r
+ <listitem>\r
+ <para>\r
+ If you want to build the <application>PL/Tcl</application>\r
+ procedural language, you of course need a Tcl installation.\r
+ </para>\r
+ </listitem>\r
+\r
+ <listitem>\r
+ <para>\r
+ To enable Native Language Support (<acronym>NLS</acronym>), that\r
+ is, the ability to display a program's messages in a language\r
+ other than English, you need an implementation of the\r
+ <application>Gettext</> <acronym>API</acronym>. Some operating\r
+ systems have this built-in (e.g., <systemitem\r
+ class="osname">Linux</>, <systemitem class="osname">NetBSD</>,\r
+ <systemitem class="osname">Solaris</>), for other systems you\r
+ can download an add-on package from here: <ulink\r
+ url="http://developer.postgresql.org/~petere/bsd-gettext/" ></ulink>.\r
+ If you are using the <application>Gettext</> implementation in\r
+ the <acronym>GNU</acronym> C library then you will additionally\r
+ need the <productname>GNU Gettext</productname> package for some\r
+ utility programs. For any of the other implementations you will\r
+ not need it.\r
+ </para>\r
+ </listitem>\r
+\r
+ <listitem>\r
+ <para>\r
+ <application>Kerberos</>, <productname>OpenSSL</>, or <application>PAM</>,\r
+ if you want to support authentication using these services.\r
+ </para>\r
+ </listitem>\r
+ </itemizedlist>\r
+ </para>\r
+\r
+ <para>\r
+ If you are building from a <acronym>CVS</acronym> tree instead of\r
+ using a released source package, or if you want to do development,\r
+ you also need the following packages:\r
+\r
+ <itemizedlist>\r
+ <listitem>\r
+ <para>\r
+ <indexterm>\r
+ <primary>flex</primary>\r
+ </indexterm>\r
+ <indexterm>\r
+ <primary>bison</primary>\r
+ </indexterm>\r
+ <indexterm>\r
+ <primary>yacc</primary>\r
+ </indexterm>\r
+\r
+ <application>Flex</> and <application>Bison</>\r
+ are needed to build a CVS checkout or if you changed the actual\r
+ scanner and parser definition files. If you need them, be sure\r
+ to get <application>Flex</> 2.5.4 or later and\r
+ <application>Bison</> 1.875 or later. Other <application>yacc</>\r
+ programs can sometimes be used, but doing so requires extra\r
+ effort and is not recommended. Other <application>lex</>\r
+ programs will definitely not work.\r
+ </para>\r
+ </listitem>\r
+ </itemizedlist>\r
+ </para>\r
+\r
+ <para>\r
+ If you need to get a <acronym>GNU</acronym> package, you can find\r
+ it at your local <acronym>GNU</acronym> mirror site (see <ulink\r
+ url="http://www.gnu.org/order/ftp.html"></>\r
+ for a list) or at <ulink\r
+ url="ftp://ftp.gnu.org/gnu/"></ulink>.\r
+ </para>\r
+\r
+ <para>\r
+ Also check that you have sufficient disk space. You will need about\r
+ 65 MB for the source tree during compilation and about 15 MB for\r
+ the installation directory. An empty database cluster takes about\r
+ 25 MB, databases take about five times the amount of space that a\r
+ flat text file with the same data would take. If you are going to\r
+ run the regression tests you will temporarily need up to an extra\r
+ 90 MB. Use the <command>df</command> command to check for disk\r
+ space.\r
+ </para>\r
+ </sect1>\r
+\r
+<![%standalone-ignore;[\r
+ <sect1 id="install-getsource">\r
+ <title>Getting The Source</title>\r
+\r
+ <para>\r
+ The <productname>PostgreSQL</> &version; sources can be obtained by\r
+ anonymous FTP from <ulink\r
+ url="ftp://ftp.postgresql.org/pub/source/v&version;/postgresql-&version;.tar.gz"></ulink>.\r
+ Use a mirror if possible. After you have obtained the file, unpack it:\r
+<screen>\r
+<userinput>gunzip postgresql-&version;.tar.gz</userinput>\r
+<userinput>tar xf postgresql-&version;.tar</userinput>\r
+</screen>\r
+ This will create a directory\r
+ <filename>postgresql-&version;</filename> under the current directory\r
+ with the <productname>PostgreSQL</> sources.\r
+ Change into that directory for the rest\r
+ of the installation procedure.\r
+ </para>\r
+ </sect1>\r
+]]>\r
+\r
+ <sect1 id="install-upgrading">\r
+ <title>If You Are Upgrading</title>\r
+\r
+ <indexterm zone="install-upgrading">\r
+ <primary>upgrading</primary>\r
+ </indexterm>\r
+\r
+ <para>\r
+ The internal data storage format changes with new releases of\r
+ <productname>PostgreSQL</>. Therefore, if you are upgrading an\r
+ existing installation that does not have a version number\r
+ <quote>&majorversion;.x</quote>, you must back up and restore your\r
+ data as shown here. These instructions assume that your existing\r
+ installation is under the <filename>/usr/local/pgsql</> directory,\r
+ and that the data area is in <filename>/usr/local/pgsql/data</>.\r
+ Substitute your paths appropriately.\r
+ </para>\r
+\r
+ <procedure>\r
+ <step>\r
+ <para>\r
+ Make sure that your database is not updated during or after the\r
+ backup. This does not affect the integrity of the backup, but the\r
+ changed data would of course not be included. If necessary, edit\r
+ the permissions in the file\r
+ <filename>/usr/local/pgsql/data/pg_hba.conf</> (or equivalent) to\r
+ disallow access from everyone except you.\r
+ </para>\r
+ </step>\r
+\r
+ <step>\r
+ <para>\r
+ <indexterm>\r
+ <primary>pg_dumpall</primary>\r
+ <secondary>use during upgrade</secondary>\r
+ </indexterm>\r
+\r
+ To back up your database installation, type:\r
+<screen>\r
+<userinput>pg_dumpall > <replaceable>outputfile</></userinput>\r
+</screen>\r
+ If you need to preserve OIDs (such as when using them as\r
+ foreign keys), then use the <option>-o</option> option when running\r
+ <application>pg_dumpall</>.\r
+ </para>\r
+\r
+ <para>\r
+ <application>pg_dumpall</application> does not\r
+ save large objects. Check\r
+ <![%standalone-include[the documentation]]>\r
+ <![%standalone-ignore[<xref linkend="backup-dump-caveats">]]>\r
+ if you need to do this.\r
+ </para>\r
+\r
+ <para>\r
+ To make the backup, you can use the <application>pg_dumpall</application>\r
+ command from the version you are currently running. For best\r
+ results, however, try to use the <application>pg_dumpall</application>\r
+ command from <productname>PostgreSQL</productname> &version;,\r
+ since this version contains bug fixes and improvements over older\r
+ versions. While this advice might seem idiosyncratic since you\r
+ haven't installed the new version yet, it is advisable to follow\r
+ it if you plan to install the new version in parallel with the\r
+ old version. In that case you can complete the installation\r
+ normally and transfer the data later. This will also decrease\r
+ the downtime.\r
+ </para>\r
+ </step>\r
+\r
+ <step>\r
+ <para>\r
+ If you are installing the new version at the same location as the\r
+ old one then shut down the old server, at the latest before you\r
+ install the new files:\r
+<screen>\r
+<userinput>kill -INT `cat /usr/local/pgsql/data/postmaster.pid | sed 1q`</>\r
+</screen>\r
+ Versions prior to 7.0 do not have this\r
+ <filename>postmaster.pid</> file. If you are using such a version\r
+ you must find out the process ID of the server yourself, for\r
+ example by typing <userinput>ps ax | grep postmaster</>, and\r
+ supply it to the <command>kill</> command.\r
+ </para>\r
+\r
+ <para>\r
+ On systems that have <productname>PostgreSQL</> started at boot time, there is\r
+ probably a start-up file that will accomplish the same thing. For\r
+ example, on a <systemitem class="osname">Red Hat Linux</> system one might find that\r
+<screen>\r
+<userinput>/etc/rc.d/init.d/postgresql stop</userinput>\r
+</screen>\r
+ works. Another possibility is <userinput>pg_ctl stop</>.\r
+ </para>\r
+ </step>\r
+\r
+ <step>\r
+ <para>\r
+ If you are installing in the same place as the old version then\r
+ it is also a good idea to move the old installation out of the\r
+ way, in case you have trouble and need to revert to it.\r
+ Use a command like this:\r
+<screen>\r
+<userinput>mv /usr/local/pgsql /usr/local/pgsql.old</>\r
+</screen>\r
+ </para>\r
+ </step>\r
+ </procedure>\r
+\r
+ <para>\r
+ After you have installed <productname>PostgreSQL</> &version;, create a new database\r
+ directory and start the new server. Remember that you must execute\r
+ these commands while logged in to the special database user account\r
+ (which you already have if you are upgrading).\r
+<programlisting>\r
+<userinput>/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data</>\r
+<userinput>/usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data</>\r
+</programlisting>\r
+ Finally, restore your data with\r
+<screen>\r
+<userinput>/usr/local/pgsql/bin/psql -d template1 -f <replaceable>outputfile</></userinput>\r
+</screen>\r
+ using the <emphasis>new</> <application>psql</>.\r
+ </para>\r
+\r
+ <para>\r
+ These topics are discussed at length in <![%standalone-include[the\r
+ documentation,]]> <![%standalone-ignore[<xref\r
+ linkend="migration">,]]> which you are encouraged to read in any\r
+ case.\r
+ </para>\r
+ </sect1>\r
+\r
+\r
+ <sect1 id="install-procedure">\r
+ <title>Installation Procedure</title>\r
+\r
+ <procedure>\r
+\r
+ <step id="configure">\r
+ <title>Configuration</>\r
+\r
+ <indexterm zone="configure">\r
+ <primary>configure</primary>\r
+ </indexterm>\r
+\r
+ <para>\r
+ The first step of the installation procedure is to configure the\r
+ source tree for your system and choose the options you would like.\r
+ This is done by running the <filename>configure</> script. For a\r
+ default installation simply enter\r
+<screen>\r
+<userinput>./configure</userinput>\r
+</screen>\r
+ This script will run a number of tests to guess values for various\r
+ system dependent variables and detect some quirks of your\r
+ operating system, and finally will create several files in the\r
+ build tree to record what it found. (You can also run\r
+ <filename>configure</filename> in a directory outside the source\r
+ tree if you want to keep the build directory separate.)\r
+ </para>\r
+\r
+ <para>\r
+ The default configuration will build the server and utilities, as\r
+ well as all client applications and interfaces that require only a\r
+ C compiler. All files will be installed under\r
+ <filename>/usr/local/pgsql</> by default.\r
+ </para>\r
+\r
+ <para>\r
+ You can customize the build and installation process by supplying one\r
+ or more of the following command line options to\r
+ <filename>configure</filename>:\r
+\r
+ <variablelist>\r
+ <varlistentry>\r
+ <term><option>--prefix=<replaceable>PREFIX</></option></term>\r
+ <listitem>\r
+ <para>\r
+ Install all files under the directory <replaceable>PREFIX</>\r
+ instead of <filename>/usr/local/pgsql</filename>. The actual\r
+ files will be installed into various subdirectories; no files\r
+ will ever be installed directly into the\r
+ <replaceable>PREFIX</> directory.\r
+ </para>\r
+\r
+ <para>\r
+ If you have special needs, you can also customize the\r
+ individual subdirectories with the following options. However,\r
+ if you leave these with their defaults, the installation will be\r
+ relocatable, meaning you can move the directory after\r
+ installation. (The <literal>man</> and <literal>doc</>\r
+ locations are not affected by this.)\r
+ </para>\r
+\r
+ <para>\r
+ For relocatable installs, you might want to use \r
+ <filename>configure</filename>'s <literal>--disable-rpath</>\r
+ option. Also, you will need to tell the operating system how\r
+ to find the shared libraries.\r
+ </para>\r
+ </listitem>\r
+ </varlistentry>\r
+\r
+ <varlistentry>\r
+ <term><option>--exec-prefix=<replaceable>EXEC-PREFIX</></option></term>\r
+ <listitem>\r
+ <para>\r
+ You can install architecture-dependent files under a\r
+ different prefix, <replaceable>EXEC-PREFIX</>, than what\r
+ <replaceable>PREFIX</> was set to. This can be useful to\r
+ share architecture-independent files between hosts. If you\r
+ omit this, then <replaceable>EXEC-PREFIX</> is set equal to\r
+ <replaceable>PREFIX</> and both architecture-dependent and\r
+ independent files will be installed under the same tree,\r
+ which is probably what you want.\r
+ </para>\r
+ </listitem>\r
+ </varlistentry>\r
+\r
+ <varlistentry>\r
+ <term><option>--bindir=<replaceable>DIRECTORY</></option></term>\r
+ <listitem>\r
+ <para>\r
+ Specifies the directory for executable programs. The default\r
+ is <filename><replaceable>EXEC-PREFIX</>/bin</>, which\r
+ normally means <filename>/usr/local/pgsql/bin</>.\r
+ </para>\r
+ </listitem>\r
+ </varlistentry>\r
+\r
+ <varlistentry>\r
+ <term><option>--datadir=<replaceable>DIRECTORY</></option></term>\r
+ <listitem>\r
+ <para>\r
+ Sets the directory for read-only data files used by the\r
+ installed programs. The default is\r
+ <filename><replaceable>PREFIX</>/share</>. Note that this has\r
+ nothing to do with where your database files will be placed.\r
+ </para>\r
+ </listitem>\r
+ </varlistentry>\r
+\r
+ <varlistentry>\r
+ <term><option>--sysconfdir=<replaceable>DIRECTORY</></option></term>\r
+ <listitem>\r
+ <para>\r
+ The directory for various configuration files,\r
+ <filename><replaceable>PREFIX</>/etc</> by default.\r
+ </para>\r
+ </listitem>\r
+ </varlistentry>\r
+\r
+ <varlistentry>\r
+ <term><option>--libdir=<replaceable>DIRECTORY</></option></term>\r
+ <listitem>\r
+ <para>\r
+ The location to install libraries and dynamically loadable\r
+ modules. The default is\r
+ <filename><replaceable>EXEC-PREFIX</>/lib</>.\r
+ </para>\r
+ </listitem>\r
+ </varlistentry>\r
+\r
+ <varlistentry>\r
+ <term><option>--includedir=<replaceable>DIRECTORY</></option></term>\r
+ <listitem>\r
+ <para>\r
+ The directory for installing C and C++ header files. The\r
+ default is <filename><replaceable>PREFIX</>/include</>.\r
+ </para>\r
+ </listitem>\r
+ </varlistentry>\r
+\r
+ <varlistentry>\r
+ <term><option>--mandir=<replaceable>DIRECTORY</></option></term>\r
+ <listitem>\r
+ <para>\r
+ The man pages that come with <productname>PostgreSQL</> will be installed under\r
+ this directory, in their respective\r
+ <filename>man<replaceable>x</></> subdirectories.\r
+ The default is <filename><replaceable>PREFIX</>/man</>.\r
+ </para>\r
+ </listitem>\r
+ </varlistentry>\r
+\r
+ <varlistentry>\r
+ <term><option>--with-docdir=<replaceable>DIRECTORY</></option></term>\r
+ <term><option>--without-docdir</option></term>\r
+ <listitem>\r
+ <para>\r
+ Documentation files, except <quote>man</> pages, will be\r
+ installed into this directory. The default is\r
+ <filename><replaceable>PREFIX</>/doc</>. If the option\r
+ <option>--without-docdir</option> is specified, the\r
+ documentation will not be installed by <command>make\r
+ install</command>. This is intended for packaging scripts\r
+ that have special methods for installing documentation.\r
+ </para>\r
+ </listitem>\r
+ </varlistentry>\r
+ </variablelist>\r
+\r
+ <note>\r
+ <para>\r
+ Care has been taken to make it possible to install\r
+ <productname>PostgreSQL</> into shared installation locations\r
+ (such as <filename>/usr/local/include</filename>) without\r
+ interfering with the namespace of the rest of the system. First,\r
+ the string <quote><literal>/postgresql</literal></quote> is\r
+ automatically appended to <varname>datadir</varname>,\r
+ <varname>sysconfdir</varname>, and <varname>docdir</varname>,\r
+ unless the fully expanded directory name already contains the\r
+ string <quote><literal>postgres</></quote> or\r
+ <quote><literal>pgsql</></quote>. For example, if you choose\r
+ <filename>/usr/local</filename> as prefix, the documentation will\r
+ be installed in <filename>/usr/local/doc/postgresql</filename>,\r
+ but if the prefix is <filename>/opt/postgres</filename>, then it\r
+ will be in <filename>/opt/postgres/doc</filename>. The public C\r
+ header files of the client interfaces are installed into\r
+ <varname>includedir</varname> and are namespace-clean. The\r
+ internal header files and the server header files are installed\r
+ into private directories under <varname>includedir</varname>. See\r
+ the documentation of each interface for information about how to\r
+ get at the its header files. Finally, a private subdirectory will\r
+ also be created, if appropriate, under <varname>libdir</varname>\r
+ for dynamically loadable modules.\r
+ </para>\r
+ </note>\r
+ </para>\r
+\r
+ <para>\r
+ <variablelist>\r
+ <varlistentry>\r
+ <term><option>--with-includes=<replaceable>DIRECTORIES</></option></term>\r
+ <listitem>\r
+ <para>\r
+ <replaceable>DIRECTORIES</> is a colon-separated list of\r
+ directories that will be added to the list the compiler\r
+ searches for header files. If you have optional packages\r
+ (such as GNU <application>Readline</>) installed in a non-standard\r
+ location,\r
+ you have to use this option and probably also the corresponding\r
+ <option>--with-libraries</> option.\r
+ </para>\r
+ <para>\r
+ Example: <literal>--with-includes=/opt/gnu/include:/usr/sup/include</>.\r
+ </para>\r
+ </listitem>\r
+ </varlistentry>\r
+\r
+ <varlistentry>\r
+ <term><option>--with-libraries=<replaceable>DIRECTORIES</></option></term>\r
+ <listitem>\r
+ <para>\r
+ <replaceable>DIRECTORIES</> is a colon-separated list of\r
+ directories to search for libraries. You will probably have\r
+ to use this option (and the corresponding\r
+ <option>--with-includes</> option) if you have packages\r
+ installed in non-standard locations.\r
+ </para>\r
+ <para>\r
+ Example: <literal>--with-libraries=/opt/gnu/lib:/usr/sup/lib</>.\r
+ </para>\r
+ </listitem>\r
+ </varlistentry>\r
+\r
+ <varlistentry>\r
+ <term><option>--enable-nls<optional>=<replaceable>LANGUAGES</replaceable></optional></option></term>\r
+ <listitem>\r
+ <para>\r
+ Enables Native Language Support (<acronym>NLS</acronym>),\r
+ that is, the ability to display a program's messages in a\r
+ language other than English.\r
+ <replaceable>LANGUAGES</replaceable> is a space separated\r
+ list of codes of the languages that you want supported, for\r
+ example <literal>--enable-nls='de fr'</>. (The intersection\r
+ between your list and the set of actually provided\r
+ translations will be computed automatically.) If you do not\r
+ specify a list, then all available translations are\r
+ installed.\r
+ </para>\r
+\r
+ <para>\r
+ To use this option, you will need an implementation of the\r
+ <application>Gettext</> API; see above.\r
+ </para>\r
+ </listitem>\r
+ </varlistentry>\r
+\r
+ <varlistentry>\r
+ <term><option>--with-pgport=<replaceable>NUMBER</></option></term>\r
+ <listitem>\r
+ <para>\r
+ Set <replaceable>NUMBER</> as the default port number for\r
+ server and clients. The default is 5432. The port can always\r
+ be changed later on, but if you specify it here then both\r
+ server and clients will have the same default compiled in,\r
+ which can be very convenient. Usually the only good reason\r
+ to select a non-default value is if you intend to run multiple\r
+ <productname>PostgreSQL</> servers on the same machine.\r
+ </para>\r
+ </listitem>\r
+ </varlistentry>\r
+\r
+ <varlistentry>\r
+ <term><option>--with-perl</option></term>\r
+ <listitem>\r
+ <para>\r
+ Build the <application>PL/Perl</> server-side language.\r
+ </para>\r
+ </listitem>\r
+ </varlistentry>\r
+\r
+ <varlistentry>\r
+ <term><option>--with-python</option></term>\r
+ <listitem>\r
+ <para>\r
+ Build the <application>PL/Python</> server-side language.\r
+ </para>\r
+ </listitem>\r
+ </varlistentry>\r
+\r
+ <varlistentry>\r
+ <term><option>--with-tcl</option></term>\r
+ <listitem>\r
+ <para>\r
+ Build the <application>PL/Tcl</> server-side language.\r
+ </para>\r
+ </listitem>\r
+ </varlistentry>\r
+\r
+ <varlistentry>\r
+ <term><option>--with-tclconfig=<replaceable>DIRECTORY</replaceable></option></term>\r
+ <listitem>\r
+ <para>\r
+ Tcl installs the file <filename>tclConfig.sh</filename>, which\r
+ contains configuration information needed to build modules\r
+ interfacing to Tcl. This file is normally found automatically\r
+ at a well-known location, but if you want to use a different\r
+ version of Tcl you can specify the directory in which to look\r
+ for it.\r
+ </para>\r
+ </listitem>\r
+ </varlistentry>\r
+\r
+ <varlistentry>\r
+ <term><option>--with-krb4</option></term>\r
+ <term><option>--with-krb5</option></term>\r
+ <listitem>\r
+ <para>\r
+ Build with support for Kerberos authentication. You can use\r
+ either Kerberos version 4 or 5, but not both. On many\r
+ systems, the Kerberos system is not installed in a location\r
+ that is searched by default (e.g., <filename>/usr/include</>,\r
+ <filename>/usr/lib</>), so you must use the options\r
+ <option>--with-includes</> and <option>--with-libraries</> in\r
+ addition to this option. <filename>configure</> will check\r
+ for the required header files and libraries to make sure that\r
+ your Kerberos installation is sufficient before proceeding.\r
+ </para>\r
+ </listitem>\r
+ </varlistentry>\r
+\r
+ <varlistentry>\r
+ <term><option>--with-krb-srvnam=<replaceable>NAME</></option></term>\r
+ <listitem>\r
+ <para>\r
+ The name of the Kerberos service principal.\r
+ <literal>postgres</literal> is the default. There's probably no\r
+ reason to change this.\r
+ </para>\r
+ </listitem>\r
+ </varlistentry>\r
+\r
+ <varlistentry>\r
+ <indexterm>\r
+ <primary>OpenSSL</primary>\r
+ <seealso>SSL</seealso>\r
+ </indexterm>\r
+\r
+ <term><option>--with-openssl</option></term>\r
+ <listitem>\r
+ <para>\r
+ Build with support for <acronym>SSL</> (encrypted)\r
+ connections. This requires the <productname>OpenSSL</>\r
+ package to be installed. <filename>configure</> will check\r
+ for the required header files and libraries to make sure that\r
+ your <productname>OpenSSL</> installation is sufficient\r
+ before proceeding.\r
+ </para>\r
+ </listitem>\r
+ </varlistentry>\r
+\r
+ <varlistentry>\r
+ <term><option>--with-pam</option></term>\r
+ <listitem>\r
+ <para>\r
+ Build with <acronym>PAM</><indexterm><primary>PAM</></>\r
+ (Pluggable Authentication Modules) support.\r
+ </para>\r
+ </listitem>\r
+ </varlistentry>\r
+\r
+ <varlistentry>\r
+ <term><option>--without-readline</option></term>\r
+ <listitem>\r
+ <para>\r
+ Prevents the use of the <application>Readline</> library. This disables\r
+ command-line editing and history in\r
+ <application>psql</application>, so it is not recommended.\r
+ </para>\r
+ </listitem>\r
+ </varlistentry>\r
+\r
+ <varlistentry>\r
+ <term><option>--with-rendezvous</option></term>\r
+ <listitem>\r
+ <para>\r
+ Build with Rendezvous support.\r
+ </para>\r
+ </listitem>\r
+ </varlistentry>\r
+\r
+ <varlistentry>\r
+ <term><option>--disable-spinlocks</option></term>\r
+ <listitem>\r
+ <para>\r
+ Allow the build to succeed even if <productname>PostgreSQL</>\r
+ has no CPU spinlock support for the platform. The lack of\r
+ spinlock support will result in poor performance; therefore,\r
+ this option should only be used if the build aborts and\r
+ informs you that the platform lacks spinlock support. If this\r
+ option is required to build <productname>PostgreSQL</> on\r
+ your platform, please report the problem to the\r
+ <productname>PostgreSQL</> developers.\r
+ </para>\r
+ </listitem>\r
+ </varlistentry>\r
+\r
+ <varlistentry>\r
+ <term><option>--enable-thread-safety</option></term>\r
+ <listitem>\r
+ <para>\r
+ Make the client libraries thread-safe. This allows\r
+ concurrent threads in <application>libpq</application> and\r
+ <application>ECPG</application> programs to safely control\r
+ their private connection handles.\r
+ </para>\r
+ </listitem>\r
+ </varlistentry>\r
+\r
+ <varlistentry>\r
+ <term><option>--without-zlib</option></term>\r
+ <listitem>\r
+ <para>\r
+ Prevents the use of the <application>Zlib</> library. This disables\r
+ compression support in <application>pg_dump</application>.\r
+ This option is only intended for those rare systems where this\r
+ library is not available.\r
+ </para>\r
+ </listitem>\r
+ </varlistentry>\r
+\r
+ <varlistentry>\r
+ <term><option>--enable-debug</option></term>\r
+ <listitem>\r
+ <para>\r
+ Compiles all programs and libraries with debugging symbols.\r
+ This means that you can run the programs through a debugger\r
+ to analyze problems. This enlarges the size of the installed\r
+ executables considerably, and on non-GCC compilers it usually\r
+ also disables compiler optimization, causing slowdowns. However,\r
+ having the symbols available is extremely helpful for dealing\r
+ with any problems that may arise. Currently, this option is\r
+ recommended for production installations only if you use GCC.\r
+ But you should always have it on if you are doing development work\r
+ or running a beta version.\r
+ </para>\r
+ </listitem>\r
+ </varlistentry>\r
+\r
+ <varlistentry>\r
+ <term><option>--enable-cassert</option></term>\r
+ <listitem>\r
+ <para>\r
+ Enables <firstterm>assertion</> checks in the server, which test for\r
+ many <quote>can't happen</> conditions. This is invaluable for\r
+ code development purposes, but the tests slow things down a little.\r
+ Also, having the tests turned on won't necessarily enhance the\r
+ stability of your server! The assertion checks are not categorized\r
+ for severity, and so what might be a relatively harmless bug will\r
+ still lead to server restarts if it triggers an assertion\r
+ failure. Currently, this option is not recommended for\r
+ production use, but you should have it on for development work\r
+ or when running a beta version.\r
+ </para>\r
+ </listitem>\r
+ </varlistentry>\r
+\r
+ <varlistentry>\r
+ <term><option>--enable-depend</option></term>\r
+ <listitem>\r
+ <para>\r
+ Enables automatic dependency tracking. With this option, the\r
+ makefiles are set up so that all affected object files will\r
+ be rebuilt when any header file is changed. This is useful\r
+ if you are doing development work, but is just wasted overhead\r
+ if you intend only to compile once and install. At present,\r
+ this option will work only if you use GCC.\r
+ </para>\r
+ </listitem>\r
+ </varlistentry>\r
+\r
+ </variablelist>\r
+ </para>\r
+\r
+ <para>\r
+ If you prefer a C compiler different from the one\r
+ <filename>configure</filename> picks then you can set the\r
+ environment variable <envar>CC</> to the program of your choice.\r
+ By default, <filename>configure</filename> will pick\r
+ <filename>gcc</filename> unless this is inappropriate for the\r
+ platform. Similarly, you can override the default compiler flags\r
+ with the <envar>CFLAGS</envar> variable.\r
+ </para>\r
+\r
+ <para>\r
+ You can specify environment variables on the\r
+ <filename>configure</filename> command line, for example:\r
+<screen>\r
+<userinput>./configure CC=/opt/bin/gcc CFLAGS='-O2 -pipe'</>\r
+</screen>\r
+ </para>\r
+ </step>\r
+\r
+ <step>\r
+ <title>Build</title>\r
+\r
+ <para>\r
+ To start the build, type\r
+<screen>\r
+<userinput>gmake</userinput>\r
+</screen>\r
+ (Remember to use <acronym>GNU</> <application>make</>.) The build\r
+ may take anywhere from 5 minutes to half an hour depending on your\r
+ hardware. The last line displayed should be\r
+<screen>\r
+All of PostgreSQL is successfully made. Ready to install.\r
+</screen>\r
+ </para>\r
+ </step>\r
+\r
+ <step>\r
+ <title>Regression Tests</title>\r
+\r
+ <indexterm>\r
+ <primary>regression test</primary>\r
+ </indexterm>\r
+\r
+ <para>\r
+ If you want to test the newly built server before you install it,\r
+ you can run the regression tests at this point. The regression\r
+ tests are a test suite to verify that <productname>PostgreSQL</>\r
+ runs on your machine in the way the developers expected it\r
+ to. Type\r
+<screen>\r
+<userinput>gmake check</userinput>\r
+</screen>\r
+ (This won't work as root; do it as an unprivileged user.)\r
+ <![%standalone-include[The file\r
+ <filename>src/test/regress/README</> and the\r
+ documentation contain]]>\r
+ <![%standalone-ignore[<xref linkend="regress"> contains]]>\r
+ detailed information about interpreting the test results. You can\r
+ repeat this test at any later time by issuing the same command.\r
+ </para>\r
+ </step>\r
+\r
+ <step id="install">\r
+ <title>Installing The Files</title>\r
+\r
+ <note>\r
+ <para>\r
+ If you are upgrading an existing system and are going to install\r
+ the new files over the old ones, then you should have backed up\r
+ your data and shut down the old server by now, as explained in\r
+ <xref linkend="install-upgrading"> above.\r
+ </para>\r
+ </note>\r
+\r
+ <para>\r
+ To install <productname>PostgreSQL</> enter\r
+<screen>\r
+<userinput>gmake install</userinput>\r
+</screen>\r
+ This will install files into the directories that were specified\r
+ in <xref linkend="configure">. Make sure that you have appropriate\r
+ permissions to write into that area. Normally you need to do this\r
+ step as root. Alternatively, you could create the target\r
+ directories in advance and arrange for appropriate permissions to\r
+ be granted.\r
+ </para>\r
+\r
+ <para>\r
+ You can use <literal>gmake install-strip</literal> instead of\r
+ <literal>gmake install</literal> to strip the executable files and\r
+ libraries as they are installed. This will save some space. If\r
+ you built with debugging support, stripping will effectively\r
+ remove the debugging support, so it should only be done if\r
+ debugging is no longer needed. <literal>install-strip</literal>\r
+ tries to do a reasonable job saving space, but it does not have\r
+ perfect knowledge of how to strip every unneeded byte from an\r
+ executable file, so if you want to save all the disk space you\r
+ possibly can, you will have to do manual work.\r
+ </para>\r
+\r
+ <para>\r
+ The standard installation provides all the header files needed for client\r
+ application development as well as for any server-side program\r
+ development (such as custom functions or data types written in C).\r
+ </para>\r
+\r
+ <formalpara>\r
+ <title>Client-only installation:</title>\r
+ <para>\r
+ If you want to install only the client applications and\r
+ interface libraries, then you can use these commands:\r
+<screen>\r
+<userinput>gmake -C src/bin install</>\r
+<userinput>gmake -C src/include install</>\r
+<userinput>gmake -C src/interfaces install</>\r
+<userinput>gmake -C doc install</>\r
+</screen>\r
+ </para>\r
+ </formalpara>\r
+ </step>\r
+ </procedure>\r
+\r
+ <formalpara>\r
+ <title>Registering <application>eventlog</> on <systemitem \r
+ class="osname">Windows</>:</title>\r
+ <para>\r
+ To register a <systemitem class="osname">Windows</> <application>eventlog</>\r
+ library with the operating system, issue this command after installation:\r
+<screen>\r
+<userinput>regsvr32 <replaceable>pgsql_library_directory</>/pgevent.dll</>\r
+</screen>\r
+ This creates registry entries used by the event viewer.\r
+ </para>\r
+ </formalpara>\r
+\r
+ <formalpara>\r
+ <title>Uninstallation:</title>\r
+ <para>\r
+ To undo the installation use the command <command>gmake\r
+ uninstall</>. However, this will not remove any created directories.\r
+ </para>\r
+ </formalpara>\r
+\r
+ <formalpara>\r
+ <title>Cleaning:</title>\r
+\r
+ <para>\r
+ After the installation you can make room by removing the built\r
+ files from the source tree with the command <command>gmake\r
+ clean</>. This will preserve the files made by the <command>configure</command>\r
+ program, so that you can rebuild everything with <command>gmake</>\r
+ later on. To reset the source tree to the state in which it was\r
+ distributed, use <command>gmake distclean</>. If you are going to\r
+ build for several platforms from the same source tree you must do\r
+ this and re-configure for each build.\r
+ </para>\r
+ </formalpara>\r
+\r
+ <para>\r
+ If you perform a build and then discover that your <command>configure</>\r
+ options were wrong, or if you change anything that <command>configure</>\r
+ investigates (for example, software upgrades), then it's a good\r
+ idea to do <command>gmake distclean</> before reconfiguring and\r
+ rebuilding. Without this, your changes in configuration choices\r
+ may not propagate everywhere they need to.\r
+ </para>\r
+ </sect1>\r
+\r
+ <sect1 id="install-post">\r
+ <title>Post-Installation Setup</title>\r
+\r
+ <sect2>\r
+ <title>Shared Libraries</title>\r
+\r
+ <indexterm>\r
+ <primary>shared library</primary>\r
+ </indexterm>\r
+\r
+ <para>\r
+ On some systems that have shared libraries (which most systems do)\r
+ you need to tell your system how to find the newly installed\r
+ shared libraries. The systems on which this is\r
+ <emphasis>not</emphasis> necessary include <systemitem\r
+ class="osname">BSD/OS</>, <systemitem class="osname">FreeBSD</>,\r
+ <systemitem class="osname">HP-UX</>, <systemitem\r
+ class="osname">IRIX</>, <systemitem class="osname">Linux</>,\r
+ <systemitem class="osname">NetBSD</>, <systemitem\r
+ class="osname">OpenBSD</>, <systemitem class="osname">Tru64\r
+ UNIX</> (formerly <systemitem class="osname">Digital UNIX</>), and\r
+ <systemitem class="osname">Solaris</>.\r
+ </para>\r
+\r
+ <para>\r
+ The method to set the shared library search path varies between\r
+ platforms, but the most widely usable method is to set the\r
+ environment variable <envar>LD_LIBRARY_PATH</> like so: In Bourne\r
+ shells (<command>sh</>, <command>ksh</>, <command>bash</>, <command>zsh</>)\r
+<programlisting>\r
+LD_LIBRARY_PATH=/usr/local/pgsql/lib\r
+export LD_LIBRARY_PATH\r
+</programlisting>\r
+ or in <command>csh</> or <command>tcsh</>\r
+<programlisting>\r
+setenv LD_LIBRARY_PATH /usr/local/pgsql/lib\r
+</programlisting>\r
+ Replace <literal>/usr/local/pgsql/lib</> with whatever you set\r
+ <option><literal>--libdir</></> to in <xref linkend="configure">.\r
+ You should put these commands into a shell start-up file such as\r
+ <filename>/etc/profile</> or <filename>~/.bash_profile</>. Some\r
+ good information about the caveats associated with this method can\r
+ be found at <ulink\r
+ url="http://www.visi.com/~barr/ldpath.html"></ulink>.\r
+ </para>\r
+\r
+ <para>\r
+ On some systems it might be preferable to set the environment\r
+ variable <envar>LD_RUN_PATH</envar> <emphasis>before</emphasis>\r
+ building.\r
+ </para>\r
+\r
+ <para>\r
+ On <systemitem class="osname">Cygwin</systemitem>, put the library\r
+ directory in the <envar>PATH</envar> or move the\r
+ <filename>.dll</filename> files into the <filename>bin</filename>\r
+ directory.\r
+ </para>\r
+\r
+ <para>\r
+ If in doubt, refer to the manual pages of your system (perhaps\r
+ <command>ld.so</command> or <command>rld</command>). If you later\r
+ on get a message like\r
+<screen>\r
+psql: error in loading shared libraries\r
+libpq.so.2.1: cannot open shared object file: No such file or directory\r
+</screen>\r
+ then this step was necessary. Simply take care of it then.\r
+ </para>\r
+\r
+ <para>\r
+ <indexterm>\r
+ <primary>ldconfig</primary>\r
+ </indexterm>\r
+ If you are on <systemitem class="osname">BSD/OS</>, <systemitem\r
+ class="osname">Linux</>, or <systemitem class="osname">SunOS 4</>\r
+ and you have root access you can run\r
+<programlisting>\r
+/sbin/ldconfig /usr/local/pgsql/lib\r
+</programlisting>\r
+ (or equivalent directory) after installation to enable the\r
+ run-time linker to find the shared libraries faster. Refer to the\r
+ manual page of <command>ldconfig</> for more information. On\r
+ <systemitem class="osname">FreeBSD</>, <systemitem\r
+ class="osname">NetBSD</>, and <systemitem\r
+ class="osname">OpenBSD</> the command is\r
+<programlisting>\r
+/sbin/ldconfig -m /usr/local/pgsql/lib\r
+</programlisting>\r
+ instead. Other systems are not known to have an equivalent\r
+ command.\r
+ </para>\r
+ </sect2>\r
+\r
+ <sect2>\r
+ <title>Environment Variables</title>\r
+\r
+ <indexterm>\r
+ <primary><envar>PATH</envar></primary>\r
+ </indexterm>\r
+\r
+ <para>\r
+ If you installed into <filename>/usr/local/pgsql</> or some other\r
+ location that is not searched for programs by default, you should\r
+ add <filename>/usr/local/pgsql/bin</> (or whatever you set\r
+ <option><literal>--bindir</></> to in <xref linkend="configure">)\r
+ into your <envar>PATH</>. Strictly speaking, this is not\r
+ necessary, but it will make the use of <productname>PostgreSQL</>\r
+ much more convenient.\r
+ </para>\r
+\r
+ <para>\r
+ To do this, add the following to your shell start-up file, such as\r
+ <filename>~/.bash_profile</> (or <filename>/etc/profile</>, if you\r
+ want it to affect every user):\r
+<programlisting>\r
+PATH=/usr/local/pgsql/bin:$PATH\r
+export PATH\r
+</programlisting>\r
+ If you are using <command>csh</> or <command>tcsh</>, then use this command:\r
+<programlisting>\r
+set path = ( /usr/local/pgsql/bin $path )\r
+</programlisting>\r
+ </para>\r
+\r
+ <para>\r
+ <indexterm>\r
+ <primary><envar>MANPATH</envar></primary>\r
+ </indexterm>\r
+ To enable your system to find the <application>man</>\r
+ documentation, you need to add lines like the following to a\r
+ shell start-up file unless you installed into a location that is\r
+ searched by default.\r
+<programlisting>\r
+MANPATH=/usr/local/pgsql/man:$MANPATH\r
+export MANPATH\r
+</programlisting>\r
+ </para>\r
+\r
+ <para>\r
+ The environment variables <envar>PGHOST</> and <envar>PGPORT</>\r
+ specify to client applications the host and port of the database\r
+ server, overriding the compiled-in defaults. If you are going to\r
+ run client applications remotely then it is convenient if every\r
+ user that plans to use the database sets <envar>PGHOST</>. This\r
+ is not required, however: the settings can be communicated via command\r
+ line options to most client programs.\r
+ </para>\r
+ </sect2>\r
+ </sect1>\r
+\r
+\r
+<![%standalone-include;[\r
+ <sect1 id="install-getting-started">\r
+ <title>Getting Started</title>\r
+\r
+ <para>\r
+ The following is a quick summary of how to get <productname>PostgreSQL</> up and\r
+ running once installed. The main documentation contains more information.\r
+ </para>\r
+\r
+ <procedure>\r
+ <step>\r
+ <para>\r
+ Create a user account for the <productname>PostgreSQL</>\r
+ server. This is the user the server will run as. For production\r
+ use you should create a separate, unprivileged account\r
+ (<quote>postgres</> is commonly used). If you do not have root\r
+ access or just want to play around, your own user account is\r
+ enough, but running the server as root is a security risk and\r
+ will not work.\r
+<screen>\r
+<userinput>adduser postgres</>\r
+</screen>\r
+ </para>\r
+ </step>\r
+\r
+ <step>\r
+ <para>\r
+ Create a database installation with the <command>initdb</>\r
+ command. To run <command>initdb</> you must be logged in to your\r
+ <productname>PostgreSQL</> server account. It will not work as\r
+ root.\r
+<screen>\r
+root# <userinput>mkdir /usr/local/pgsql/data</>\r
+root# <userinput>chown postgres /usr/local/pgsql/data</>\r
+root# <userinput>su - postgres</>\r
+postgres$ <userinput>/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data</>\r
+</screen>\r
+ </para>\r
+\r
+ <para>\r
+ The <option>-D</> option specifies the location where the data\r
+ will be stored. You can use any path you want, it does not have\r
+ to be under the installation directory. Just make sure that the\r
+ server account can write to the directory (or create it, if it\r
+ doesn't already exist) before starting <command>initdb</>, as\r
+ illustrated here.\r
+ </para>\r
+ </step>\r
+\r
+ <step>\r
+ <para>\r
+ The previous step should have told you how to start up the\r
+ database server. Do so now. The command should look something\r
+ like\r
+<programlisting>\r
+/usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data\r
+</programlisting>\r
+ This will start the server in the foreground. To put the server\r
+ in the background use something like\r
+<programlisting>\r
+nohup /usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data \\r
+ </dev/null >>server.log 2>&1 </dev/null &\r
+</programlisting>\r
+ </para>\r
+\r
+ <para>\r
+ To stop a server running in the background you can type\r
+<programlisting>\r
+kill `cat /usr/local/pgsql/data/postmaster.pid`\r
+</programlisting>\r
+ </para>\r
+\r
+ <para>\r
+ In order to allow TCP/IP connections (rather than only Unix\r
+ domain socket ones) you need to pass the <option>-i</> option to\r
+ <filename>postmaster</>.\r
+ </para>\r
+ </step>\r
+\r
+ <step>\r
+ <para>\r
+ Create a database:\r
+<screen>\r
+<userinput>createdb testdb</>\r
+</screen>\r
+ Then enter\r
+<screen>\r
+<userinput>psql testdb</>\r
+</screen>\r
+ to connect to that database. At the prompt you can enter SQL\r
+ commands and start experimenting.\r
+ </para>\r
+ </step>\r
+ </procedure>\r
+ </sect1>\r
+\r
+ <sect1 id="install-whatnow">\r
+ <title>What Now?</title>\r
+\r
+ <para>\r
+ <itemizedlist>\r
+ <listitem>\r
+ <para>\r
+ The <productname>PostgreSQL</> distribution contains a\r
+ comprehensive documentation set, which you should read sometime.\r
+ After installation, the documentation can be accessed by\r
+ pointing your browser to\r
+ <filename>/usr/local/pgsql/doc/html/index.html</>, unless you\r
+ changed the installation directories.\r
+ </para>\r
+\r
+ <para>\r
+ The first few chapters of the main documentation are the Tutorial,\r
+ which should be your first reading if you are completely new to\r
+ <acronym>SQL</> databases. If you are familiar with database\r
+ concepts then you want to proceed with part on server\r
+ administration, which contains information about how to set up\r
+ the database server, database users, and authentication.\r
+ </para>\r
+ </listitem>\r
+\r
+ <listitem>\r
+ <para>\r
+ Usually, you will want to modify your computer so that it will\r
+ automatically start the database server whenever it boots. Some\r
+ suggestions for this are in the documentation.\r
+ </para>\r
+ </listitem>\r
+\r
+ <listitem>\r
+ <para>\r
+ Run the regression tests against the installed server (using\r
+ <command>gmake installcheck</command>). If you didn't run the\r
+ tests before installation, you should definitely do it now. This\r
+ is also explained in the documentation.\r
+ </para>\r
+ </listitem>\r
+\r
+ <listitem>\r
+ <para>\r
+ By default, <productname>PostgreSQL</> is configured to run on\r
+ minimal hardware. This allows it to start up with almost any\r
+ hardware configuration. The default configuration is, however,\r
+ not designed for optimum performance. To achieve optimum\r
+ performance, several server parameters must be adjusted, the two\r
+ most common being <varname>shared_buffers</varname> and\r
+ <varname>work_mem</varname>.\r
+ Other parameters mentioned in the documentation also affect\r
+ performance.\r
+ </para>\r
+ </listitem>\r
+ </itemizedlist>\r
+ </para>\r
+ </sect1>\r
+]]>\r
+\r
+\r
+ <sect1 id="supported-platforms">\r
+ <title>Supported Platforms</title>\r
+\r
+ <para>\r
+ <productname>PostgreSQL</> has been verified by the developer\r
+ community to work on the platforms listed below. A supported\r
+ platform generally means that <productname>PostgreSQL</> builds and\r
+ installs according to these instructions and that the regression\r
+ tests pass. <quote>Build farm</quote> entries refer to builds\r
+ reported by the <ulink url="http://www.pgbuildfarm.org/">PostgreSQL\r
+ Build Farm</ulink>.\r
+ </para>\r
+\r
+ <note>\r
+ <para>\r
+ If you are having problems with the installation on a supported\r
+ platform, please write to <email>pgsql-bugs@postgresql.org</email>\r
+ or <email>pgsql-ports@postgresql.org</email>, not to the people\r
+ listed here.\r
+ </para>\r
+ </note>\r
+\r
+ <informaltable>\r
+ <tgroup cols="5">\r
+ <thead>\r
+ <row>\r
+ <entry><acronym>OS</acronym></entry>\r
+ <entry>Processor</entry>\r
+ <entry>Version</entry>\r
+ <entry>Reported</entry>\r
+ <entry>Remarks</entry>\r
+ </row>\r
+ </thead>\r
+ <tbody>\r
+ <row>\r
+ <entry><systemitem class="osname">AIX</></entry>\r
+ <entry><systemitem>PowerPC</></entry>\r
+ <entry>8.0.0</entry>\r
+ <entry>Travis P (<email>twp@castle.fastmail.fm</email>), 2004-12-12</entry>\r
+ <entry>see also <filename>doc/FAQ_AIX</filename></entry>\r
+ </row>\r
+ <row>\r
+ <entry><systemitem class="osname">AIX</></entry>\r
+ <entry><systemitem>RS6000</></entry>\r
+ <entry>8.0.0</entry>\r
+ <entry>Hans-Jürgen Schönig (<email>hs@cybertec.at</email>), 2004-12-06</entry>\r
+ <entry>see also <filename>doc/FAQ_AIX</filename></entry>\r
+ </row>\r
+ <row>\r
+ <entry><systemitem class="osname">BSD/OS</></entry>\r
+ <entry><systemitem>x86</></entry>\r
+ <entry>8.0.0</entry>\r
+ <entry>Bruce Momjian (<email>pgman@candle.pha.pa.us</email>), 2004-12-07</entry>\r
+ <entry>4.3.1</entry>\r
+ </row>\r
+ <row>\r
+ <entry><systemitem class="osname">Debian GNU/Linux</></entry>\r
+ <entry><systemitem>Alpha</></entry>\r
+ <entry>7.4</entry>\r
+ <entry>Noèl Köthe (<email>noel@debian.org</email>), 2003-10-25</entry>\r
+ <entry></entry>\r
+ </row>\r
+ <row>\r
+ <entry><systemitem class="osname">Debian GNU/Linux</></entry>\r
+ <entry><systemitem>AMD64</></entry>\r
+ <entry>8.0.0</entry>\r
+ <entry>Build farm <systemitem class="systemname">panda</systemitem>, snapshot 2004-12-06 01:20:02</entry>\r
+ <entry>sid, kernel 2.6</entry>\r
+ </row>\r
+ <row>\r
+ <entry><systemitem class="osname">Debian GNU/Linux</></entry>\r
+ <entry><systemitem>arm41</></entry>\r
+ <entry>7.4</entry>\r
+ <entry>Noèl Köthe (<email>noel@debian.org</email>), 2003-10-25</entry>\r
+ <entry></entry>\r
+ </row>\r
+ <row>\r
+ <entry><systemitem class="osname">Debian GNU/Linux</></entry>\r
+ <entry><systemitem>Itanium</></entry>\r
+ <entry>7.4</entry>\r
+ <entry>Noèl Köthe (<email>noel@debian.org</email>), 2003-10-25</entry>\r
+ <entry></entry>\r
+ </row>\r
+ <row>\r
+ <entry><systemitem class="osname">Debian GNU/Linux</></entry>\r
+ <entry><systemitem>m68k</></entry>\r
+ <entry>8.0.0</entry>\r
+ <entry>Noèl Köthe (<email>noel@debian.org</email>), 2004-12-09</entry>\r
+ <entry>sid</entry>\r
+ </row>\r
+ <row>\r
+ <entry><systemitem class="osname">Debian GNU/Linux</></entry>\r
+ <entry><systemitem>MIPS</></entry>\r
+ <entry>8.0.0</entry>\r
+ <entry>Build farm <systemitem class="systemname">lionfish</systemitem>, snapshot 2004-12-06 11:00:08</entry>\r
+ <entry>3.1 (sarge), kernel 2.4</entry>\r
+ </row>\r
+ <row>\r
+ <entry><systemitem class="osname">Debian GNU/Linux</></entry>\r
+ <entry><systemitem>PA-RISC</></entry>\r
+ <entry>8.0.0</entry>\r
+ <entry>Noèl Köthe (<email>noel@debian.org</email>), 2004-12-07</entry>\r
+ <entry></entry>\r
+ </row>\r
+ <row>\r
+ <entry><systemitem class="osname">Debian GNU/Linux</></entry>\r
+ <entry><systemitem>PowerPC</></entry>\r
+ <entry>8.0.0</entry>\r
+ <entry>Noèl Köthe (<email>noel@debian.org</email>), 2004-12-15</entry>\r
+ <entry></entry>\r
+ </row>\r
+ <row>\r
+ <entry><systemitem class="osname">Debian GNU/Linux</></entry>\r
+ <entry><systemitem>S/390</></entry>\r
+ <entry>7.4</entry>\r
+ <entry>Noèl Köthe (<email>noel@debian.org</email>), 2003-10-25</entry>\r
+ <entry></entry>\r
+ </row>\r
+ <row>\r
+ <entry><systemitem class="osname">Debian GNU/Linux</></entry>\r
+ <entry><systemitem>Sparc</></entry>\r
+ <entry>8.0.0</entry>\r
+ <entry>Noèl Köthe (<email>noel@debian.org</email>), 2004-12-09</entry>\r
+ <entry>sid, 32-bit</entry>\r
+ </row>\r
+ <row>\r
+ <entry><systemitem class="osname">Debian GNU/Linux</></entry>\r
+ <entry><systemitem>x86</></entry>\r
+ <entry>8.0.0</entry>\r
+ <entry>Peter Eisentraut (<email>peter_e@gmx.net</email>), 2004-12-06</entry>\r
+ <entry>3.1 (sarge), kernel 2.6</entry>\r
+ </row>\r
+ <row>\r
+ <entry><systemitem class="osname">Fedora</></entry>\r
+ <entry><systemitem>AMD64</></entry>\r
+ <entry>8.0.0</entry>\r
+ <entry>John Gray (<email>jgray@azuli.co.uk</email>), 2004-12-12</entry>\r
+ <entry>FC3</entry>\r
+ </row>\r
+ <row>\r
+ <entry><systemitem class="osname">Fedora</></entry>\r
+ <entry><systemitem>x86</></entry>\r
+ <entry>8.0.0</entry>\r
+ <entry>Build farm <systemitem class="systemname">dog</systemitem>, snapshot 2004-12-06 02:06:01</entry>\r
+ <entry>FC1</entry>\r
+ </row>\r
+ <row>\r
+ <entry><systemitem class="osname">FreeBSD</></entry>\r
+ <entry><systemitem>Alpha</></entry>\r
+ <entry>7.4</entry>\r
+ <entry>Peter Eisentraut (<email>peter_e@gmx.net</email>), 2003-10-25</entry>\r
+ <entry>4.8</entry>\r
+ </row>\r
+ <row>\r
+ <entry><systemitem class="osname">FreeBSD</></entry>\r
+ <entry><systemitem>x86</></entry>\r
+ <entry>8.0.0</entry>\r
+ <entry>Build farm <systemitem class="systemname">cockatoo</systemitem>, snapshot 2004-12-06 14:10:01 (4.10);\r
+ Marc Fournier (<email>scrappy@postgresql.org</email>), 2004-12-07 (5.3)</entry>\r
+ <entry></entry>\r
+ </row>\r
+ <row>\r
+ <entry><systemitem class="osname">Gentoo Linux</></entry>\r
+ <entry><systemitem>x86</></entry>\r
+ <entry>8.0.0</entry>\r
+ <entry>Paul Bort (<email>pbort@tmwsystems.com</email>), 2004-12-07</entry>\r
+ <entry></entry>\r
+ </row>\r
+ <row>\r
+ <entry><systemitem class="osname">HP-UX</></entry>\r
+ <entry><systemitem>PA-RISC</></entry>\r
+ <entry>7.4</entry>\r
+ <entry>\r
+ Tom Lane (<email>tgl@sss.pgh.pa.us</email>), 2003-10-31 (10.20);\r
+ Peter Eisentraut (<email>peter_e@gmx.net</email>), 2003-11-04 (11.00)\r
+ </entry>\r
+ <entry><command>gcc</> and <command>cc</>; see also <filename>doc/FAQ_HPUX</filename></entry>\r
+ </row>\r
+ <row>\r
+ <entry><systemitem class="osname">IRIX</></entry>\r
+ <entry><systemitem>MIPS</></entry>\r
+ <entry>7.4</entry>\r
+ <entry>Robert E. Bruccoleri (<email>bruc@stone.congenomics.com</email>), 2003-11-12</entry>\r
+ <entry>6.5.20, <command>cc</command> only</entry>\r
+ </row>\r
+ <row>\r
+ <entry><systemitem class="osname">Mac OS X</></entry>\r
+ <entry><systemitem>PowerPC</></entry>\r
+ <entry>8.0.0</entry>\r
+ <entry>Andrew Rawnsley (<email>ronz@ravensfield.com</email>), 2004-12-07</entry>\r
+ <entry>10.3.5</entry>\r
+ </row>\r
+ <row>\r
+ <entry><systemitem class="osname">Mandrakelinux</></entry>\r
+ <entry><systemitem>x86</></entry>\r
+ <entry>8.0.0</entry>\r
+ <entry>Build farm <systemitem class="systemname">shrew</systemitem>, snapshot 2004-12-06 02:02:01</entry>\r
+ <entry>10.0</entry>\r
+ </row>\r
+ <row>\r
+ <entry><systemitem class="osname">NetBSD</></entry>\r
+ <entry><systemitem>arm32</></entry>\r
+ <entry>7.4</entry>\r
+ <entry>Patrick Welche (<email>prlw1@newn.cam.ac.uk</email>), 2003-11-12</entry>\r
+ <entry>1.6ZE/acorn32</entry>\r
+ </row>\r
+ <row>\r
+ <entry><systemitem class="osname">NetBSD</></entry>\r
+ <entry><systemitem>Sparc</></entry>\r
+ <entry>7.4.1</entry>\r
+ <entry>Peter Eisentraut (<email>peter_e@gmx.net</email>), 2003-11-26</entry>\r
+ <entry>1.6.1, 32-bit</entry>\r
+ </row>\r
+ <row>\r
+ <entry><systemitem class="osname">NetBSD</></entry>\r
+ <entry><systemitem>x86</></entry>\r
+ <entry>8.0.0</entry>\r
+ <entry>Build farm <systemitem class="systemname">canary</systemitem>, snapshot 2004-12-06 03:30:00</entry>\r
+ <entry>1.6</entry>\r
+ </row>\r
+ <row>\r
+ <entry><systemitem class="osname">OpenBSD</></entry>\r
+ <entry><systemitem>Sparc</></entry>\r
+ <entry>7.4</entry>\r
+ <entry>Peter Eisentraut (<email>peter_e@gmx.net</email>), 2003-11-01</entry>\r
+ <entry>3.4</entry>\r
+ </row>\r
+ <row>\r
+ <entry><systemitem class="osname">OpenBSD</></entry>\r
+ <entry><systemitem>x86</></entry>\r
+ <entry>8.0.0</entry>\r
+ <entry>Build farm <systemitem class="systemname">emu</systemitem>, snapshot 2004-12-06 11:35:03</entry>\r
+ <entry>3.6</entry>\r
+ </row>\r
+ <row>\r
+ <entry><systemitem class="osname">Red Hat Linux</></entry>\r
+ <entry><systemitem>AMD64</></entry>\r
+ <entry>8.0.0</entry>\r
+ <entry>Tom Lane (<email>tgl@sss.pgh.pa.us</email>), 2004-12-07</entry>\r
+ <entry>RHEL 3AS</entry>\r
+ </row>\r
+ <row>\r
+ <entry><systemitem class="osname">Red Hat Linux</></entry>\r
+ <entry><systemitem>IA64</></entry>\r
+ <entry>8.0.0</entry>\r
+ <entry>Tom Lane (<email>tgl@sss.pgh.pa.us</email>), 2004-12-07</entry>\r
+ <entry>RHEL 3AS</entry>\r
+ </row>\r
+ <row>\r
+ <entry><systemitem class="osname">Red Hat Linux</></entry>\r
+ <entry><systemitem>PowerPC</></entry>\r
+ <entry>8.0.0</entry>\r
+ <entry>Tom Lane (<email>tgl@sss.pgh.pa.us</email>), 2004-12-07</entry>\r
+ <entry>RHEL 3AS</entry>\r
+ </row>\r
+ <row>\r
+ <entry><systemitem class="osname">Red Hat Linux</></entry>\r
+ <entry><systemitem>PowerPC 64</></entry>\r
+ <entry>8.0.0</entry>\r
+ <entry>Tom Lane (<email>tgl@sss.pgh.pa.us</email>), 2004-12-07</entry>\r
+ <entry>RHEL 3AS</entry>\r
+ </row>\r
+ <row>\r
+ <entry><systemitem class="osname">Red Hat Linux</></entry>\r
+ <entry><systemitem>S/390</></entry>\r
+ <entry>8.0.0</entry>\r
+ <entry>Tom Lane (<email>tgl@sss.pgh.pa.us</email>), 2004-12-07</entry>\r
+ <entry>RHEL 3AS</entry>\r
+ </row>\r
+ <row>\r
+ <entry><systemitem class="osname">Red Hat Linux</></entry>\r
+ <entry><systemitem>S/390x</></entry>\r
+ <entry>8.0.0</entry>\r
+ <entry>Tom Lane (<email>tgl@sss.pgh.pa.us</email>), 2004-12-07</entry>\r
+ <entry>RHEL 3AS</entry>\r
+ </row>\r
+ <row>\r
+ <entry><systemitem class="osname">Red Hat Linux</></entry>\r
+ <entry><systemitem>x86</></entry>\r
+ <entry>8.0.0</entry>\r
+ <entry>Tom Lane (<email>tgl@sss.pgh.pa.us</email>), 2004-12-07</entry>\r
+ <entry>RHEL 3AS</entry>\r
+ </row>\r
+ <row>\r
+ <entry><systemitem class="osname">Solaris</></entry>\r
+ <entry><systemitem>Sparc</></entry>\r
+ <entry>8.0.0</entry>\r
+ <entry>Kenneth Marshall (<email>ktm@is.rice.edu</email>), 2004-12-07</entry>\r
+ <entry>Solaris 8; see also <filename>doc/FAQ_Solaris</filename></entry>\r
+ </row>\r
+ <row>\r
+ <entry><systemitem class="osname">Solaris</></entry>\r
+ <entry><systemitem>x86</></entry>\r
+ <entry>8.0.0</entry>\r
+ <entry>Build farm <systemitem class="systemname">kudu</systemitem>, snapshot 2004-12-10 02:30:04 (<command>cc</command>);\r
+ <systemitem class="systemname">dragonfly</systemitem>, snapshot 2004-12-09 04:30:00 (<command>gcc</command>)</entry>\r
+ <entry>Solaris 9; see also <filename>doc/FAQ_Solaris</filename></entry>\r
+ </row>\r
+ <row>\r
+ <entry><systemitem class="osname">Tru64 UNIX</></entry>\r
+ <entry><systemitem>Alpha</></entry>\r
+ <entry>7.4</entry>\r
+ <entry>Peter Eisentraut (<email>peter_e@gmx.net</email>), 2003-10-25 (5.1b);\r
+ Alessio Bragadini (<email>alessio@albourne.com</email>), 2003-10-29 (4.0g)</entry>\r
+ <entry></entry>\r
+ </row>\r
+ <row>\r
+ <entry><systemitem class="osname">UnixWare</></entry>\r
+ <entry><systemitem>x86</></entry>\r
+ <entry>8.0.0</entry>\r
+ <entry>Peter Eisentraut (<email>peter_e@gmx.net</email>), 2004-12-14</entry>\r
+ <entry><command>cc</command>, 7.1.4; see also <filename>doc/FAQ_SCO</filename></entry>\r
+ </row>\r
+ <row>\r
+ <entry><systemitem class="osname">Windows</></entry>\r
+ <entry><systemitem>x86</></entry>\r
+ <entry>8.0.0</entry>\r
+ <entry>Dave Page (<email>dpage@vale-housing.co.uk</email>), 2004-12-07</entry>\r
+ <entry>see <filename>doc/FAQ_MINGW</filename></entry>\r
+ </row>\r
+ <row>\r
+ <entry><systemitem class="osname">Windows with <application>Cygwin</application></></entry>\r
+ <entry><systemitem>x86</></entry>\r
+ <entry>8.0.0</entry>\r
+ <entry>Build farm <systemitem class="systemname">gibbon</systemitem>, snapshot 2004-12-11 01:33:01</entry>\r
+ <entry>see <filename>doc/FAQ_CYGWIN</filename></entry>\r
+ </row>\r
+ </tbody>\r
+ </tgroup>\r
+ </informaltable>\r
+\r
+ <formalpara>\r
+ <title>Unsupported Platforms:</title>\r
+ <para>\r
+ The following platforms are either known not to work, or they used\r
+ to work in a previous release and we did not receive explicit\r
+ confirmation of a successful test with version &majorversion; at\r
+ the time this list was compiled. We include these here to let you\r
+ know that these platforms <emphasis>could</> be supported if given\r
+ some attention.\r
+ </para>\r
+ </formalpara>\r
+\r
+ <informaltable>\r
+ <tgroup cols="5">\r
+ <thead>\r
+ <row>\r
+ <entry><acronym>OS</acronym></entry>\r
+ <entry>Processor</entry>\r
+ <entry>Version</entry>\r
+ <entry>Reported</entry>\r
+ <entry>Remarks</entry>\r
+ </row>\r
+ </thead>\r
+\r
+ <tbody>\r
+ <row>\r
+ <entry><systemitem class="osname">BeOS</></entry>\r
+ <entry><systemitem>x86</></entry>\r
+ <entry>7.2</entry>\r
+ <entry>2001-11-29,\r
+ Cyril Velter (<email>cyril.velter@libertysurf.fr</email>)</entry>\r
+ <entry>needs updates to semaphore code</entry>\r
+ </row>\r
+ <row>\r
+ <entry><systemitem class="osname">Linux</></entry>\r
+ <entry><systemitem>PlayStation 2</></entry>\r
+ <entry>7.4</entry>\r
+ <entry>2003-11-02,\r
+ Peter Eisentraut (<email>peter_e@gmx.net</email>)</entry>\r
+ <entry>\r
+ needs new <filename>config.guess</filename>,\r
+ <option>--disable-spinlocks</option>\r
+ </entry>\r
+ </row>\r
+ <row>\r
+ <entry><systemitem class="osname">NetBSD</></entry>\r
+ <entry><systemitem>Alpha</></entry>\r
+ <entry>7.2</entry>\r
+ <entry>2001-11-20,\r
+ Thomas Thai (<email>tom@minnesota.com</email>)</entry>\r
+ <entry>1.5W</entry>\r
+ </row>\r
+ <row>\r
+ <entry><systemitem class="osname">NetBSD</></entry>\r
+ <entry><systemitem>MIPS</></entry>\r
+ <entry>7.2.1</entry>\r
+ <entry>2002-06-13,\r
+ Warwick Hunter (<email>whunter@agile.tv</email>)</entry>\r
+ <entry>1.5.3</entry>\r
+ </row>\r
+ <row>\r
+ <entry><systemitem class="osname">NetBSD</></entry>\r
+ <entry><systemitem>PowerPC</></entry>\r
+ <entry>7.2</entry>\r
+ <entry>2001-11-28,\r
+ Bill Studenmund (<email>wrstuden@netbsd.org</email>)</entry>\r
+ <entry>1.5</entry>\r
+ </row>\r
+ <row>\r
+ <entry><systemitem class="osname">NetBSD</></entry>\r
+ <entry><systemitem>VAX</></entry>\r
+ <entry>7.1</entry>\r
+ <entry>2001-03-30,\r
+ Tom I. Helbekkmo (<email>tih@kpnQwest.no</email>)</entry>\r
+ <entry>1.5</entry>\r
+ </row>\r
+ <row>\r
+ <entry><systemitem class="osname">QNX 4 RTOS</></entry>\r
+ <entry><systemitem>x86</></entry>\r
+ <entry>7.2</entry>\r
+ <entry>2001-12-10,\r
+ Bernd Tegge (<email>tegge@repas-aeg.de</email>)\r
+ </entry>\r
+ <entry>needs updates to semaphore code;\r
+ see also <filename>doc/FAQ_QNX4</filename></entry>\r
+ </row>\r
+ <row>\r
+ <entry><systemitem class="osname">QNX RTOS v6</></entry>\r
+ <entry><systemitem>x86</></entry>\r
+ <entry>7.2</entry>\r
+ <entry>2001-11-20, Igor Kovalenko (<email>Igor.Kovalenko@motorola.com</email>)</entry>\r
+ <entry>patches available in archives, but too late for 7.2</entry>\r
+ </row>\r
+ <row>\r
+ <entry><systemitem class="osname">SCO OpenServer</></entry>\r
+ <entry><systemitem>x86</></entry>\r
+ <entry>7.3.1</entry>\r
+ <entry>2002-12-11, \r
+ Shibashish Satpathy (<email>shib@postmark.net</>)</entry>\r
+ <entry>5.0.4, <command>gcc</>; see also <filename>doc/FAQ_SCO</filename></entry>\r
+ </row>\r
+ <row>\r
+ <entry><systemitem class="osname">SunOS 4</></entry>\r
+ <entry><systemitem>Sparc</></entry>\r
+ <entry>7.2</entry>\r
+ <entry>2001-12-04, Tatsuo Ishii (<email>t-ishii@sra.co.jp</email>)</entry>\r
+ <entry></entry>\r
+ </row>\r
+ </tbody>\r
+ </tgroup>\r
+ </informaltable>\r
+ </sect1>\r
+\r
+</chapter>\r
+\r
+<!-- Keep this comment at the end of the file\r
+Local variables:\r
+mode:sgml\r
+sgml-omittag:nil\r
+sgml-shorttag:t\r
+sgml-minimize-attributes:nil\r
+sgml-always-quote-attributes:t\r
+sgml-indent-step:1\r
+sgml-indent-tabs-mode:nil\r
+sgml-indent-data:t\r
+sgml-parent-document:nil\r
+sgml-default-dtd-file:"./reference.ced"\r
+sgml-exposed-tags:nil\r
+sgml-local-catalogs:("/usr/share/sgml/catalog")\r
+sgml-local-ecat-files:nil\r
+End:\r
+-->\r