俺だけのために Ore! Tips!

PostgreSQL 7.4.7 のインストール

2005年04月24日 作業

http://www2b.biglobe.ne.jp/~caco/pgpage/ からリンクを辿って ftp://ftp.sra.co.jp/pub/cmd/postgres/7.4.7/postgresql-7.4.7.tar.gz をダウンロード。

tomato# cd /usr/local/src
tomato# ls -la postgre*
-rw-r--r--  1 root  wheel  12483111 Aug  3  2004 postgresql-7.4.3.tar.gz
-rw-r--r--  1 root  wheel  12609828 Apr 18 15:38 postgresql-7.4.7.tar.gz
tomato# tar xvfz postgresql-7.4.7.tar.gz
<略>
postgresql-7.4.7/src/utils/Makefile
postgresql-7.4.7/src/utils/dllinit.c
postgresql-7.4.7/HISTORY
postgresql-7.4.7/INSTALL
tomato# cd postgresql-7.4.7

さて・・・と、インストールについてまとめたドキュメントを読む。

tomato# cat INSTALL

                    PostgreSQL Installation Instructions

   This document describes the installation of PostgreSQL from the source
   code distribution.
     __________________________________________________________________

                                Short Version

./configure
gmake
su
gmake install
adduser postgres
<略>
   SCO OpenServer x86 7.3.1 2002-12-11, Shibashish Satpathy
   (<shib@postmark.net>) 5.0.4, gcc; see also doc/FAQ_SCO
   SunOS 4 Sparc 7.2 2001-12-04, Tatsuo Ishii (<t-ishii@sra.co.jp>)

ドキュメントは一読することをお勧めする。中途半端なWebサイトの情報(例えばこのページ(笑))を鵜呑みにするくらいなら、INSTALL を呼んだ方が 100倍ためになりますぞ。

で、configure のオプションに、--enable-multibyte なんか無くなったことを知るわけだな。実は、7.3 以降の PostgreSQL では必要なくなってるんだね。(Web見ると、必ず configure のオプションに --enable-multibyte=EUC_JP をセットしろって書いてあるよね)

つーことで、--with-perl だけ付けて configure 実行!

tomato# ./configure --with-perl
checking build system type... i386-unknown-freebsd4.11
checking host system type... i386-unknown-freebsd4.11
checking which template to use... freebsd
<略>
checking for bison... no
configure: WARNING:
*** Without Bison you will not be able to build PostgreSQL from CVS or
*** change any of the parser definition files. You can obtain Bison from
*** a GNU mirror site. (If you are using the official distribution of
*** PostgreSQL then you do not need to worry about this because the Bison
*** output is pre-generated.) To use a different yacc program (possible,
*** but not recommended), set the environment variable YACC before running
*** 'configure'.
<略>
config.status: linking ./src/backend/port/dynloader/freebsd.h to src/include/dynloader.h
config.status: linking ./src/include/port/freebsd.h to src/include/pg_config_os.h
config.status: linking ./src/makefiles/Makefile.freebsd to src/Makefile.port

なんか途中で bison を入れえやあ・・・と言うてはるね。
bison って何?構文解析のためのパーサ(parser)生成プログラム?
・・・何、それ。(笑)ま、何かよくわからんが入れてみる。

packages の devel/bison-1.75_2 を /stand/sysinstall からインストール。

ありゃ、bison-1.75_2 と依存関係のある m4-1.4.1 のインストールが、
Add of package m4-1.4.1 aborted, error code 1 -
Please check the debug screen for more info.

って途中で終わるな。
既に、JDK をインストールした時に ports から m4-1.4.3 という最新バージョンが入ってるんで、古いバージョンのインストールに失敗するんだろうね。

tomato# pkg_info|grep m4
m4-1.4.3            GNU m4

仕方ないので、ports からインストールすることとする。

tomato# cd /usr/ports/devel/
tomato# ls -ld bison*
drwxr-xr-x  2 100  100  512 Apr 13 10:14 bison
drwxr-xr-x  2 100  100  512 Apr 13 10:14 bison-devel
drwxr-xr-x  3 100  100  512 Apr 13 10:14 bison1875
tomato# cd bison1875
tomato# ls -la
total 46
drwxr-xr-x     3 100  100    512 Apr 13 10:14 .
drwxr-xr-x  1530 100  100  33792 Apr 16 10:12 ..
-rw-r--r--     1 100  100   1220 Apr 13 10:14 Makefile
-rw-r--r--     1 100  100     97 Mar 31  2004 distinfo
drwxr-xr-x     2 100  100    512 Dec  6 10:11 files
-rw-r--r--     1 100  100   1110 Jan 17  2000 pkg-descr
-rw-r--r--     1 100  100    924 Nov 12 10:10 pkg-plist
tomato# make install clean
===>  Vulnerability check disabled, database not found
=> bison-1.875.tar.bz2 doesn't seem to exist in /usr/ports/distfiles/.
=> Attempting to fetch from http://ftp.gnu.org/gnu/bison/.
<略>
/bin/ln -sf /usr/local/bin/bison /usr/local/bin/bison1875
install-info --quiet /usr/local/info/bison.info /usr/local/info/dir
===>   Compressing manual pages for bison-1.875_4
===>   Registering installation for bison-1.875_4
===>  Cleaning for libiconv-1.9.2_1
===>  Cleaning for gettext-0.14.1
===>  Cleaning for libtool-1.3.5_2
===>  Cleaning for libtool-1.5.10_1
===>  Cleaning for m4-1.4.3
===>  Cleaning for expat-1.95.8
===>  Cleaning for bison-1.875_4
tomato# ls -la /usr/local/bin/bison
-r-xr-xr-x  1 root  wheel  188980 Apr 19 23:47 /usr/local/bin/bison

では、もう一度 PostgreSQL の configure を行う。

tomato# cd /usr/local/src/postgresql-7.4.7
tomato# pwd
/usr/local/src/postgresql-7.4.7
tomato# ./configure --with-perl
checking build system type... i386-unknown-freebsd4.11
checking host system type... i386-unknown-freebsd4.11
<略>
checking for bison... bison -y
<略>
config.status: linking ./src/backend/port/dynloader/freebsd.h to src/include/dynloader.h
config.status: linking ./src/include/port/freebsd.h to src/include/pg_config_os.h
config.status: linking ./src/makefiles/Makefile.freebsd to src/Makefile.port


今回は WARNING 出ず。
で、make(gmake)。

tomato# gmake
gmake -C doc all
gmake[1]: Entering directory `/usr/local/src/postgresql-7.4.7/doc'
gzip -d -c man.tar.gz | /usr/bin/tar xf -
for file in man1/*.1; do \
mv $file $file.bak && \
sed -e 's/\\fR(l)/\\fR(7)/' $file.bak >$file && \
rm -f $file.bak || exit; \
<略>
ln -s libplperl.so.0 libplperl.so
gmake[3]: Leaving directory `/usr/local/src/postgresql-7.4.7/src/pl/plperl'
gmake[2]: Leaving directory `/usr/local/src/postgresql-7.4.7/src/pl'
gmake[1]: Leaving directory `/usr/local/src/postgresql-7.4.7/src'
All of PostgreSQL successfully made. Ready to install.

「All of PostgreSQL successfully made. Ready to install.」と表示されているので、make 成功。続けて make install する。

tomato# gmake install
gmake -C doc install
gmake[1]: Entering directory `/usr/local/src/postgresql-7.4.7/doc'
mkdir /usr/local/pgsql
mkdir /usr/local/pgsql/doc
mkdir /usr/local/pgsql/doc/html
mkdir /usr/local/pgsql/man
<略>
gmake[3]: Leaving directory `/usr/local/src/postgresql-7.4.7/src/pl/plperl'
gmake[2]: Leaving directory `/usr/local/src/postgresql-7.4.7/src/pl'
gmake[1]: Leaving directory `/usr/local/src/postgresql-7.4.7/src'
PostgreSQL installation complete.


これで、PostgreSQL のインストールは終了したので、PostgreSQL のスーパーバイザーである postgres ユーザー(と、そのグループ)を作成する。

</etc/group>
postgres:*:128:

</etc/passwd>
postgres:*:128:128::0:0:postgres admin:/usr/local/pgsql:/bin/csh


現在、postgres ユーザーのホームディレクトリの所有者は、PostgreSQL をインストールした root になっているので、postgres ユーザーの所有に変更する。

tomato# ls -la /usr/local/pgsql
total 16
drwxr-xr-x   8 root  wheel   512 Apr 24 14:25 .
drwxr-xr-x  20 root  wheel   512 Apr 25 15:10 ..
drwxr-xr-x   2 root  wheel   512 Apr 24 14:25 bin
drwxr-xr-x   3 root  wheel   512 Apr 24 14:25 doc
drwxr-xr-x   5 root  wheel   512 Apr 24 14:25 include
drwxr-xr-x   2 root  wheel  1536 Apr 24 14:25 lib
drwxr-xr-x   4 root  wheel   512 Apr 24 14:25 man
drwxr-xr-x   2 root  wheel   512 Apr 24 14:25 share
tomato# chown -R postgres:postgres /usr/local/pgsql
tomato# ls -la /usr/local/pgsql
total 16
drwxr-xr-x   8 postgres  postgres   512 Apr 24 14:25 .
drwxr-xr-x  20 root      wheel      512 Apr 25 15:10 ..
drwxr-xr-x   2 postgres  postgres   512 Apr 24 14:25 bin
drwxr-xr-x   3 postgres  postgres   512 Apr 24 14:25 doc
drwxr-xr-x   5 postgres  postgres   512 Apr 24 14:25 include
drwxr-xr-x   2 postgres  postgres  1536 Apr 24 14:25 lib
drwxr-xr-x   4 postgres  postgres   512 Apr 24 14:25 man
drwxr-xr-x   2 postgres  postgres   512 Apr 24 14:25 share
tomato#

postgres ユーザーの環境変数の設定。
ログインシェルを csh にしているので、.cshrc に。(全部書くのは面倒なので shinoda のものをコピって作成)

tomato# cp ~shinoda/.cshrc /usr/local/pgsql
tomato# vi /usr/local/pgsql/.cshrc
<略>
setenv  JLESSCHARSET    japanese
setenv  LANG    ja_JP.eucJP

setenv  PATH    "$PATH":/usr/local/pgsql/bin
setenv  POSTGRES_HOME   /usr/local/pgsql
setenv  PGLIB   $POSTGRES_HOME/lib
setenv  PGDATA  $POSTGRES_HOME/data

if ($?prompt) then

<以下略>



postgres ユーザーになって、データベースクラスタ(DB が作成されるディレクトリ)を作成する。

tomato# su - postgres
%initdb --encoding=EUC_JP --no-locale
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.

The database cluster will be initialized with locale C.

creating directory /usr/local/pgsql/data... ok
creating directory /usr/local/pgsql/data/base... ok
creating directory /usr/local/pgsql/data/global... ok
<略>
setting privileges on built-in objects... ok
creating information schema... ok
vacuuming database template1... ok
copying template1 to template0... ok

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


PostgreSQL を起動し、データベースに接続できるか試してみる。

%ps -aux | grep postmaster
postgres   940  0.0  0.2   348  232  p0  R+   12:28PM   0:00.00 grep postmaster
%pg_ctl -w start
waiting for postmaster to start...LOG:  database system was shut down at 2005-04-29 12:26:47 JST
LOG:  checkpoint record is at 0/9B0B8C
LOG:  redo record is at 0/9B0B8C; undo record is at 0/0; shutdown TRUE
LOG:  next transaction ID: 536; next OID: 17142
LOG:  database system is ready
done
postmaster successfully started
%ps -aux | grep postmaster
postgres   951  0.0  3.1 13524 3768  p0  S    12:28PM   0:00.05 /usr/local/pgsql/bin/postmaster (postgres)
postgres   954  0.0  3.0  5272 3688  p0  S    12:28PM   0:00.01 postmaster: stats buffer process    (postgres)
postgres   956  0.0  3.0  4336 3680  p0  S    12:28PM   0:00.01 postmaster: stats collector process    (postgres)
postgres   959  0.0  0.2   348  232  p0  R+   12:29PM   0:00.00 grep postmaster
%psql -l
        List of databases
   Name    |  Owner   | Encoding
-----------+----------+----------
 template0 | postgres | EUC_JP
 template1 | postgres | EUC_JP
(2 rows)

ばっちりじゃん。


最後に、マシン再起動時の自動実行ファイルを作成しておくでぇ。

%exit
logout
tomato# cd /usr/local/etc/rc.d
tomato# ls -la
total 8
drwxr-xr-x  2 root  wheel  512 May  3 01:08 .
drwxr-xr-x  4 root  wheel  512 May  3 01:08 ..
-r-xr-xr-x  1 root  wheel  658 Dec  5  2003 canna.sh.sample
-r-xr-xr-x  1 root  wheel  437 Dec  6  2003 ja-elvis.sh
tomato# cat > postmaster.sh
#!/bin/sh

export POSTGRES_HOME=/usr/local/pgsql
export PGLIB=$POSTGRES_HOME/lib
export PGDATA=$POSTGRES_HOME/data
export LD_LIBRARY_PATH=$PGLIB

postmaster=/usr/local/pgsql/bin/postmaster
if [ -f $postmaster ]; then
        su postgres -c "$postmaster -S -i"
        echo -n ' postmaster'
fi

tomato# chmod 555 postmaster.sh
tomato# ls -la
total 10
drwxr-xr-x  2 root  wheel  512 May  7 00:29 .
drwxr-xr-x  4 root  wheel  512 May  3 01:08 ..
-r-xr-xr-x  1 root  wheel  658 Dec  5  2003 canna.sh.sample
-r-xr-xr-x  1 root  wheel  437 Dec  6  2003 ja-elvis.sh
-r-xr-xr-x  1 root  wheel  294 May  7 00:29 postmaster.sh


で、ほんとのほんとに最後に、www ユーザーで実行される CGI 等からも PostgreSQL の共有ライブラリを利用出来るように、共有ライブラリ検索のヒントファイルに /usr/local/pgsql/lib を検索パスとして登録します。これは、マシン起動時に自動実行されるように、/etc/rc.local に書いておきます。(多分、存在してないと思うから作れ)

tomato# ls -la /etc/rc.local
ls: /etc/rc.local: No such file or directory
tomato# cat > /etc/rc.local
/sbin/ldconfig -m /usr/local/pgsql/lib

これで、マシンをリブートして、postmaster が起動するかだけ、とりあえず確かめるのだ。

tomato# sync
tomato# sync
tomato# reboot

マシンが再起動されたら、ps でチェック。

%ps -aux|grep post
postgres   453  0.0  0.5 13556 2704  ??  Is   11:10AM   0:00.04 /usr/local/pgsql/bin/postmaster -S -
postgres   470  0.0  0.5  5304 2596  ??  I    11:10AM   0:00.00 postmaster: stats buffer process
postgres   472  0.0  0.5  4316 2596  ??  I    11:10AM   0:00.00 postmaster: stats collector process
shinoda    515  0.0  0.0   324  212  p0  R+   11:12AM   0:00.00 grep post

うむ。ちゃんと起動している。
CGI から PostgreSQL がちゃんと利用出来るかは、また後日・・・


前ページに戻る


Copyright (C) 2003-2004 S.Maaasamasa.