もう適当なところからソースアーカイブを持ってくるのですよ。
> gzcat postgresql-8.0.3.tar.gz | tar xvf - > cd postgresql-8.0.3 > setenv LD_LIBRARY_PATH "/usr/local/lib:/opt/sfw/lib:/usr/sfw/lib:/usr/lib:/lib" ↑ /opt/sfw/lib と /usr/sfw/lib を入れないと conftest の時にこけるのですよ。 以後 ~/.cshrc にぶち込むのですよ。 > ./configure --with-includes=/opt/sfw/include:/usr/sfw/include --with-libraries=/opt/sfw/lib:/usr/sfw/lib --with-perl --with-openssl CFLAGS='-O2 -pipe -mcpu=v9'
このまま gmake すると
ld: 重大なエラー: 割り当て可能ですが、書き込めないセクションに対して再配置が残っています。と心ときめく素敵な告白を受けるので、 src/Makefile.shlib を以下のように編集するのですよ。
要は gcc -shared の挙動がおかしいらしいのですよ。
※参考: [Apache-Tech 393] Re: Apache2.0でのDSO モジュールの作成 、 Solaris9 いじり
> env LANG=C diff -u Makefile.shlib.orig Makefile.shlib --- Makefile.shlib.orig Sun Nov 21 06:13:04 2004 +++ Makefile.shlib Tue Aug 9 00:08:16 2005 @@ -177,7 +177,7 @@ ifeq ($(PORTNAME), solaris) ifeq ($(GCC), yes) - LINK.shared = $(CC) -shared + LINK.shared = $(LD) -G else LINK.shared = $(CC) -G endifそしたら gmake ですよ。
無事 gmake が終わったらインストールですよ。
> su Password: # tcsh # gmake install
各種設定は適当にすればいいのですよ。
# groupadd -g 5432 postgres # useradd -d /usr/local/pgsql/ -s /usr/bin/tcsh -u 5432 -g postgres postgres # mkdir /usr/local/pgsql/data # chown -R postgres:postgres /usr/local/pgsql
postgres ユーザーの .cshrc を作るのですよ。
動かすだけなら LD_LIBRARY_PATH の設定だけでもよかったりするのですよ。
# su - postgres $ tcsh > vi .cshrc set path = ($HOME/bin /usr/local/pgsql/bin /usr/ccs/bin /usr/local/bin /usr/local/sbin /opt/sfw/bin /opt/sfw/sbin /sbin /bin /usr/sbin /usr/bin /usr/ucb) setenv MANPATH "/usr/share/man:/usr/local/man:/usr/local/pgsql/man" setenv LD_LIBRARY_PATH "/usr/local/pgsql/lib:/usr/local/lib:/opt/sfw/lib:/usr/sfw/lib:/usr/lib:/lib" > source .cshrc
さぁー initdb ですよ起動確認ですよ。
initdb の -E (もしくは --encoding=) エンコーディングオプションを指定しないと、実行時の LANG 変数を見て自動で設定するみたいですよ。 ja_JP.eucJP なら EUC_JP 、みたいですよ。
でも恐いから決め打ちするのですよ。
> initdb -D /usr/local/pgsql/data -E EUC_JP > postmaster -D /usr/local/pgsql/data & > createdb test > psql testSQL のテストとか適当にするがいいのですよ。終わったら \q なのですよ。
起動スクリプトを配置するのですよ。
ソースアーカイブにそれなりのがあるらしいのでそれを使うのですよ。
> exit # cp ~/postgresql-8.0.3/contrib/start-scripts/linux /etc/init.d/postgresql # chmod +x /etc/init.d/postgresql # ln -s /etc/init.d/postgresql /etc/rc0.d/K02postgresql # ln -s /etc/init.d/postgresql /etc/rc1.d/K02postgresql # ln -s /etc/init.d/postgresql /etc/rc2.d/S98postgresql # ln -s /etc/init.d/postgresql /etc/rcS.d/K02postgresql # /etc/init.d/postgresql stop # /etc/init.d/postgresql start
とにかく躓いたらその時点の LD_LIBRARY_PATH を確認するのですよ。
参考リンク:
PostgreSQL-8.0.1 (Solaris 10 x86 サーバー構築記録)