[pgsql-jp: 30733] Re: pgperl on MacOSX

sugita @ sra.co.jp sugita @ sra.co.jp
2003年 8月 9日 (土) 02:52:58 JST


  杉田です。

From: ETO Hirofumi <etoh @ bunroku.cc.saga-u.ac.jp>
Subject: [pgsql-jp: 30731] Re: pgperl on MacOSX
Date: Fri, 08 Aug 2003 19:01:32 +0900 (JST)

;;; From: sugita @ sra.co.jp
;;; Subject: [pgsql-jp: 30728] Re: pgperl on MacOSX
;;; Date: Fri, 08 Aug 2003 11:33:05 +0900 (JST)
;;; 
;;; >   pgperl 2.0.2 を持って来て、Mac OS X 10.2.6 で以下のコンフィギュレーションの
;;; > もので試してみると README の手順でインストールして動きました。
;;; > 
;;; >     CFLAGS=-O2 ./configure                  \
;;; > 	--prefix=/opt/pgsql/7.3.3           \
;;; > 	--with-perl                         \
;;; > 	--with-tcl                          \
;;; > 	--without-tk                        \
;;; > 	--enable-integer-datetimes

  オプション --enable-integer-datetimes を指定すると、PostgreSQL 7.3.{0..4} で
は以下のように入力値の範囲チェックにバグがあります。7.4beta1 では修正されてい
ます。

    =# create table test (d timestamp);
    CREATE TABLE
    =# insert into test values ('294900-01-01 00:00:00');
    INSERT 5117232 1
    =# select * from test;
    ERROR:  Unable to format timestamp; internal coding error
    =# 

;;; さっそく私もソースから PostgreSQL を入れ直す事にしました。
;;; 事前に、readline-4.2a+jpatch と gettext-0.12.1 をインストールしました。

  readline-4.1+i18n に dylib 用修正をしたもの使っています。gettext-0.12.1 は試
した事がないので PostgreSQL 7.3.4 に変更しつつ入れてみました。

;;; PostgreSQL は以下のコンフィギュレーションです。
;;; 
;;; CFLAGS=-O2 \
;;;         ./configure  \
;;;         --with-perl \
;;;         --enable-nls=ja \
;;;         --enable-integer-datetimes

    CFLAGS=-O2 ./configure                  \
	--prefix=/opt/pgsql/7.3.4           \
	--with-perl                         \
	--with-tcl                          \
	--without-tk                        \
	--enable-nls=ja                     \
	--enable-integer-datetimes

と同様にしてみました。

;;; 今回は SSL を有効にしなかったので、これは必要なかったのですが、make test 
;;; で gettext 関連の symbol が見つからないとエラーが出ました。
;;; 
;;; 上記のように setenv POSTGRES_LIB "/usr/local/pgsql/lib -lintl" や
;;; setenv POSTGRES_LIB "/usr/local/lib -lintl" などとやってみたのですがうま
;;; くいかず、結局直接 Makefile を以下のように編集して make しました。
;;; 
;;; - EXTRALIBS = -L/usr/local/pgsql/lib -lpq
;;; - LDLOADLIBS = -L/usr/local/pgsql/lib -lpq
;;; - EXTRALIBS = -L/usr/local/pgsql/lib -lpq -L/usr/local/lib -lintl
;;; - LDLOADLIBS = -L/usr/local/pgsql/lib -lpq -L/usr/local/lib -lintl

  同じくエラーとなりました。このようにしないと、make test、つまりは、use Pg; 
で gettext の symbol がないとエラーになってしまうので、pgperl スクリプトが動き
ません。

;;; もっとエレガントな方法あるのかも知れませんね、、、

  Makefile.PL で、PostgreSQL のコンパイル条件を取り込んでないからですね。
Makefile.PL を書き換えるのが良さそうです。


Kenji Sugita                                      



pgsql-jp メーリングリストの案内