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