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を消すのが吉だと思います。