PostgreSQL 6.4/6.5のインストール
バージョン | 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での例です。
# Start PostgreSQL su postgres -c "/usr/local/pgsql/bin/postmaster -D/usr/local/pgsql/data -S >> /usr/local/pgsql/server.log"
自動起動の設定(RedHat)
RedHat系の場合は、Slackwareと同じやり方でもいいのですが、以下のようにするのが標準です。
起動用スクリプト
#!/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