2000-01-21 01:21:30 +03:00
|
|
|
Installation instructions for PostgreSQL 7.0.
|
2000-01-21 00:51:09 +03:00
|
|
|
|
|
|
|
Commands were tested on RedHat Linux version 5.2 using the bash shell.
|
|
|
|
Except where noted, they will probably work on most systems. Commands like
|
|
|
|
ps and tar may vary wildly between platforms on what options you should use.
|
|
|
|
Use common sense before typing in these commands.
|
|
|
|
|
|
|
|
If you haven't gotten the PostgreSQL distribution, get it from
|
|
|
|
ftp.postgresql.org, then unpack it:
|
|
|
|
|
2000-01-21 01:21:30 +03:00
|
|
|
$ gunzip postgresql-7.0.tar.gz
|
|
|
|
$ tar -xf postgresql-7.0.tar
|
|
|
|
$ mv postgresql-7.0 /usr/src
|
2000-01-21 00:51:09 +03:00
|
|
|
|
|
|
|
Again, these commands might differ on your system.
|
|
|
|
|
|
|
|
Before you start
|
|
|
|
|
|
|
|
Building PostgreSQL requires GNU make. It will not work with other make
|
|
|
|
programs. On GNU/Linux systems GNU make is the default tool, on other
|
|
|
|
systems you may find that GNU make is installed under the name "gmake". We
|
|
|
|
will use that name from now on to indicate GNU make, no matter what name it
|
|
|
|
has on your system. To test for GNU make enter
|
|
|
|
|
|
|
|
$ gmake --version
|
|
|
|
|
|
|
|
If you need to get GNU make, you can find it at ftp://ftp.gnu.org.
|
|
|
|
|
|
|
|
Up to date information on supported platforms is at
|
|
|
|
http://www.postgresql.org/docs/admin/ports.htm. In general, most
|
|
|
|
Unix-compatible platforms with modern libraries should be able to run
|
|
|
|
PostgreSQL. In the doc subdirectory of the distribution are several
|
|
|
|
platform-specific FAQ and README documents you might wish to consult if you
|
|
|
|
are having trouble.
|
|
|
|
|
|
|
|
Although the minimum required memory for running PostgreSQL can be as little
|
|
|
|
as 8MB, there are noticable speed improvements when expanding memory up to
|
|
|
|
96MB or beyond. The rule is you can never have too much memory.
|
|
|
|
|
|
|
|
Check that you have sufficient disk space. You will need about 30 Mbytes for
|
|
|
|
the source tree during compilation and about 5 Mbytes for the installation
|
|
|
|
directory. An empty database takes about 1 Mbyte, otherwise they take about
|
|
|
|
five times the amount of space that a flat text file with the same data
|
|
|
|
would take. If you run the regression tests you will temporarily need an
|
|
|
|
extra 20MB.
|
|
|
|
|
|
|
|
To check for disk space, use
|
|
|
|
|
|
|
|
$ df -k
|
|
|
|
|
|
|
|
Considering today's prices for hard disks, getting a large and fast hard
|
|
|
|
disk should probably be in your plans before putting a database into
|
|
|
|
production use.
|
1999-06-14 11:24:32 +04:00
|
|
|
|
1998-10-31 12:31:58 +03:00
|
|
|
|
|
|
|
Installation Procedure
|
|
|
|
|
2000-01-21 00:51:09 +03:00
|
|
|
PostgreSQL Installation
|
|
|
|
|
|
|
|
For a fresh install or upgrading from previous releases of PostgreSQL:
|
|
|
|
|
|
|
|
1. Create the PostgreSQL superuser account. 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.
|
|
|
|
|
|
|
|
Running PostgreSQL as root, bin, or any other account with special
|
|
|
|
access rights is a security risk and therefore won't be allowed.
|
|
|
|
|
|
|
|
You need not do the building and installation itself under this account
|
|
|
|
(although you can). You will be told when you need to login as the
|
|
|
|
database superuser.
|
|
|
|
|
2000-01-23 04:27:39 +03:00
|
|
|
2. If you are not upgrading an existing system then skip to step 4.
|
2000-01-21 00:51:09 +03:00
|
|
|
|
|
|
|
You now need to back up your existing database. To dump your fairly
|
|
|
|
recent post-6.0 database installation, type
|
|
|
|
|
|
|
|
$ pg_dumpall > db.out
|
|
|
|
|
|
|
|
If you wish to preserve object id's (oids), then use the -o option when
|
|
|
|
running pg_dumpall. However, unless you have a special reason for doing
|
|
|
|
this (such as using OIDs as keys in tables), don't do it.
|
|
|
|
|
|
|
|
Make sure to use the pg_dumpall command from the version you are
|
|
|
|
currently running. However, do not use the pg_dumpall script from 6.0
|
|
|
|
or everything will be owned by the PostgreSQL super user. In that case
|
|
|
|
you should grab pg_dumpall from a later 6.x.x release. 7.0's pg_dumpall
|
|
|
|
will not work on older databases. If you are upgrading from a version
|
|
|
|
prior to Postgres95 v1.09 then you must back up your database, install
|
|
|
|
Postgres95 v1.09, restore your database, then back it up again.
|
|
|
|
|
|
|
|
Caution
|
|
|
|
You must make sure that your database is not updated in the middle of your
|
|
|
|
backup. If necessary, bring down postmaster, edit the permissions in file
|
|
|
|
/usr/local/pgsql/data/pg_hba.conf to allow only you on, then bring
|
|
|
|
postmaster back up.
|
2000-01-23 04:27:39 +03:00
|
|
|
|
2000-01-21 00:51:09 +03:00
|
|
|
3. If you are upgrading an existing system then kill the database server
|
|
|
|
now. Type
|
|
|
|
|
|
|
|
$ ps ax | grep postmaster
|
|
|
|
|
|
|
|
This should list the process numbers for a number of processes, similar
|
|
|
|
to this:
|
|
|
|
|
|
|
|
263 ? SW 0:00 (postmaster)
|
|
|
|
777 p1 S 0:00 grep postmaster
|
|
|
|
|
|
|
|
Type the following line, with pid replaced by the process id for
|
|
|
|
process postmaster (263 in the above case). (Do not use the id for the
|
|
|
|
process "grep postmaster".)
|
|
|
|
|
|
|
|
$ kill pid
|
|
|
|
|
|
|
|
Tip: On systems which have PostgreSQL started at boot time,
|
|
|
|
there is probably a startup file which will accomplish the
|
|
|
|
same thing. For example, on a Redhat Linux system one might
|
|
|
|
find that
|
|
|
|
|
|
|
|
$ /etc/rc.d/init.d/postgres.init stop
|
|
|
|
|
|
|
|
works.
|
|
|
|
|
|
|
|
Also move the old directories out of the way. Type the following:
|
|
|
|
|
|
|
|
$ mv /usr/local/pgsql /usr/local/pgsql.old
|
|
|
|
|
|
|
|
or replace your particular paths.
|
|
|
|
|
|
|
|
4. Configure the source code for your system. It is this step at which you
|
|
|
|
can specify your actual installation path for the build process and
|
|
|
|
make choices about what gets installed. Change into the src
|
|
|
|
subdirectory and type:
|
|
|
|
|
2000-01-23 04:27:39 +03:00
|
|
|
$ ./configure
|
2000-01-21 00:51:09 +03:00
|
|
|
|
2000-01-23 04:27:39 +03:00
|
|
|
followed by any options you might want to give it. For a first
|
|
|
|
installation you should be able to do fine without any. For a complete
|
|
|
|
list of options, type:
|
2000-01-21 00:51:09 +03:00
|
|
|
|
2000-01-23 04:27:39 +03:00
|
|
|
./configure --help
|
2000-01-21 00:51:09 +03:00
|
|
|
|
|
|
|
Some of the more commonly used ones are:
|
|
|
|
|
|
|
|
--prefix=BASEDIR
|
|
|
|
|
|
|
|
Selects a different base directory for the installation of
|
|
|
|
PostgreSQL. The default is /usr/local/pgsql.
|
|
|
|
|
|
|
|
--enable-locale
|
|
|
|
|
|
|
|
If you want to use locales.
|
|
|
|
|
|
|
|
--enable-multibyte
|
|
|
|
|
|
|
|
Allows the use of multibyte character encodings. This is primarily
|
|
|
|
for languages like Japanese, Korean, or Chinese.
|
|
|
|
|
|
|
|
--with-perl
|
|
|
|
|
|
|
|
Builds the Perl interface. Please note that the Perl interface
|
|
|
|
will be installed into the usual place for Perl modules (typically
|
|
|
|
under /usr/lib/perl), so you must have root access to use this
|
|
|
|
option successfully.
|
|
|
|
|
|
|
|
--with-odbc
|
|
|
|
|
|
|
|
Builds the ODBC driver package.
|
|
|
|
|
|
|
|
--with-tcl
|
|
|
|
|
|
|
|
Builds interface libraries and programs requiring Tcl/Tk,
|
|
|
|
including libpgtcl, pgtclsh, and pgtksh.
|
|
|
|
|
|
|
|
5. Compile the program. Type
|
|
|
|
|
|
|
|
$ gmake
|
|
|
|
|
|
|
|
The compilation process can take anywhere from 10 minutes to an hour.
|
|
|
|
Your milage will most certainly vary.
|
|
|
|
|
|
|
|
The last line displayed will hopefully be
|
|
|
|
|
|
|
|
All of PostgreSQL is successfully made. Ready to install.
|
|
|
|
|
|
|
|
Remember, "gmake" may be called "make" on your system.
|
|
|
|
|
|
|
|
6. Install the program. Type
|
|
|
|
|
|
|
|
$ gmake install
|
|
|
|
|
|
|
|
7. Tell your system how to find the new shared libraries. How to do this
|
|
|
|
varies between platforms. What tends to work everywhere is to set the
|
|
|
|
environment variable LD_LIBRARY_PATH:
|
|
|
|
|
|
|
|
$ LD_LIBRARY_PATH=/usr/local/pgsql/lib
|
|
|
|
$ export LD_LIBRARY_PATH
|
|
|
|
|
|
|
|
You might want to put this into a shell startup file such as
|
|
|
|
~/.bash_profile.
|
|
|
|
|
|
|
|
On some systems the following is the preferred method, but you must
|
|
|
|
have root access. Edit file /etc/ld.so.conf to add a line
|
|
|
|
|
|
|
|
/usr/local/pgsql/lib
|
|
|
|
|
|
|
|
Then run command /sbin/ldconfig.
|
|
|
|
|
|
|
|
If in doubt, refer to the manual pages of your system. 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 the above was necessary. Simply do this step then.
|
|
|
|
|
|
|
|
8. Create the database installation. To do this you must log in to your
|
|
|
|
PostgreSQL superuser account. It will not work as root.
|
|
|
|
|
|
|
|
$ mkdir /usr/local/pgsql/data
|
|
|
|
$ chown postgres /usr/local/pgsql/data
|
|
|
|
$ su - postgres
|
|
|
|
$ /usr/local/pgsql/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 superuser account can
|
2000-01-23 04:27:39 +03:00
|
|
|
write to the directory (or create it) before starting initdb. (If you
|
|
|
|
have already been doing the installation up to now as the PostgreSQL
|
|
|
|
superuser, you may have to log in as root temporarily to create the
|
|
|
|
data directory.)
|
2000-01-21 00:51:09 +03:00
|
|
|
|
|
|
|
9. The previous step should have told you how to start up the database
|
|
|
|
server. Do so now.
|
|
|
|
|
2000-01-23 04:27:39 +03:00
|
|
|
$ /usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data
|
2000-01-21 00:51:09 +03:00
|
|
|
|
|
|
|
This will start the server in the foreground. To make it detach to the
|
|
|
|
background, use the -S.
|
|
|
|
|
|
|
|
10. If you are upgrading from an existing installation, dump your data back
|
|
|
|
in:
|
|
|
|
|
|
|
|
$ /usr/local/pgsql/bin/psql < db.out
|
|
|
|
|
|
|
|
You also might want to copy over the old pg_hba.conf file and any other
|
|
|
|
files you might have had set up for authentication, such as password
|
|
|
|
files.
|
|
|
|
|
|
|
|
This concludes the installation proper. To make your life more productive
|
|
|
|
and enjoyable you should look at the following optional steps and
|
|
|
|
suggestions.
|
|
|
|
|
|
|
|
* Life will be more convenient if you set up some enviroment variables.
|
|
|
|
First of all you probably want to include /usr/local/pgsql/bin (or
|
|
|
|
equivalent) into your PATH. To do this, add the following to your shell
|
|
|
|
startup file, such as ~/.bash_profile (or /etc/profile, if you want it
|
|
|
|
to affect every user):
|
|
|
|
|
|
|
|
PATH=$PATH:/usr/local/pgsql/bin
|
|
|
|
|
|
|
|
Furthermore, if you set PGDATA in the environment of the PostgreSQL
|
|
|
|
superuser, you can omit the -D for postmaster and initdb.
|
|
|
|
|
|
|
|
* You probably want to install the man and HTML documentation. Type
|
|
|
|
|
2000-01-21 01:21:30 +03:00
|
|
|
$ cd /usr/src/pgsql/postgresql-7.0/doc
|
2000-01-21 00:51:09 +03:00
|
|
|
$ gmake install
|
|
|
|
|
2000-01-23 04:27:39 +03:00
|
|
|
This will install files under /usr/local/pgsql/doc and
|
|
|
|
/usr/local/pgsql/man. To enable your system to find the man
|
|
|
|
documentation, you need to add a line like the following to a shell
|
|
|
|
startup file:
|
|
|
|
|
|
|
|
MANPATH=$MANPATH:/usr/local/pgsql/man
|
2000-01-21 00:51:09 +03:00
|
|
|
|
|
|
|
The documentation is also available in Postscript format. If you have a
|
|
|
|
Postscript printer, or have your machine already set up to accept
|
|
|
|
Postscript files using a print filter, then to print the User's Guide
|
|
|
|
simply type
|
|
|
|
|
|
|
|
$ cd /usr/local/pgsql/doc
|
|
|
|
$ gunzip -c user.ps.tz | lpr
|
|
|
|
|
|
|
|
Here is how you might do it if you have Ghostscript on your system and
|
|
|
|
are writing to a laserjet printer.
|
|
|
|
|
|
|
|
$ alias gshp='gs -sDEVICE=laserjet -r300 -dNOPAUSE'
|
|
|
|
$ export GS_LIB=/usr/share/ghostscript:/usr/share/ghostscript/fonts
|
|
|
|
$ gunzip user.ps.gz
|
|
|
|
$ gshp -sOUTPUTFILE=user.hp user.ps
|
|
|
|
$ gzip user.ps
|
|
|
|
$ lpr -l -s -r manpage.hp
|
|
|
|
|
|
|
|
If in doubt, confer your manuals or your local expert.
|
|
|
|
|
|
|
|
The Adminstrator's Guide should probably be your first reading if you
|
|
|
|
are completely new to PostgreSQL, as it contains information about how
|
|
|
|
to set up database users and authentication.
|
|
|
|
|
|
|
|
* Usually, you will want to modify your computer so that it will
|
|
|
|
automatically start the database server whenever it boots. This is not
|
|
|
|
required; the PostgreSQL server can be run successfully from
|
|
|
|
non-privileged accounts without root intervention.
|
|
|
|
|
|
|
|
Different systems have different conventions for starting up daemons at
|
|
|
|
boot time, so you are advised to familiarize yourself with them. Most
|
|
|
|
systems have a file /etc/rc.local or /etc/rc.d/rc.local which is almost
|
|
|
|
certainly no bad place to put such a command. Whatever you do,
|
|
|
|
postmaster must be run by the PostgreSQL superuser (postgres) and not
|
|
|
|
by root or any other user. Therefore you probably always want to form
|
|
|
|
your command lines along the lines of su -c '...' postgres.
|
|
|
|
|
|
|
|
It might be advisable to keep a log of the server output. To start the
|
|
|
|
server that way try:
|
|
|
|
|
|
|
|
nohup su -c 'postmaster -D /usr/local/pgsql/data > server.log 2>&1' postgres &
|
|
|
|
|
|
|
|
Here are a few more operating system specific suggestions.
|
|
|
|
|
|
|
|
o Edit file rc.local on NetBSD or file rc2.d on SPARC Solaris 2.5.1
|
|
|
|
to contain the following single line:
|
|
|
|
|
|
|
|
su postgres -c "/usr/local/pgsql/bin/postmaster -S -D /usr/local/pgsql/data"
|
|
|
|
|
|
|
|
o In FreeBSD 2.2-RELEASE edit /usr/local/etc/rc.d/pgsql.sh to
|
|
|
|
contain the following lines and make it chmod 755 and chown
|
|
|
|
root:bin.
|
|
|
|
|
|
|
|
#!/bin/sh
|
|
|
|
[ -x /usr/local/pgsql/bin/postmaster ] && {
|
|
|
|
su -l pgsql -c 'exec /usr/local/pgsql/bin/postmaster
|
|
|
|
-D/usr/local/pgsql/data
|
|
|
|
-S -o -F > /usr/local/pgsql/errlog' &
|
|
|
|
echo -n ' pgsql'
|
|
|
|
}
|
|
|
|
|
|
|
|
You may put the line breaks as shown above. The shell is smart
|
|
|
|
enough to keep parsing beyond end-of-line if there is an
|
|
|
|
expression unfinished. The exec saves one layer of shell under the
|
|
|
|
postmaster process so the parent is init.
|
1999-06-03 20:05:38 +04:00
|
|
|
|
2000-01-21 00:51:09 +03:00
|
|
|
o In RedHat Linux add a file /etc/rc.d/init.d/postgres.init which is
|
|
|
|
based on the example in contrib/linux/. Then make a softlink to
|
|
|
|
this file from /etc/rc.d/rc5.d/S98postgres.init.
|
1999-06-03 20:05:38 +04:00
|
|
|
|
2000-01-21 00:51:09 +03:00
|
|
|
* Run the regression tests. The regression tests are a test suite to
|
|
|
|
verify that PostgreSQL runs on your machine in the way the developers
|
|
|
|
expected it to. You should definitely do this before putting a server
|
|
|
|
into production use. The file
|
2000-01-21 01:21:30 +03:00
|
|
|
/usr/src/pgsql/postgresql-7.0/src/test/regress/README has detailed
|
2000-01-21 00:51:09 +03:00
|
|
|
instructions for running and interpreting the regression tests.
|