1999/1/11
バージョン PostgreSQL 6.4.1
PostgreSQL 6.5
OS Slackware 3.6 (Linux 2.0.35)
RedHat 5.2J (Linux 2.0.36)
ホームページ http://www.postgresql.org/ (公式ページ)
http://www.sra.co.jp/people/t-ishii/postgres95/ (日本語の情報)
ダウンロード ftp://mirror.nucba.ac.jp/mirror/postgresql/pub/

PostgreSQLはフリーのオブジェクトリレーショナルデータベース管理システム(ORDBMS)です。日本語も問題なく扱え、非常に強力です。インストールはやや面倒なところもありますが、特に問題は発生しませんでした。

この記事は古いバージョンのインストール手順です。より新しいバージョンのインストールについては、こちらからどうぞ。

2000/2/3
・ /etc/ld.so.confに追加した後、ldconfigするようにしました。
・ Perl 5.005_03 + PostgreSQL 6.5.3の組み合わせは問題ないようです。

1999/7/20
・ PostgreSQL 6.5でもインストール方法は全く同じです。
・ RedHat Linux 5.2にはreadlineが標準でインストールされているようです。
・ RedHat系での自動起動設定の方法を追記しました。

readlineのインストール(Optional)

事前にreadlineライブラリをインストールしておくとpsqlで行編集が可能になるので、可能なら入れておくと良いでしょう。これは必須ではありません。readlineのダウンロードは以下の場所から行えます。日本語対応パッチも一緒にダウンロードしてください。

インストールは以下の手順です。特に難しいことはありません。

$ tar xvfz readline-2.2.1.tar.gz

$ cd readline-2.2.1
$ gzip -dc ../readline-2.2.1.jpatch.980724.gz | patch -p0

$ ./configure

$ make

$ su

# make isntall

準備

PostgreSQLは、root権限でのインストール、起動ができないので、新たに専用のアカウントを作ります。今回はpostgresというアカウントを作りました。

$ su

# adduser postgres

postgresアカウントで展開したディレクトリを/usr/local/pgsqlに移動します。以降はpostgresアカウントでインストール作業を行います。(ただし、suでpostgresになっただけだと、データベースの初期化で失敗するので、ログインしなおしてしまったほうが良いでしょう)(1999/7/20訂正: su - postgresを使用すれば大丈夫なようです)

$ su postgres
[postgres]$ tar xvfz postgresql-6.4.1.tar.gz
[postgres]$ su

# mv postgresql-6.4.1 /usr/local/pgsql
# chown postgres:root /usr/local/pgsql
# exit

[postgres]$ cd /usr/local/pgsql/src

次にconfigureを実行します。日本語EUCを使えるようにするため、--with-mb=EUC_JPを指定します。

[postgres]$ ./configure --with-mb=EUC_JP 

コンパイル

これでMakefileができるので、次にmake allを実行します。

[postgres]$ make all

インストール

次に、make installします。

[postgres]$ make install

次に、/usr/local/pgsql/binをPATHに追加してから、データベースを初期化するため、以下のようにします。なお、suでpostgresになっている場合、initidbで失敗するようなので、必ずログインし直すようにしてください。(1999/7/20訂正: su - postgresを使用すれば大丈夫なようです)

[postgres]$ PATH=$PATH:/usr/local/pgsql/bin
[postgres]$ initdb --pgdata=/usr/local/pgsql/data --pglib=/usr/local/pgsql/lib

1999/9/30追加:
PostgreSQL 6.5では、上のやり方ではうまくいきませんでした。代わりに以下のようにします。

[postgres]$ export PATH=$PATH:/usr/local/pgsql/bin
[postgres]$ export PGLIB=/usr/local/pgsql/lib
[postgres]$ export PGDATA=/usr/local/pgsql/data
[postgres]$ export LD_LIBRARY_PATH="$LD_LIBRARY_PATH":"$PGLIB"
[postgres]$ initdb

テスト

ちゃんとインストールできたかどうか確認します。まず以下のようにしてPostgreSQLを立ち上げます。

[postgres]$ postmaster -D/usr/local/pgsql/data -S -i

立ちあがったら以下のようにします。

[postgres]$ cd /usr/local/pgsql/src/test/regress
[postgres]$ make all runtest

これで自動的にすべての機能をテストしていきます。ちなみに今回の筆者の環境ではgeometryの項目がfailedとなってしまいました。(原因不明、とりあえず無視)

オンラインマニュアルのインストール

必要に応じて(普通は必要でしょう)オンラインマニュアルをインストールします。

[postgres]$ cd /usr/local/pgsql/src
[postgres]$ make install-man

Perlインタフェースのインストール

必要に応じてPerl5用のモジュールをインストールします。ここはPostgreSQL本体とは関係ない部分なので、make installはroot権限で行います。

[postgres]$ cd /usr/local/pgsql/src/interfaces/perl5
[postgres]$ perl Makefile.PL
[postgres]$ make
[postgres]$ make test
[postgres]$ su

# make install

他にも、C、C++、Tcl、Python、ODBC、JDBCなどのインタフェースが標準で付いていますので、必要に応じてインストールしてください。(筆者はPerl用以外は使ったことがありません)

1999/7/20追加:
Perl 5.005_57の環境でインストールしたところ、make中にundeclaredエラーが発生しました。PostgreSQL 6.5時点で付属しているPerlインタフェース(pgsql_perl 1.8.0)はPerl 5.005に対応していないようです。Perl 5.004を使用してください。Perlのバージョンはperl -vで確認できます。

2000/2/3追加:
おそらくPerl 5.005の問題は修正されたようです。Perl 5.005_03 + PostgreSQL 6.5.3の組み合わせは問題ありませんでした。

設定

デフォルトではlocalhost以外からのアクセスは禁止されています。アクセス制御を設定するには、/usr/local/pgsql/data/pg_hba.confを編集します。今回はlocalhost以外からはアクセスしないため、設定しませんでした。

以上でインストールと設定は完了ですが、PostgreSQLを使用するユーザーは、~/.profileなどで環境変数PATHとMANPATHの設定をしておくと良いでしょう。以下はbash(sh系)シェルの場合の例です。

export PATH=$PATH:/usr/local/pgsql/bin
export MANPATH=$MANPATH:/usr/local/pgsql/man

さらに、/etc/ld.so.confに/usr/local/pgsql/libを追加して、ldconfigします。

# echo '/usr/local/pgsql/lib' >> /etc/ld.so.conf
# ldconfig
# exit

あとは、createuserでユーザーを作成し、createdbでデータベースを作ります。データベースはとりあえず、ユーザー名と同じ物を作っておきます。

[postgres]$ createuser miyamae

[postgres]$  createdb miyamae

テーブルの作成等は、psqlでSQLを発行して行います。

[postgres]$  psql

自動起動の設定(Slackware)

OSブート時に自動的に起動するように設定します。この設定方法はOSによって異なります。ここではSlackware Linuxでの例です。

/etc/rc.d/rc.localに以下を追加します。postgresアカウントの権限でpostmasterを起動しなければいけないところがポイントです。

# Start PostgreSQL
su postgres -c "/usr/local/pgsql/bin/postmaster -D/usr/local/pgsql/data -S >> /usr/local/pgsql/server.log"

自動起動の設定(RedHat)

RedHat系の場合は、Slackwareと同じやり方でもいいのですが、以下のようにするのが標準です。

起動用スクリプト/etc/rc.d/init.d/pgsqlを作成します。パーミッションを755に設定します。内容は以下の通りです。

#!/bin/sh

. /etc/rc.d/init.d/functions

[ -f /usr/local/pgsql/bin/postmaster ] || exit 0

case "$1" in
  start)
        echo -n "Starting PostgreSQL server: "
        su postgres -c "/usr/local/pgsql/bin/postmaster -D/usr/local/pgsql/data -S"
        echo
        ;;
  stop)
        echo -n "Stopping PostgreSQL server: "
        killproc postmaster
        echo
        ;;
  status)
        status postmaster
        ;;
  *)
        echo "Usage: $0 {start|stop|status}"
        exit 1
esac

このスクリプトを自動起動するように各ランレベル用のディレクトリにシンボリックリンクを設定します。

$ su
# cd /etc/rc.d/rc0.d
# ln -s ../init.d/pgsql K100pgsql
# cd /etc/rc.d/rc1.d
# ln -s ../init.d/pgsql K100pgsql
# cd /etc/rc.d/rc2.d
# ln -s ../init.d/pgsql S100pgsql
# cd /etc/rc.d/rc3.d
# ln -s ../init.d/pgsql S100pgsql
# cd /etc/rc.d/rc4.d
# ln -s ../init.d/pgsql S100pgsql
# cd /etc/rc.d/rc5.d
# ln -s ../init.d/pgsql S100pgsql
# cd /etc/rc.d/rc6.d
# ln -s ../init.d/pgsql K100pgsql