犬ターネット

cpanm で XML::Xerces を入れる

2013-12-19 perl

まず Xerces-C++ をソースインストールする。ちなみに XML::Xerces の最終バージョンが 2.7.0 なので、Xerces-C++ も 2.7.0 にしないと怒られる。

$ cd /usr/local/src/
$ wget http://archive.apache.org/dist/xml/xerces-c/source/xerces-c-src_2_7_0.tar.gz
$ tar -xzvf xerces-c-src_2_7_0.tar.gz
$ cd xerces-c-src_2_7_0/src/xercesc/
$ export XERCESCROOT=/usr/local/src/xerces-c-src_2_7_0
$ export XERCES_LIB=/usr/local/lib/
$ export XERCES_INCLUDE=/usr/local/include/
$ ./configure
$ make
$ make install

んで cpanm XML::Xerces すればOK。

$ cpanm XML::Xerces
--> Working on XML::Xerces
Fetching http://www.cpan.org/authors/id/J/JA/JASONS/XML-Xerces-2.7.0-0.tar.gz ... OK
Configuring XML-Xerces-2.7.0-0 ... OK
Building and testing XML-Xerces-v2.7.0-0 ... OK
Successfully installed XML-Xerces-v2.7.0-0
1 distribution installed

----[追記]----

このままだと encoding="EUC-JP" みたいな文書をパースするときにエラーになってしまう。EUC-JPな文書でもきちんとパースできるようにするには ICU というライブラリを使って Xerces-C++ をビルドする。

まずは ICU をインストール。ちょっと古めのやつを入れた。

$ cd /usr/local/src
$ wget ftp://ftp.software.ibm.com/software/globalization/icu/3.6/icu4c-3_6-src.tgz
$ tar -xzvf icu4c-3_6-src.tgz
$ cd icu/source
$ ./configure
$ make
$ make install

※make時に「error: #elif with no expression」が出る場合は該当箇所ソースの #elif#else に書き換えてもう一度 make すればOK。

次に Xerces-C++ をリビルドして再インストール。export ICUROOT=/usr/local/src/icu で環境変数設定した後で runConfigure を実行してから make する。

$ cd /usr/local/src/xerces-c-src_2_7_0/src/xercesc/
$ export XERCESCROOT=/usr/local/src/xerces-c-src_2_7_0
$ export XERCES_LIB=/usr/local/lib/
$ export XERCES_INCLUDE=/usr/local/include/
$ export ICUROOT=/usr/local/src/icu
$ ./runConfigure -plinux -cgcc -xg++ -minmem -nsocket -ticu -rpthread
$ gmake
$ gmake install

最後に XML::Xerces を再インストールして完了。

$ cpanm --reinstall XML::Xerces
--> Working on XML::Xerces
Fetching http://www.cpan.org/authors/id/J/JA/JASONS/XML-Xerces-2.7.0-0.tar.gz ... OK
Configuring XML-Xerces-2.7.0-0 ... OK
Building and testing XML-Xerces-v2.7.0-0 ... OK
Successfully reinstalled XML-Xerces-v2.7.0-0
1 distribution installed

オカルトってわけじゃないけど

急性蕁麻疹になった