XML::Parserがインストールできない

XML::Parserが必要になって、CPANからソースをダウンロード、インストールを試みましたがうまくいかない。

expatをインストール

XML::Parserにはexpatが必要。これは何の苦も無くインストールできる。ソースはhttp://sourceforge.net/projects/expat/にあります。ソースを展開後、configure,make。

$ /usr/local/bin/tar -zxvf ./expat-2.0.1.tar.gz
$ cd expat-2.0.1
$ ./configure
$ /usr/local/bin/make
# /usr/local/bin/make install

XML::Parseをインストール

ソースはCPANで検索すればすぐ見つかります。展開後、Makefile.PLを起動。expatはデフォルトでは/usr/local以下にインストールされるので、それをMakefile.PLの引数で指定します。

$ /usr/local/bin/tar -zxvf XML-Parser-2.36.tar.gz
$ cd XML-Parser-2.36
$ perl Makefile.PL EXPATLIBPATH=/usr/local/lib EXPATINCPATH=/usr/local/include
Checking if your kit is complete...
Looks good
Warning: prerequisite LWP failed to load: Can't locate LWP.pm in @INC (@INC contains: /usr/perl5/5.6.1/lib/sun4-solaris-64int /usr/perl5/5.6.1/lib /usr/perl5/site_perl/5.6.1/sun4-solaris-64int /usr/perl5/site_perl/5.6.1 /usr/perl5/site_perl /usr/perl5/vendor_perl/5.6.1/sun4-solaris-64int /usr/perl5/vendor_perl/5.6.1 /usr/perl5/vendor_perl .) at (eval 4) line 3.
Writing Makefile for XML::Parser::Expat
Writing Makefile for XML::Parser

早速makeする。

$ /usr/local/bin/make
(中略)
/usr/bin/perl -I/usr/perl5/5.6.1/lib/sun4-solaris-64int -I/usr/perl5/5.6.1/lib /usr/perl5/5.6.1/lib/ExtUtils/xsubpp -noprototypes -typemap /usr/perl5/5.6.1/lib/ExtUtils/typemap -typemap typemap Expat.xs > Expat.xsc && mv Expat.xsc Expat.c
cc -c -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -xO3 -xdepend   -DVERSION=\"2.36\" -DXS_VERSION=\"2.36\" -KPIC -I/usr/perl5/5.6.1/lib/sun4-solaris-64int/CORE  Expat.c
make[1]: cc: Command not found
make[1]: *** [Expat.o] Error 127
make[1]: Leaving directory `/export/home/hoge/CPAN/XML-Parser-2.36/Expat'
make: *** [subdirs] Error 2
$

サブディレクトリのExpatのMakefileに'cc'がないっていっています。確かにそこのMakefileを除くとCCが"cc"と定義されています。

# They may have been overridden via Makefile.PL or on the command line
AR = ar
CC = cc
CCCDLFLAGS = -KPIC
CCDLFLAGS = -R /usr/perl5/5.6.1/lib/sun4-solaris-64int/CORE
DLEXT = so
DLSRC = dl_dlopen.xs
LD = cc
LDDLFLAGS = -G

XML-Parser-2.36直下のMakefileもCC,LDがccになっています。じゃ、CCとLDもMakefile.PLの引数に指定してあげよう。

$ perl Makefile.PL EXPATLIBPATH=/usr/local/lib EXPA
TINCPATH=/usr/local/include CC=/usr/local/bin/gcc LD=/usr/ccs/bin/ld
arning: prerequisite LWP failed to load: Can't locate LWP.pm in @INC (@INC contains: /usr/perl5/5.6.1/lib/sun4-solaris-64int /usr/perl5/5.6.1/lib /usr/perl5/site_perl/5.6.1/sun4-solaris-64int /usr/perl5/site_perl/5.6.1 /usr/perl5/site_perl /usr/perl5/vendor_perl/5.6.1/sun4-solaris-64int /usr/perl5/vendor_perl/5.6.1 /usr/perl5/vendor_perl .) at (eval 4) line 3.
Writing Makefile for XML::Parser::Expat
Writing Makefile for XML::Parser

これが終了した段階でXML-Parser-2.36/Makefileをチェック。CCとLDの定義が意図したもの(/usr/local/bin/gcc,/usr/ccs/bin)になっていることを確認。makeしてみる。

$ /usr/local/bin/make
make[1]: Entering directory `/export/home/hoge/CPAN/XML-Parser-2.36/Expat'
cc -c -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -xO3 -xdepend   -DVERSION=\"2.36\" -DXS_VERSION=\"2.36\" -KPIC -I/usr/perl5/5.6.1/lib/sun4-solaris-64int/CORE  Expat.c
make[1]: cc: Command not found
make[1]: *** [Expat.o] Error 127
make[1]: Leaving directory `/export/home/hoge/CPAN/XML-Parser-2.36/Expat'
make: *** [subdirs] Error 2

同じ結果ですね。XML-Parser-2.36/Expat/Makefileを見ると、CCとLDが'cc'になっています。うーん。ccが見えればいいんだろってことでリンクをはる。

# ln -s /usr/local/bin/gcc /usr/local/c
$ /usr/local/bin/make
(中略)
cc -c -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -xO3 -xdepend   -DVERSION=\"2.36\" -DXS_VERSION=\"2.36\" -KPIC -I/usr/perl5/5.6.1/lib/sun4-solaris-64int/CORE  Expat.c
cc: unrecognized option '-KPIC'
cc: language depend not recognized
cc: language depend not recognized
cc: Expat.c: linker input file unused because linking not done
Running Mkbootstrap for XML::Parser::Expat ()
chmod 644 Expat.bs
rm -f ../blib/arch/auto/XML/Parser/Expat/Expat.so
LD_RUN_PATH="/usr/local/lib" cc  -G Expat.o  -o ../blib/arch/auto/XML/Parser/Expat/Expat.so   -L/usr/local/lib -lexpat
cc: Expat.o: No such file or directory
make[1]: *** [../blib/arch/auto/XML/Parser/Expat/Expat.so] Error 1
make[1]: Leaving directory `/export/home/hoge/CPAN/XML-Parser-2.36/Expat'
make: *** [subdirs] Error 2

はぁ、今度はなにかオプションが不正だっていってるなぁ。。来週にしよう。
すっかり根性なしになってしまった。