PostgreSQL (Data Base Management System)

[ 戻る | トップページに戻る ]

概要

PostgreSQL とは、SQL92 サブセットに準拠したデータベースシステム。 強力なトランザクション処理機能を持ち、数千万件、数 G バイトのデータを 難なく扱うことができる。

URL

http://www.postgresql.org/ (Official Site)
http://ring.riken.go.jp/archives/misc/db/postgresql-jp/
(Mirror) http://www.net-newbie.com/postgres/psqlj.html (psql 日本語化パッチ)

インストール環境

Slackware 7.0 (Kernel 2.2.14 + glibc 2.1.2)
Plamo Linux 2.2.1 (Kernel 2.2.19 + glibc 2.2)

必要なもの

gcc (2.7.2.x or 2.95.x 以降), GNU make (3.76.1 以降), gzip, ANT (Optional), JDK (Optional)

バージョン

7.0.2, 7.1.3, 7.3.2

インストール手順 (7.0.2)

まずは PostgreSQL スーパーユーザ用のアカウント (postgres) を作成し、 .bash_profile (使用する Shell によって適宜読み替えること) に以下のエントリを追加しておく。
(参考: Software Design 誌 2000/06 号)
PATH="$PATH":/usr/local/pgsql/bin
PG=/usr/local/pgsql
export PGLIB=$PG
export PGDATA=$PG/data
export MANPATH="$MANPATH":$PG/man
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH":"$PGLIB"

まずはインストールディレクトリを作っておく。
$ su
# mkdir /usr/local/pgsql
# chown postgres:users /usr/local/pgsql
# exit

では、コンパイル。以下の作業は基本的にすべて postgres ユーザで行う。
$ su postgres
$ tar xvfz postgresql-7.0.2.tar.gz
$ cd postgresql-7.0.2/src
$ ./configure --enable-multibyte=EUC_JP --enable-locale
$ make
$ make install
$ cd ../doc
$ make install
$ initdb
initdb: pg_encoding failed

Perhaps you did not configure PostgreSQL for multibyte support or
the program was not successfully installed.

おろ? configure オプションを変えて、やり直してみる。
$ ../src
$ make distclean
$ ./configure --enable-multibyte --enable-locale
$ make
$ make install
$ initdb
initdb: pg_encoding failed

Perhaps you did not configure PostgreSQL for multibyte support or
the program was not successfully installed.

ダメ。おんなじ。ふと思い付いて...
$ su - postgres
$ initdb
initdb does not find the file '/usr/local/pgsql/local1_template1.bki.source'.
This means you have a corrupted installation or identified the
wrong directory with the --pglib invocation option.

ちょっと進展。今までは su postgres した状態でやっていたのが敗因だったらしい。 が、まだ問題は残っている。むう。
調べてみると、local1_template1.bki.source は /usr/local/pgsql/lib にインストールされている。 上記エラーメッセージから考えるに PGLIB 環境変数は /usr/local/pgsql/lib になっていないといけないのでは...
PATH="$PATH":/usr/local/pgsql/bin
PG=/usr/local/pgsql
export PGLIB=$PG/lib
                ~~~~ 追加
export PGDATA=$PG/data
export MANPATH="$MANPATH":$PG/man
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH":"$PGLIB"

と修正してからやってみると... BINGO! うう、SD 2000//6 記事の嘘つき〜。(^^;
$ . .bash_profile
$ initdb
This database system will be initialized with username "postgres".
This user will own all the data files and must also own the server process.

Creating database system directory /usr/local/pgsql/data
Creating database system directory /usr/local/pgsql/data/base
Creating database XLOG directory /usr/local/pgsql/data/pg_xlog
Creating template database in /usr/local/pgsql/data/base/template1
Creating global relations in /usr/local/pgsql/data/base
Adding template1 database to pg_database

Creating view pg_user.
Creating view pg_rules.
Creating view pg_views.
Creating view pg_tables.
Creating view pg_indexes.
Loading pg_description.
Vacuuming database.

Success. You can now start the database server using:

        /usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data
or
        /usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data start

では、データベースサーバの起動。
$ pg_ctl -w start
Waiting for postmaster starting up..DEBUG:  Data Base System is starting up at Wed Sep 20 13:25:10 2000
DEBUG:  Data Base System was shut down at Wed Sep 20 13:20:47 2000
The Data Base System is starting up
.DEBUG:  Data Base System is in production state at Wed Sep 20 13:25:10 2000
done.
postmaster successfully started up.

最後 (?) にテストを実行。
$ cd postgresql-7.0.2/src/test/regress
$ make all runtest

うーむ。./regress.out を見ると、以下の項目がエラーとなっていた。いいのかな? とりあえず動作には問題なし。
=============== dropping old regression database...   =================
ERROR:  DROP DATABASE: Database "regression" does not exist
dropdb: database removal failed
int8 .. failed
numeric .. failed
select_implicit .. failed
select_having .. failed
select_views .. failed
rules .. failed

インストール手順 (7.1.3)

PostgreSQL スーパーユーザ用のアカウント (postgres) を作成するところまでは、 7.0.2 の記述を参照のこと。
また、アップデートに際してインストールディレクトリを削除 (必要に応じてバックアップなど) しておく。
$ su
# mv /usr/local/pgsql /usr/local/pgsql.7.0.2
# mkdir /usr/local/pgsql
# chwon postgres:users /usr/local/pgsql
# exit

では、コンパイル。以下の作業は基本的にすべて postgres ユーザで行う。 なお、何時からか (7.1 以降?) configure スクリプトは ./src ではなく、 ソースを展開したディレクトリ直下に置かれるようになっているので注意。
$ su - postgres
$ tar xvfz postgresql-7.1.3.tar.gz
$ cd postgresql-7.1.3
$ gzip -dc jumbo-20010914.patch.gz | patch -p1
$ gzip -dc psqlj-7.1.2.diff.gz | patch -p1      <--- psql 日本語化パッチ
$ ./configure --enable-multibyte=EUC_JP --enable-unicode-conversion --with-perl \
              --with-java --with-openssl --enable-odbc --enable-syslog
(snip)
checking whether to build Java/JDBC tools... yes
checking for ant... no
checking for ant.sh... no
checking for ant.bat... no
configure: error: Ant is required to build Java components

むう。ANTJDK が必要らしい。それらをインストールしてからやり直し。
$ ./configure --enable-multibyte=EUC_JP --enable-unicode-conversion --with-perl \
              --with-java --with-openssl --enable-odbc --enable-syslog
$ make
$ make check
(snip)
======================
 All 76 tests passed. 
======================
(snip)
$ make install
$ make install-all-headers
(snip)
make[4]: Leaving directory `/usr/local/src/postgresql-7.1.3/src/interfaces/perl5'
*****
* Skipping the installation of the Perl module for lack of permissions.
* To install it, change to the directory /usr/local/src/postgresql-7.1.3/src/interfaces/perl5,
* become the appropriate user, and do `make install'.
*****
(snip)
$ cd contrib/pgbench       <--- ベンチマークツールのインストール
$ make install

なんで lack of permissions なんだろう? 当該ディレクトリにはちゃんとパーミッションあるのだが...。 まあ、いいや。どーせ perl は使わないし。
データベースを初期化し、バックエンドを起動しておしまい。
(/etc/rc.d からの起動スクリプトには .../postgresql-7.1.3/contrib/start-scripts/linux を利用するとよい) 。
$ initdb
$ /usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile start

インストール手順 (7.3.2)

まずはデータベースのバックアップ。
$ su - postgres
$ pg_dump <データベース名> > <出力ファイル名>

次に、動作中の postmaster を停止 (postgres ユーザで実行) 。
$ /usr/local/pgsql/bin/pg_ctl stop -D /usr/local/pgsql/data -s -m fast

インストールディレクトリをきれいに。
$ su
# cd /usr/local
# mv pgsql pgsql.old
# mkdir -p pgsql/data
# chown -R postgres:postgres pgsql
# exit

では、インストール開始 (postgres ユーザで実行) 。特に問題なし。
$ tar xvfz postgresql-7.3.2.tar.gz
$ cd postgresql-7.3.2
$ ./configure --with-java --with-openssl

$ make
$ make check
(snip)
======================
 All 89 tests passed. 
======================

rm regress.o
make[2]: 出ます ディレクトリ `/usr/local/src/postgresql-7.3.2/src/test/regress'
make[1]: 出ます ディレクトリ `/usr/local/src/postgresql-7.3.2/src/test'

$ make install
$ make install-all-headers
$ initdb --encoding=EUC_JP --no-locale
$ /usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile start

[ 戻る | トップページに戻る ]