[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 メーリングリストの案内