ClearSilverのPerlバインディングのインストール
ClearSilverは超高速なテンプレートエンジンです。
どのくらい速いかと言えば、id:spritlooseさんがベンチマーク(d:id:spiritloose:20060812)を取ってますので、参考にして下さい。
今日そのPerlバインディングをインストールする際にハマったのでメモ。
configure
--prefixオプションが結構曲者です。
# ./configure --prefix=/usr --disable-apache --disable-java --disable-csharp --enable-gettext
のように、
と言う感じでconfigureすると、Makefileのinstallターゲットは、
install: all ./mkinstalldirs $(DESTDIR)$(cs_includedir) ./mkinstalldirs $(DESTDIR)$(bindir) ./mkinstalldirs $(DESTDIR)$(libdir) ./mkinstalldirs $(DESTDIR)$(mandir)/man3 $(INSTALL) -m 644 ClearSilver.h $(DESTDIR)$(cs_includedir)/ $(INSTALL) -m 644 cs_config.h $(DESTDIR)$(cs_includedir)/ $(INSTALL) -m 644 man/man3/*.3 $(DESTDIR)$(mandir)/man3/ @for mdir in $(SUBDIRS); do \ if test -d $$mdir; then \ if test -f $$mdir/Makefile.PL -a ! -f $$mdir/Makefile; then \ cd $$mdir; $(PERL) Makefile.PL PREFIX=$(prefix); cd ..; \ fi; \ $(MAKE) -C $$mdir PREFIX=$(prefix) install; \ fi; \ done
となります。
良く見てみるとSUBDIRSのループ内でMakefile.PLを叩くんですが、PREFIXをconfigureで指定した値を使います。
ExtUtils::MakeMaker - PREFIX and LIB attributeを見るとPREFIXはそこをベースディレクトリとして、モジュールのインストールを行ってしまいますので、@INCで読める場所に行かない可能性があります。
少なくとも何も --prefix を指定しないと /usr/local がPREFIXになるので、/usr/local/lib/perl5 みたいなディレクトリ下にモジュールがインストールされると言う悲しいオチが待ってます。
prefixを指定するかconfigureの後にMakefileを直接編集するなりしないと駄目っす。
追記:マカ−の場合
Makefile中のPREFIXを消すのが吉だと思います。