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 がちゃんと利用出来るかは、また後日・・・
|
|