トップ  »  コンピュータガイド  »  データベース  »  PostgreSQL  »  "PostgreSQL7.2.3(Unix Source)"をLinuxにインストール

"PostgreSQL7.2.3(Unix Source)"をLinuxにインストール

この解説文は私が2002年当時にメモしていた内容を清書したものです。
なので少々情報が古いと思われるかもしれませんが、PostgreSQLのインストール手順的には現行バージョンとそれほど極端な違いはありません。
違いがある部分は極力その旨を記述していますが、漏れや間違いがあったらお知らせください。
この文章の元原稿を作った際にはRedHatLinux7.3にインストールして検証していましたが、今回この解説文として仕上げる前に再確認しようとRedHatLinux9にインストールしようとしたらコンパイルの時点でエラーが出て終了してしまいました。
RedHatLinux7.3の環境を作って再検証したところ問題ありませんでした。
コンパイラのバージョンの問題なのかな...。
原因はまだ確認していませんが、とりあえずはRedHatLinux9で問題なくインストール出来るのは"PostgreSQL7.3.x"以降のようです。(PostgreSQL7.3と7.3.18で検証しました)
業務上必要とか、マシンスペックが足りないとか、特に理由が無い限りなるべく最新安定バージョンを使うことをお奨めします。(^^ゞ

1. 必要なソフトウェアの確認

PostgreSQLのインストールには幾つかのソフトウェアを必要とします。
RedHatなどのLinux環境であれば恐らく追加の必要は無いと思われますが、一応確認して、入ってなければインストールしてください。

gzip
PostgreSQLのソースはgzipによって圧縮されていますので、展開する為にgzipが必要です。
GNU make
PostgreSQLのインストールはGNU makeでしか動作しないようです。(私は他のmakeについて未確認ですが...)
Linux系であれば多くの場合GNU makeがインストールされていると思われますが、BSD系の場合追加インストールの必要があるかもしれません。
バージョンは"3.76.1"以降が推奨されています。
GCC
PostgreSQLのインストールにはISO/ANSI C コンパイラが必要です。
他のコンパイラでも大丈夫のようですが、推奨されているのはGCC(GNU C コンパイラ)です。
[root@host root]# gmake --version  (gmakeのバージョンを確認)
GNU Make version 3.79.1, by Richard Stallman and Roland McGrath.
Built for i386-redhat-linux-gnu
Copyright (C) 1988, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 2000
        Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
 
Report bugs to <bug-make@gnu.org>.

[root@host root]#

2. PostgreSQLユーザアカウントの作成

PostgreSQL実行用(管理用)のユーザアカウントを作成します。
ユーザアカウント名は任意ですが、慣例的に「postgres」とされている事が多いようです。
セキュリティに対して神経を使う環境は別として、特に独自のアカウント名にする必要も無いので私もこれに従って「postgres」を使っています。

[root@host root]# useradd -c "PostgreSQL admin account" postgres (コメントは任意です)
[root@host root]# passwd postgres
Changing password for user postgres
New password:              (任意のパスワードを入力)
Retype new password:       (確認のための再入力)
passwd: all authentications updated successfully
[root@host root]#

3. PostgreSQL7.2.3のソースを入手する

PostgreSQLのソースはNPO法人 日本PostgreSQLユーザ会の「PostgreSQLのダウンロード」ページや、勿論PostgreSQL本家からもダウンロード可能です。
PostgreSQLの特徴」ページの「BSDライセンスに基づく無償提供」の項目でも触れたとおり、BSDライセンスに基づき無償で利用する事が出来ます。

上記サイトから"postgresql-7.2.3.tar.gz"をダウンロードします。
ダウンロードしたソースは慣例に従って"/usr/local/src"ディレクトリに保存します。

この元原稿を作成した頃にはPostgreSQL7.2シリーズも上記のダウンロードサイトからダウンロードできたと思うのですが、現在(2007/04/20時点)では過去のバージョンとして本家のFTPサーバに保管されているようです。
どうしても古いバージョンが使いたいという場合には「ftp://ftp-archives.postgresql.org/」からダウンロード可能です。

4. PostgreSQL7.2.3のソースを展開する

ソースを保存した"/usr/local/src"ディレクトリに移動して、展開(解凍)します。

[root@host root]# cd /usr/local/src
[root@host src]# tar zxvf postgresql-7.2.3.tar.gz
       (展開の実行画面が流れる)
                   :
                   :
[root@host src]#

5. configure

上記手順で展開(解凍)されたソースファイルは"/usr/local/src/postgresql-7.2.3"ディレクトリに展開されるので、そこへ移動してconfigureします。
PostgreSQLを日本語環境で利用する上で必要最低限のオプションは以下の通りです。

*1 --enable-multibyte=EUC_JP
マルチバイトサポートを有効にします。"=EUC-JP"はデフォルトで設定する文字エンコードを指定します。
指定できる文字コードセットは"SQL_ASCII"や"EUC-JP"、"UNICODE(UTF-8)"などありますが、"EUC-JP"を指定するのが無難かと思います。

ここで指定した文字エンコードは"createdb"コマンドやSQL文の"CREATE DATABASE"によって上書きする事が出来ます。
データベースの作成時に明示的に文字コードを指定されなかった場合には、このオプションで指定された文字エンコードが使用され、文字コードを指定してデータベースを作成した場合には作成時の指定が有効になります。

[root@host root]# cd postgresql-7.2.3
[root@host postgresql-7.2.3]# ./configure --enable-multibyte=EUC_JP     (*1)
       ("configure"の実行画面が流れる)
                   :
                   :
[root@host postgresql-7.2.3]#

今回は日本語を利用可能するオプションしか指定していません。
これら以外のオプションについてはご自身の目的に合わせて追加してください。

ロケールのサポート("--enable-locale")とマルチバイトサポート("--enable-multibyte")は"PostgreSQL7.3"からはデフォルトで有効になっています。
"--enable-multibyte=EUC-JP"のオプションを付けても無視され、SQL_ASCII(ASCII文字)で設定されます。
ですから、日本語を使用する場合には、必ず データベース領域の初期化(データベースクラスタの作成)の際かデータベースの作成時に明示的に文字コードを指定しなくてはいけません。

6. コンパイルとインストール

次に、コンパイルをします。
コンパイルには上記「1.必要なソフトウェアの確認」でも触れたとおり、"GNU make"を使わなくてはいけません。
RedHatLinuxなどでは標準で"GNU make"がインストールされていたりするので、普通に"make"コマンドを使っても実際には"GNU make"を使ってコンパイルされます。
今回は無用なトラブルを避けるため、明示的に"gmake"でコンパイルします。

[root@host postgresql-7.2.3]# gmake
       (コンパイルの実行画面が流れる)
                   :
                   :
All of PostgreSQL is successfully made. Ready to install.
[root@host postgresql-7.2.3]#

コンパイルには結構時間が掛かります。インストールするコンピュータの性能にも依りますが10分?数十分掛かります。
ちなみに、オライリーの解説書では「ここで休憩を取った方がよいかもしれません。」みたいな事が書かれておりました。(^^;

最後に"All of PostgreSQL is successfully made. Ready to install."と表示されればコンパイルは成功です。
続けて、インストールしましょう。
インストールが終わったらインストール先ディレクトリ以下の所有権(所有者)をユーザ"postgres"に変更します。

[root@host postgresql-7.2.3]# gmake install
       (インストールの実行画面が流れる)
                   :
                   :
Thank you for choosing PostgreSQL, the most advanced open source database
engine.

[root@host postgresql-7.2.3]# chown postgres.postgres -R /usr/local/pgsql
                             (↑所有権の変更)

7. 環境変数の設定

インストールが無事完了したら、PostgreSQLの利用を円滑にする為に環境変数を設定する事をお奨めします。
少なくともPostgreSQL管理者のユーザアカウント"postgres"には設定しておいた方が良いでしょう。
設定するには"/home/postgres/.bash_profile"ファイルに下記の設定内容を追加します。

[root@host postgresql-7.2.3]# vi /home/postgres/.bash_profile
PATH="$PATH":/usr/local/pgsql/bin
export POSTGRES_HOME=/usr/local/pgsql
export PGLIB=$POSTGRES_HOME/lib
export PGDATA=$POSTGRES_HOME/data
export MANPATH="$MANPATH":$POSTGRES_HOME/man
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH":$PGLIB

:wq
[root@host postgresql-7.2.3]# 

ユーザ"postgres"以外にもPostgreSQLを利用する場合で、そのユーザの環境変数も設定する場合も同様に"/home/{ユーザ名}/.bash_profile"に上記の設定をします。
また、システム全体として環境変数を設定する場合には、"/etc/profile"ファイルに上記の様に追記する事になります。
この場合はユーザ毎の設定は不要になります。

環境変数の変更内容を反映させる為に、環境変数を追加後ログインし直してください。

8. データベース領域の初期化(データベースクラスタの作成)

PostgreSQLの利用を開始する前には一度だけデータベース領域の初期化を行う必要があります。
"/usr/local/pgsql/data"(環境変数で設定した"$PGDATA")がデータベース領域にあたり、データベースクラスタと呼ばれています。
データベース領域の初期化を行うと、"/usr/local/pgsql/data"内にデータベースの雛形となるデータベース(template1)、設定ファイルなどが作成されます。

データベース領域の初期化(データベースクラスタの作成)は必ずPostgreSQL管理者のユーザアカウントで行います。

[root@host postgresql-7.2.3]# su - postgres
[postgres@host postgres]$ initdb
                   :
                   :
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 -l logfile start

[postgres@host postgres]$ 

ユーザ"postgres"の環境変数に上記手順「7. 環境変数の設定」の様な設定がされている場合、上記の様に"initdb"を実行するだけで環境変数に基づいてデータベース領域の初期化(データベースクラスタの作成)が行われます。
環境変数の設定をしていない場合は以下の様に全てフルパスで指定する必要があります。

[postgres@host postgres]$ /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
                   :
                   :
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 -l logfile start

[postgres@host postgres]$ 

上記手順「5. configure」でも触れたとおり、"PostgreSQL7.3"からはコンパイルの際のマルチバイトサポートの指定は"--enable-multibyte=EUC-JP"のオプションを付けても無視され、SQL_ASCII(ASCII文字)で設定されます。
"PostgreSQL7.3"以降のバージョンをお使いの場合は"initdb"に"-E EUC-JP"オプションを付けて実行する事をお奨めします。
ここで指定しておけば、データベースの作成時にうっかり文字コードの指定を忘れても、ASCII文字のデータベースを作ってしまう事は防げる筈です。

以上でデータベース領域の初期化(データベースクラスタの作成)が完了し、PostgreSQLを起動する準備は整いました。
ローカルで利用する分にはこのまま起動すれば利用可能になります。
但し、ネットワーク経由で接続したり、サーバマシンの起動時に自動で起動させるなど、実際的なPostgreSQLの利用には、まだ少々しておくべき事があります。
この辺りの事は次の「SysVスクリプトを使った自動起動の設定」、及び「クライアント認証の設定」の各ページをご参照ください。

トラックバック(0)

トラックバックURL: http://www.ezms.net/mt/mt-tb.cgi/14