mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-12-21 08:29:39 +08:00
814 lines
42 KiB
Plaintext
814 lines
42 KiB
Plaintext
|
|
PostgreSQL Installation Instructions
|
|
|
|
This document describes the installation of PostgreSQL from the source
|
|
code distribution.
|
|
_________________________________________________________________
|
|
|
|
Short Version
|
|
|
|
./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
|
|
|
|
The long version is the rest of this document.
|
|
_________________________________________________________________
|
|
|
|
Requirements
|
|
|
|
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 the section called Supported Platforms
|
|
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.
|
|
* gzip is needed to unpack the distribution in the first place. If
|
|
you are reading this, you probably already got past that hurdle.
|
|
* The GNU 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 "--without-readline" option for
|
|
"configure". (On NetBSD, the "libedit" library is
|
|
Readline-compatible and is used if "libreadline" is not found.)
|
|
* To build on Windows NT or Windows 2000 you need the Cygwin and
|
|
cygipc packages. See the file "doc/FAQ_MSWIN" for details.
|
|
|
|
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 general 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, including the header files. 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.
|
|
The catch is that the Python distribution or the Python
|
|
maintainers do not provide any direct way to do this. The closest
|
|
thing we can offer you is the information in Python FAQ 3.30. On
|
|
some operating systems you don't really have to build a shared
|
|
library, but then 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 Tcl or Tk components (clients and the PL/Tcl
|
|
language) you of course need a Tcl installation.
|
|
* To build the JDBC driver, you need Ant 1.5 or higher and a JDK.
|
|
Ant is a special tool for building Java-based packages. It can be
|
|
downloaded from the Ant web site.
|
|
If you have several Java compilers installed, it depends on the
|
|
Ant configuration which one gets used. Precompiled Ant
|
|
distributions are typically set up to read a file ".antrc" in the
|
|
current user's home directory for configuration. For example, to
|
|
use a different JDK than the default, this may work:
|
|
JAVA_HOME=/usr/local/sun-jdk1.3
|
|
JAVACMD=$JAVA_HOME/bin/java
|
|
|
|
Note: Do not try to build the driver by calling "ant" or even
|
|
"javac" directly. This will not work. Run "gmake" normally as
|
|
described below.
|
|
* 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 here:
|
|
http://www.postgresql.org/~petere/gettext.html. 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, or PAM, if you want to support authentication
|
|
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:
|
|
|
|
* 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.
|
|
|
|
If you need to get a GNU package, you can find it at your local GNU
|
|
mirror site (see http://www.gnu.org/order/ftp.html for a list) or at
|
|
ftp://ftp.gnu.org/gnu/.
|
|
|
|
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 for disk space.
|
|
_________________________________________________________________
|
|
|
|
If You Are Upgrading
|
|
|
|
The internal data storage format changes with new releases of
|
|
PostgreSQL. Therefore, if you are upgrading an existing installation
|
|
that does not have a version number "7.4.x", you must back up and
|
|
restore your data as shown here. These instructions assume that your
|
|
existing installation is under the "/usr/local/pgsql" directory, and
|
|
that the data area is in "/usr/local/pgsql/data". Substitute your
|
|
paths appropriately.
|
|
1. 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 "/usr/local/pgsql/data/pg_hba.conf"
|
|
(or equivalent) to disallow access from everyone except you.
|
|
2. To back up your database installation, type:
|
|
pg_dumpall > outputfile
|
|
If you need to preserve OIDs (such as when using them as foreign
|
|
keys), then use the "-o" option when running "pg_dumpall".
|
|
"pg_dumpall" does not save large objects. Check the documentation
|
|
if you need to do this.
|
|
To make the backup, you can use the "pg_dumpall" command from the
|
|
version you are currently running. For best results, however, try
|
|
to use the "pg_dumpall" command from PostgreSQL 7.4beta5, 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.
|
|
3. 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:
|
|
kill -INT `cat /usr/local/pgsql/data/postmaster.pid`
|
|
Versions prior to 7.0 do not have this "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 "ps ax | grep
|
|
postmaster", and supply it to the "kill" command.
|
|
On systems that have PostgreSQL started at boot time, there is
|
|
probably a start-up file that will accomplish the same thing. For
|
|
example, on a Red Hat Linux system one might find that
|
|
/etc/rc.d/init.d/postgresql stop
|
|
works. Another possibility is "pg_ctl stop".
|
|
4. 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:
|
|
mv /usr/local/pgsql /usr/local/pgsql.old
|
|
|
|
After you have installed PostgreSQL 7.4beta5, 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).
|
|
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
|
|
/usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data
|
|
|
|
Finally, restore your data with
|
|
/usr/local/pgsql/bin/psql -d template1 -f outputfile
|
|
|
|
using the *new* psql.
|
|
|
|
These topics are discussed at length in the documentation, which you
|
|
are encouraged to read in any case.
|
|
_________________________________________________________________
|
|
|
|
Installation Procedure
|
|
|
|
1. Configuration
|
|
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 "configure" script. For a default
|
|
installation simply enter
|
|
./configure
|
|
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 "configure"
|
|
in a directory outside the source tree if you want to keep the
|
|
build directory separate.)
|
|
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 "/usr/local/pgsql"
|
|
by default.
|
|
You can customize the build and installation process by supplying
|
|
one or more of the following command line options to "configure":
|
|
|
|
--prefix=PREFIX
|
|
Install all files under the directory "PREFIX" instead of
|
|
"/usr/local/pgsql". The actual files will be installed
|
|
into various subdirectories; no files will ever be
|
|
installed directly into the "PREFIX" directory.
|
|
|
|
If you have special needs, you can also customize the
|
|
individual subdirectories with the following options.
|
|
|
|
--exec-prefix=EXEC-PREFIX
|
|
You can install architecture-dependent files under a
|
|
different prefix, "EXEC-PREFIX", than what "PREFIX" was
|
|
set to. This can be useful to share
|
|
architecture-independent files between hosts. If you omit
|
|
this, then "EXEC-PREFIX" is set equal to "PREFIX" and
|
|
both architecture-dependent and independent files will be
|
|
installed under the same tree, which is probably what you
|
|
want.
|
|
|
|
--bindir=DIRECTORY
|
|
Specifies the directory for executable programs. The
|
|
default is "EXEC-PREFIX/bin", which normally means
|
|
"/usr/local/pgsql/bin".
|
|
|
|
--datadir=DIRECTORY
|
|
Sets the directory for read-only data files used by the
|
|
installed programs. The default is "PREFIX/share". Note
|
|
that this has nothing to do with where your database
|
|
files will be placed.
|
|
|
|
--sysconfdir=DIRECTORY
|
|
The directory for various configuration files,
|
|
"PREFIX/etc" by default.
|
|
|
|
--libdir=DIRECTORY
|
|
The location to install libraries and dynamically
|
|
loadable modules. The default is "EXEC-PREFIX/lib".
|
|
|
|
--includedir=DIRECTORY
|
|
The directory for installing C and C++ header files. The
|
|
default is "PREFIX/include".
|
|
|
|
--docdir=DIRECTORY
|
|
Documentation files, except "man" pages, will be
|
|
installed into this directory. The default is
|
|
"PREFIX/doc".
|
|
|
|
--mandir=DIRECTORY
|
|
The man pages that come with PostgreSQL will be installed
|
|
under this directory, in their respective "manx"
|
|
subdirectories. The default is "PREFIX/man".
|
|
|
|
Note: Care has been taken to make it possible to install PostgreSQL
|
|
into shared installation locations (such as "/usr/local/include")
|
|
without interfering with the namespace of the rest of the system.
|
|
First, the string "/postgresql" is automatically appended to
|
|
datadir, sysconfdir, and docdir, unless the fully expanded
|
|
directory name already contains the string "postgres" or "pgsql".
|
|
For example, if you choose "/usr/local" as prefix, the
|
|
documentation will be installed in "/usr/local/doc/postgresql", but
|
|
if the prefix is "/opt/postgres", then it will be in
|
|
"/opt/postgres/doc". The public C header files of the client
|
|
interfaces are installed into includedir and are namespace-clean.
|
|
The internal header files and the server header files are installed
|
|
into private directories under includedir. 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 libdir for dynamically loadable modules.
|
|
|
|
--with-includes=DIRECTORIES
|
|
"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
|
|
Readline) installed in a non-standard location, you have
|
|
to use this option and probably also the corresponding
|
|
"--with-libraries" option.
|
|
|
|
Example:
|
|
--with-includes=/opt/gnu/include:/usr/sup/include.
|
|
|
|
--with-libraries=DIRECTORIES
|
|
"DIRECTORIES" is a colon-separated list of directories to
|
|
search for libraries. You will probably have to use this
|
|
option (and the corresponding "--with-includes" option)
|
|
if you have packages installed in non-standard locations.
|
|
|
|
Example: --with-libraries=/opt/gnu/lib:/usr/sup/lib.
|
|
|
|
--enable-nls[=LANGUAGES]
|
|
Enables Native Language Support (NLS), that is, the
|
|
ability to display a program's messages in a language
|
|
other than English. "LANGUAGES" is a space separated list
|
|
of codes of the languages that you want supported, for
|
|
example --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.
|
|
|
|
To use this option, you will need an implementation of
|
|
the Gettext API; see above.
|
|
|
|
--with-pgport=NUMBER
|
|
Set "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 PostgreSQL servers on the same machine.
|
|
|
|
--with-perl
|
|
Build the PL/Perl server-side language.
|
|
|
|
--with-python
|
|
Build the PL/Python server-side language.
|
|
|
|
--with-tcl
|
|
Build components that require Tcl/Tk, which are libpgtcl,
|
|
pgtclsh, pgtksh, and PL/Tcl. But see below about
|
|
"--without-tk".
|
|
|
|
--without-tk
|
|
If you specify "--with-tcl" and this option, then the
|
|
program that requires Tk (pgtksh) will be excluded.
|
|
|
|
--with-tclconfig=DIRECTORY, --with-tkconfig=DIRECTORY
|
|
Tcl/Tk installs the files "tclConfig.sh" and
|
|
"tkConfig.sh", which contain configuration information
|
|
needed to build modules interfacing to Tcl or Tk. These
|
|
files are normally found automatically at their
|
|
well-known locations, but if you want to use a different
|
|
version of Tcl or Tk you can specify the directory in
|
|
which to find them.
|
|
|
|
--with-java
|
|
Build the JDBC driver and associated Java packages.
|
|
|
|
--with-krb4[=DIRECTORY], --with-krb5[=DIRECTORY]
|
|
Build with support for Kerberos authentication. You can
|
|
use either Kerberos version 4 or 5, but not both. The
|
|
"DIRECTORY" argument specifies the root directory of the
|
|
Kerberos installation; "/usr/athena" is assumed as
|
|
default. If the relevant header files and libraries are
|
|
not under a common parent directory, then you must use
|
|
the "--with-includes" and "--with-libraries" options in
|
|
addition to this option. If, on the other hand, the
|
|
required files are in a location that is searched by
|
|
default (e.g., "/usr/lib"), then you can leave off the
|
|
argument.
|
|
|
|
"configure" will check for the required header files and
|
|
libraries to make sure that your Kerberos installation is
|
|
sufficient before proceeding.
|
|
|
|
--with-krb-srvnam=NAME
|
|
The name of the Kerberos service principal. postgres is
|
|
the default. There's probably no reason to change this.
|
|
|
|
--with-openssl[=DIRECTORY]
|
|
Build with support for SSL (encrypted) connections. This
|
|
requires the OpenSSL package to be installed. The
|
|
"DIRECTORY" argument specifies the root directory of the
|
|
OpenSSL installation; the default is "/usr/local/ssl".
|
|
|
|
"configure" will check for the required header files and
|
|
libraries to make sure that your OpenSSL installation is
|
|
sufficient before proceeding.
|
|
|
|
--with-pam
|
|
Build with PAM (Pluggable Authentication Modules)
|
|
support.
|
|
|
|
--without-readline
|
|
Prevents the use of the Readline library. This disables
|
|
command-line editing and history in psql, so it is not
|
|
recommended.
|
|
|
|
--with-rendezvous
|
|
Build with Rendezvous support.
|
|
|
|
--disable-spinlocks
|
|
Allows source builds to succeed without CPU spinlock
|
|
support. Lack of spinlock support will produce poor
|
|
performance. This option is to be used only by platforms
|
|
lacking spinlock support.
|
|
|
|
--enable-thread-safety
|
|
Allow separate libpq and ecpg threads to safely control
|
|
their private connection handles.
|
|
|
|
--without-zlib
|
|
Prevents the use of the Zlib library. This disables
|
|
compression support in pg_dump. This option is only
|
|
intended for those rare systems where this library is not
|
|
available.
|
|
|
|
--enable-debug
|
|
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.
|
|
|
|
--enable-cassert
|
|
Enables assertion checks in the server, which test for
|
|
many "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.
|
|
|
|
--enable-depend
|
|
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.
|
|
|
|
If you prefer a C compiler different from the one "configure"
|
|
picks then you can set the environment variable CC to the program
|
|
of your choice. By default, "configure" will pick "gcc" unless
|
|
this is inappropriate for the platform. Similarly, you can
|
|
override the default compiler flags with the CFLAGS variable.
|
|
You can specify environment variables on the "configure" command
|
|
line, for example:
|
|
./configure CC=/opt/bin/gcc CFLAGS='-O2 -pipe'
|
|
2. Build
|
|
To start the build, type
|
|
gmake
|
|
(Remember to use GNU make.) The build may take anywhere from 5
|
|
minutes to half an hour depending on your hardware. The last line
|
|
displayed should be
|
|
All of PostgreSQL is successfully made. Ready to install.
|
|
3. Regression Tests
|
|
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 PostgreSQL runs on your
|
|
machine in the way the developers expected it to. Type
|
|
gmake check
|
|
(This won't work as root; do it as an unprivileged user.) It is
|
|
possible that some tests fail, due to differences in error message
|
|
wording or floating point results. The file
|
|
"src/test/regress/README" and the documentation contain detailed
|
|
information about interpreting the test results. You can repeat
|
|
this test at any later time by issuing the same command.
|
|
4. Installing The Files
|
|
|
|
Note: 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 the section called If You Are Upgrading above.
|
|
To install PostgreSQL enter
|
|
gmake install
|
|
This will install files into the directories that were specified
|
|
in step 1. 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.
|
|
You can use gmake install-strip instead of gmake install 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.
|
|
install-strip 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.
|
|
The standard installation provides only the header files needed
|
|
for client application development. If you plan to do any
|
|
server-side program development (such as custom functions or data
|
|
types written in C), then you may want to install the entire
|
|
PostgreSQL include tree into your target include directory. To do
|
|
that, enter
|
|
gmake install-all-headers
|
|
This adds a megabyte or two to the installation footprint, and is
|
|
only useful if you don't plan to keep the whole source tree around
|
|
for reference. (If you do, you can just use the source's include
|
|
directory when building server-side software.)
|
|
Client-only installation: If you want to install only the client
|
|
applications and interface libraries, then you can use these
|
|
commands:
|
|
gmake -C src/bin install
|
|
gmake -C src/include install
|
|
gmake -C src/interfaces install
|
|
gmake -C doc install
|
|
|
|
Uninstallation: To undo the installation use the command "gmake
|
|
uninstall". However, this will not remove any created directories.
|
|
|
|
Cleaning: After the installation you can make room by removing the
|
|
built files from the source tree with the command "gmake clean". This
|
|
will preserve the files made by the "configure" program, so that you
|
|
can rebuild everything with "gmake" later on. To reset the source tree
|
|
to the state in which it was distributed, use "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.
|
|
|
|
If you perform a build and then discover that your "configure" options
|
|
were wrong, or if you change anything that "configure" investigates
|
|
(for example, software upgrades), then it's a good idea to do "gmake
|
|
distclean" before reconfiguring and rebuilding. Without this, your
|
|
changes in configuration choices may not propagate everywhere they
|
|
need to.
|
|
_________________________________________________________________
|
|
|
|
Post-Installation Setup
|
|
|
|
Tuning
|
|
|
|
By default, PostgreSQL is configured to run on minimal hardware. This
|
|
allows it to start up with almost any hardware configuration. However,
|
|
the default configuration is not designed for optimum performance. To
|
|
achieve optimum performance, several server variables must be
|
|
adjusted, the two most common being shared_buffers and sort_mem
|
|
mentioned in the documentation . Other parameters in the documentation
|
|
also affect performance.
|
|
_________________________________________________________________
|
|
|
|
Shared Libraries
|
|
|
|
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 *not* necessary include
|
|
BSD/OS, FreeBSD, HP-UX, IRIX, Linux, NetBSD, OpenBSD, Tru64 UNIX
|
|
(formerly Digital UNIX), and Solaris.
|
|
|
|
The method to set the shared library search path varies between
|
|
platforms, but the most widely usable method is to set the environment
|
|
variable LD_LIBRARY_PATH like so: In Bourne shells ("sh", "ksh",
|
|
"bash", "zsh")
|
|
LD_LIBRARY_PATH=/usr/local/pgsql/lib
|
|
export LD_LIBRARY_PATH
|
|
|
|
or in "csh" or "tcsh"
|
|
setenv LD_LIBRARY_PATH /usr/local/pgsql/lib
|
|
|
|
Replace /usr/local/pgsql/lib with whatever you set "--libdir" to in
|
|
step 1. You should put these commands into a shell start-up file such
|
|
as "/etc/profile" or "~/.bash_profile". Some good information about
|
|
the caveats associated with this method can be found at
|
|
http://www.visi.com/~barr/ldpath.html.
|
|
|
|
On some systems it might be preferable to set the environment variable
|
|
LD_RUN_PATH *before* building.
|
|
|
|
On Cygwin, put the library directory in the PATH or move the ".dll"
|
|
files into the "bin" directory.
|
|
|
|
If in doubt, refer to the manual pages of your system (perhaps "ld.so"
|
|
or "rld"). If you later on get a message like
|
|
psql: error in loading shared libraries
|
|
libpq.so.2.1: cannot open shared object file: No such file or directory
|
|
|
|
then this step was necessary. Simply take care of it then.
|
|
|
|
If you are on BSD/OS, Linux, or SunOS 4 and you have root access you
|
|
can run
|
|
/sbin/ldconfig /usr/local/pgsql/lib
|
|
|
|
(or equivalent directory) after installation to enable the run-time
|
|
linker to find the shared libraries faster. Refer to the manual page
|
|
of "ldconfig" for more information. On FreeBSD, NetBSD, and OpenBSD
|
|
the command is
|
|
/sbin/ldconfig -m /usr/local/pgsql/lib
|
|
|
|
instead. Other systems are not known to have an equivalent command.
|
|
_________________________________________________________________
|
|
|
|
Environment Variables
|
|
|
|
If you installed into "/usr/local/pgsql" or some other location that
|
|
is not searched for programs by default, you should add
|
|
"/usr/local/pgsql/bin" (or whatever you set "--bindir" to in step 1)
|
|
into your PATH. Strictly speaking, this is not necessary, but it will
|
|
make the use of PostgreSQL much more convenient.
|
|
|
|
To do this, add the following to your shell start-up file, such as
|
|
"~/.bash_profile" (or "/etc/profile", if you want it to affect every
|
|
user):
|
|
PATH=/usr/local/pgsql/bin:$PATH
|
|
export PATH
|
|
|
|
If you are using "csh" or "tcsh", then use this command:
|
|
set path = ( /usr/local/pgsql/bin $path )
|
|
|
|
To enable your system to find the 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.
|
|
MANPATH=/usr/local/pgsql/man:$MANPATH
|
|
export MANPATH
|
|
|
|
The environment variables PGHOST and 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 PGHOST. This is not required, however: the settings can
|
|
be communicated via command line options to most client programs.
|
|
_________________________________________________________________
|
|
|
|
Getting Started
|
|
|
|
The following is a quick summary of how to get PostgreSQL up and
|
|
running once installed. The main documentation contains more
|
|
information.
|
|
1. Create a user account for the PostgreSQL server. This is the user
|
|
the server will run as. For production use you should create a
|
|
separate, unprivileged account ("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.
|
|
adduser postgres
|
|
2. Create a database installation with the "initdb" command. To run
|
|
"initdb" you must be logged in to your PostgreSQL server account.
|
|
It will not work as root.
|
|
root# mkdir /usr/local/pgsql/data
|
|
root# chown postgres /usr/local/pgsql/data
|
|
root# su - postgres
|
|
postgres$ /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
|
|
The "-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 "initdb", as illustrated here.
|
|
3. The previous step should have told you how to start up the
|
|
database server. Do so now. The command should look something like
|
|
/usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data
|
|
This will start the server in the foreground. To put the server in
|
|
the background use something like
|
|
nohup /usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data \
|
|
</dev/null >>server.log 2>&1 </dev/null &
|
|
To stop a server running in the background you can type
|
|
kill `cat /usr/local/pgsql/data/postmaster.pid`
|
|
In order to allow TCP/IP connections (rather than only Unix domain
|
|
socket ones) you need to pass the "-i" option to "postmaster".
|
|
4. Create a database:
|
|
createdb testdb
|
|
Then enter
|
|
psql testdb
|
|
to connect to that database. At the prompt you can enter SQL
|
|
commands and start experimenting.
|
|
_________________________________________________________________
|
|
|
|
What Now?
|
|
|
|
* The PostgreSQL distribution contains a comprehensive documentation
|
|
set, which you should read sometime. After installation, the
|
|
documentation can be accessed by pointing your browser to
|
|
"/usr/local/pgsql/doc/html/index.html", unless you changed the
|
|
installation directories.
|
|
The first few chapters of the main documentation are the Tutorial,
|
|
which should be your first reading if you are completely new to
|
|
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.
|
|
* 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.
|
|
* Run the regression tests against the installed server (using the
|
|
sequential test method). If you didn't run the tests before
|
|
installation, you should definitely do it now. This is also
|
|
explained in the documentation.
|
|
_________________________________________________________________
|
|
|
|
Supported Platforms
|
|
|
|
PostgreSQL has been verified by the developer community to work on the
|
|
platforms listed below. A supported platform generally means that
|
|
PostgreSQL builds and installs according to these instructions and
|
|
that the regression tests pass.
|
|
|
|
Note: If you are having problems with the installation on a
|
|
supported platform, please write to <pgsql-bugs@postgresql.org> or
|
|
<pgsql-ports@postgresql.org>, not to the people listed here.
|
|
|
|
OS Processor Version Reported Remarks
|
|
AIX RS6000 7.3 2002-11-12, Andreas Zeugswetter
|
|
(<ZeugswetterA@spardat.at>) see also doc/FAQ_AIX
|
|
BSD/OS x86 7.3 2002-10-25, Bruce Momjian (<pgman@candle.pha.pa.us>)
|
|
4.2
|
|
FreeBSD Alpha 7.3 2002-11-13, Chris Kings-Lynne
|
|
(<chriskl@familyhealth.com.au>)
|
|
FreeBSD x86 7.3 2002-10-29, 3.3, Nigel J. Andrews
|
|
(<nandrews@investsystems.co.uk>), 4.7, Larry Rosenman
|
|
(<ler@lerctr.org>), 5.0, Sean Chittenden (<sean@chittenden.org>)
|
|
HP-UX PA-RISC 7.3 2002-10-28, 10.20 Tom Lane (<tgl@sss.pgh.pa.us>),
|
|
11.00, 11.11, 32 and 64 bit, Giles Lean (<giles@nemeton.com.au>) gcc
|
|
and cc; see also doc/FAQ_HPUX
|
|
IRIX MIPS 7.3 2002-10-27, Ian Barwick (<barwick@gmx.net>) Irix64 Komma
|
|
6.5
|
|
Linux Alpha 7.3 2002-10-28, Magnus Naeslund (<mag@fbab.net>)
|
|
2.4.19-pre6
|
|
Linux armv4l 7.2 2001-12-10, Mark Knox (<segfault@hardline.org>) 2.2.x
|
|
Linux MIPS 7.2 2001-11-15, Hisao Shibuya (<shibuya@alpha.or.jp>)
|
|
2.0.x; Cobalt Qube2
|
|
Linux PlayStation 2 7.3 2002-11-19, Permaine Cheung
|
|
<pcheung@redhat.com>) #undef HAS_TEST_AND_SET, remove slock_t typedef
|
|
Linux PPC74xx 7.3 2002-10-26, Tom Lane (<tgl@sss.pgh.pa.us>) bye
|
|
2.2.18; Apple G3
|
|
Linux S/390 7.3 2002-11-22, Permaine Cheung <pcheung@redhat.com>) both
|
|
s390 and s390x (32 and 64 bit)
|
|
Linux Sparc 7.3 2002-10-26, Doug McNaught (<doug@mcnaught.org>) 3.0
|
|
Linux x86 7.3 2002-10-26, Alvaro Herrera (<alvherre@dcc.uchile.cl>)
|
|
2.4
|
|
MacOS X PPC 7.3 2002-10-28, 10.1, Tom Lane (<tgl@sss.pgh.pa.us>),
|
|
10.2.1, Adam Witney (<awitney@sghms.ac.uk>)
|
|
NetBSD Alpha 7.2 2001-11-20, Thomas Thai (<tom@minnesota.com>) 1.5W
|
|
NetBSD arm32 7.3 2002-11-19, Patrick Welche (<prlw1@newn.cam.ac.uk>)
|
|
1.6
|
|
NetBSD m68k 7.0 2000-04-10, Henry B. Hotz (<hotz@jpl.nasa.gov>) Mac
|
|
8xx
|
|
NetBSD MIPS 7.2.1 2002-06-13, Warwick Hunter (<whunter@agile.tv>)
|
|
1.5.3
|
|
NetBSD PPC 7.2 2001-11-28, Bill Studenmund (<wrstuden@netbsd.org>) 1.5
|
|
NetBSD Sparc 7.2 2001-12-03, Matthew Green (<mrg@eterna.com.au>) 32-
|
|
and 64-bit builds
|
|
NetBSD VAX 7.1 2001-03-30, Tom I. Helbekkmo (<tih@kpnQwest.no>) 1.5
|
|
NetBSD x86 7.3 2002-11-14, Patrick Welche (<prlw1@newn.cam.ac.uk>) 1.6
|
|
OpenBSD Sparc 7.3 2002-11-17, Christopher Kings-Lynne
|
|
(<chriskl@familyhealth.com.au>) 3.2
|
|
OpenBSD x86 7.3 2002-11-14, 3.1 Magnus Naeslund (<mag@fbab.net>), 3.2
|
|
Christopher Kings-Lynne (<chriskl@familyhealth.com.au>)
|
|
SCO OpenServer 5 x86 7.3.1 2002-12-11, Shibashish Satpathy
|
|
(<shib@postmark.net>) 5.0.4, gcc; see also doc/FAQ_SCO
|
|
Solaris Sparc 7.3 2002-10-28, Andrew Sullivan
|
|
(<andrew@libertyrms.info>) Solaris 7 and 8; see also doc/FAQ_Solaris
|
|
Solaris x86 7.3 2002-11-20, Martin Renters (<martin@datafax.com>) 5.8;
|
|
see also doc/FAQ_Solaris
|
|
SunOS 4 Sparc 7.2 2001-12-04, Tatsuo Ishii (<t-ishii@sra.co.jp>)
|
|
Tru64 UNIX Alpha 7.3 2002-11-05, Alessio Bragadini
|
|
(<alessio@albourne.com>)
|
|
UnixWare x86 7.3 2002-11-01, 7.1.3 Larry Rosenman (<ler@lerctr.org>),
|
|
7.1.1 and 7.1.2(8.0.0) Olivier Prenant (<ohp@pyrenet.fr>) see also
|
|
doc/FAQ_SCO
|
|
Windows x86 7.3 2002-10-29, Dave Page (<dpage@vale-housing.co.uk>),
|
|
Jason Tishler (<jason@tishler.net>) with Cygwin; see doc/FAQ_MSWIN
|
|
Windows x86 7.3 2002-11-05, Dave Page (<dpage@vale-housing.co.uk>)
|
|
native is client-side only; see documentation
|
|
|
|
Unsupported Platforms: 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 7.4 at
|
|
the time this list was compiled. We include these here to let you know
|
|
that these platforms *could* be supported if given some attention.
|
|
|
|
OS Processor Version Reported Remarks
|
|
BeOS x86 7.2 2001-11-29, Cyril Velter (<cyril.velter@libertysurf.fr>)
|
|
needs updates to semaphore code
|
|
DG/UX 5.4R4.11 m88k 6.3 1998-03-01, Brian E Gallew (<geek+@cmu.edu>)
|
|
no recent reports
|
|
MkLinux DR1 PPC750 7.0 2001-04-03, Tatsuo Ishii (<t-ishii@sra.co.jp>)
|
|
7.1 needs OS update?
|
|
NeXTSTEP x86 6.x 1998-03-01, David Wetzel (<dave@turbocat.de>) bit rot
|
|
suspected
|
|
QNX 4 RTOS x86 7.2 2001-12-10, Bernd Tegge (<tegge@repas-aeg.de>)
|
|
needs updates to semaphore code; see also doc/FAQ_QNX4
|
|
QNX RTOS v6 x86 7.2 2001-11-20, Igor Kovalenko
|
|
(<Igor.Kovalenko@motorola.com>) patches available in archives, but too
|
|
late for 7.2
|
|
System V R4 m88k 6.2.1 1998-03-01, Doug Winterburn
|
|
(<dlw@seavme.xroads.com>) needs new TAS spinlock code
|
|
System V R4 MIPS 6.4 1998-10-28, Frank Ridderbusch
|
|
(<ridderbusch.pad@sni.de>) no recent reports
|
|
Ultrix MIPS 7.1 2001-03-26 TAS spinlock code not detected
|
|
Ultrix VAX 6.x 1998-03-01
|