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