In general, a modern Unix-compatible platform should be able to run
PostgreSQL.
The platforms that had received specific testing at the
time of release are listed in Section 14.7
below. In the doc subdirectory of the distribution
there are several platform-specific FAQ documents you
might wish to consult if you are having trouble.
The following software packages are required for building
PostgreSQL:
GNU make is required; other
make programs will not work.
GNU make is often installed under
the name gmake; this document will always
refer to it by that name. (On some systems
GNU make is the default tool with the name
make.) To test for GNU
make enter
gmake --version
It is recommended to use version 3.76.1 or later.
You need an ISO/ANSI C compiler. Recent
versions of GCC are recommendable, but
PostgreSQL is known to build with a wide variety
of compilers from different vendors.
tar is required to unpack the source
distribution in the first place, in addition to either
gzip or bzip2.
The GNU Readline library (for
simple line editing and command history retrieval) is
used by default. If you don't want to use it then you must specify
the --without-readline option for
configure. As an alternative, you can often use the
BSD-licensed libedit library, originally
developed on NetBSD. The
libedit library is
GNU Readline-compatible and is used if
libreadline is not found, or if
--with-libedit-preferred is used as an
option to configure. If you are using a package-based
Linux distribution, be aware that you need both the
readline and readline-devel packages, if
those are separate in your distribution.
The zlib compression library will be
used by default. If you don't want to use it then you must
specify the --without-zlib option for
configure. Using this option disables
support for compressed archives in pg_dump and
pg_restore.
Additional software is needed to build
PostgreSQL on Windows.
You can build PostgreSQL for
NT-based versions of Windows
(like Windows XP and 2003) using MinGW;
see doc/FAQ_MINGW for details. You can also build
PostgreSQL using
Cygwin; see doc/FAQ_CYGWIN.
A Cygwin-based build will work on older
versions of Windows, but if you have a choice,
we recommend the MinGW approach.
While these are the only tool sets recommended for a complete build,
it is possible to build just the C client library
(libpq) and the interactive terminal
(psql) using other Windows
tool sets. For details of that see
Chapter 15.
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.
To build the server programming language
PL/Perl you need a full
Perl installation, including the
libperl library and the header files.
Since PL/Perl will be a shared
library, the libperl library must be a shared library
also on most platforms. This appears to be the default in
recent Perl versions, but it was not
in earlier versions, and in any case it is the choice of whomever
installed Perl at your site.
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:
*** 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.
(If you don't follow the on-screen output you will merely notice
that the PL/Perl library object,
plperl.so or similar, will not be
installed.) If you see this, you will have to rebuild and
install Perl manually to be able to
build PL/Perl. During the
configuration process for Perl,
request a shared library.
To build the PL/Python server programming
language, you need a Python
installation with the header files and the distutils module.
The distutils module is included by default with
Python 1.6 and later; users of
earlier versions of Python will need
to install it.
Since PL/Python will be a shared
library, the libpython library must be a shared library
also on most platforms. This is not the case in a default
Python installation. If after
building and installing you have a file called
plpython.so (possibly a different
extension), then everything went well. Otherwise you should
have seen a notice like this flying by:
*** 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.
That means you have to rebuild (part of) your
Python installation to supply this
shared library.
If you have problems, run Python 2.3 or later's
configure using the --enable-shared flag. On some
operating systems you don't have to build a shared library, but
you will have to convince the PostgreSQL build
system of this. Consult the Makefile in
the src/pl/plpython directory for details.
If you want to build the PL/Tcl
procedural language, you of course need a Tcl installation.
To enable Native Language Support (NLS), that
is, the ability to display a program's messages in a language
other than English, you need an implementation of the
Gettext API. Some operating
systems have this built-in (e.g., Linux, NetBSD,
Solaris), for other systems you
can download an add-on package from http://developer.postgresql.org/~petere/bsd-gettext/.
If you are using the Gettext implementation in
the GNU C library then you will additionally
need the GNU Gettext package for some
utility programs. For any of the other implementations you will
not need it.
Kerberos, OpenSSL,
OpenLDAP, and/or
PAM, if you want to support authentication or
encryption using these services.
If you are building from a CVS tree instead of
using a released source package, or if you want to do development,
you also need the following packages:
GNU Flex and 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 Flex 2.5.4 or later and
Bison 1.875 or later. Other yacc
programs can sometimes be used, but doing so requires extra
effort and is not recommended. Other lex
programs will definitely not work.
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 df command to check free disk
space.