« 今日の雑記。まぁいつものことで。 | メイン | Solaris10 に wget 1.10 入れるのですよ。 »

Solaris10 に PostgreSQL 8.0.3 をインストールするメモなのですよ。

もう適当なところからソースアーカイブを持ってくるのですよ。

> 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 test
SQL のテストとか適当にするがいいのですよ。終わったら \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 サーバー構築記録)

トラックバック

このエントリーのトラックバックURL:
http://www.mass.dnsalias.com/cgi-bin/mt/mt-tb.cgi/671

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

About

2005年08月10日 00:52に投稿されたエントリーのページです。

ひとつ前の投稿は「今日の雑記。まぁいつものことで。」です。

次の投稿は「Solaris10 に wget 1.10 入れるのですよ。」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

Powered by
Movable Type 3.35