Once you have acquired the source for PostgreSQL, you should copy the PostgreSQL source package to a temporary
compilation directory. This directory will be the path where you install and configure PostgreSQL. Within this path, you
will extract the contents from the
tar.gz
file and proceed with installation.
Bear in mind that this will not be the location of the installed database files. This is a temporary location for
configuration and compilation of the source package itself. If you have downloaded the PostgreSQL package from the
Internet, it is probably not saved in your intended compilation directory (unless you explicitly chose to save there). A
common convention for building source on UNIX and Linux machines is to build within the
/usr/local/src
path. You will most likely need root privileges to access this path. As such, the remaining examples in this chapter will
involve the
root
user until otherwise specified.
Note: If you are a user of a commercial Linux distribution, we strongly suggest that you verify whether or not you have
PostgreSQL already installed. On RPM-based systems, such as SuSe, Mandrake, or RedHat, this can be done by using the
following command:
rpm -qa | grep -i postgres
. If you do have PostgreSQL installed, there is a good
chance that it is outdated. You will want to download and install the latest version of PostgreSQL available. An RPM
installation of PostgreSQL will sometimes install scripts and programs such as
postmaster
and
psql
into globally accessible directories. This can cause conflicts with source-built versions, so
before installing a new version, be sure to remove the RPM by using the
rpm -e <package name>
command.
To unpack PostgreSQL source code on a Linux system, first move (or copy, from the CD) the compressed source file into
/usr/local/src
(most people move their source files here to keep them separate from their home
directories and/or other locations they may keep downloaded files). After moving it to the filesystem location where you
wish to unpack it, use
tar
to unpack the source files. The commands to perform these actions are
shown in Example 2-6.
Example 2-6. Unpacking the PostgreSQL source package
[root@host root]#
mv postgresql-7.1.3.tar.gz /usr/local/src
[root@host root]#
cd /usr/local/src
[root@host src]#
tar -xzvf postgresql-7.1.3.tar.gz
postgresql-7.1.3/
postgresql-7.1.3/ChangeLogs/
postgresql-7.1.3/ChangeLogs/ChangeLog-7.1-7.1.1
postgresql-7.1.3/ChangeLogs/ChangeLog-7.1RC1-to-7.1RC2
postgresql-7.1.3/ChangeLogs/ChangeLog-7.1RC2-to-7.1RC3
postgresql-7.1.3/ChangeLogs/ChangeLog-7.1RC3-to-7.1rc4
postgresql-7.1.3/ChangeLogs/ChangeLog-7.1beta1-to-7.1beta3
postgresql-7.1.3/ChangeLogs/ChangeLog-7.1beta3-to-7.1beta4
postgresql-7.1.3/ChangeLogs/ChangeLog-7.1beta4-to-7.1beta5
postgresql-7.1.3/ChangeLogs/ChangeLog-7.1beta5-to-7.1beta6
postgresql-7.1.3/ChangeLogs/ChangeLog-7.1beta6-7.1RC1
postgresql-7.1.3/ChangeLogs/ChangeLog-7.1rc4-7.1
postgresql-7.1.3/ChangeLogs/ChangeLog-7.1.1-7.1.2
postgresql-7.1.3/ChangeLogs/ChangeLog-7.1.2-7.1.3
postgresql-7.1.3/COPYRIGHT
[...]
[root@host root]#
chown -R postgres.postgres postgresql-7.1.3
Notice the last command used in Example 2-6. The command is
chown -R postgres.postgres postgresql-7.1.3
. This command grants the ownership of the PostgreSQL
source directory tree to
postgres
, which in turn enables you to compile PostgreSQL as the
postgres
user. Once the extraction and ownership change has completed, you can switch to the
postgres
user to compile PostgreSQL, resulting in all compiled files automatically being owned by
postgres
.
For reference purposes, the following list is a description of the
tar
options used to extract
the PostgreSQL source distribution:
- x (extract)
-
tar
will extract from the passed filename (as opposed to creating a new
file).
- v (verbose)
-
tar
will print verbose output as files are extracted. You may omit this flag if you
do not wish to see each file as it is unpacked.
- z (zipped)
-
tar
will use
gunzip
to decompress the source. This option
assumes that you are using the GNU tools; other versions of
tar
may not support the
z
flag. In the event that you are not using the GNU tools, you will need to manually unzip the file
using
gunzip
before you can unpack it with
tar
.
- f (file)
-
tar
will use the filename following the
f
parameter to
determine which file to extract. In our examples, this file is
postgresql-7.1.3.tar.gz
.
After you have completed the extraction of the files, switch to the
postgres
user and change
into the newly created directory (e.g.,
/usr/local/src/postgres-7.1.3
). The remaining installation
steps will take place in that directory.