Active PerlでXML::LibXMLインストールメモ
先日1年ちょっとぶりにパソコンをフォーマットしてまっさらにしてから、システムをリカバリしました。その後にPerlの開発環境を整えようとしたときに、XML::LibXMLをいれようと思ったら関連モジュールのXML::SAXのインストールのときにエラーログを吐き出しました。
==================== Install 'XML-SAX' version 0.13 in ActivePerl 5.8.7.815. ==================== Successfully installed XML-SAX version 0.13 in ActivePerl 5.8.7.815. could not find ParserDetails.ini in C:/Perl/site/lib/XML/SAX Unable to recognise encoding of this document at C:/Perl/site/lib/XML/SAX/PureP rl/EncodingDetect.pm line 96, <$__ANONIO__> line 74. Unable to recognise encoding of this document at C:/Perl/site/lib/XML/SAX/PureP rl/EncodingDetect.pm line 96, <$__ANONIO__> line 83. ==================== Install 'XML-NamespaceSupport' version 1.09 in ActivePerl 5.8.7.815. ==================== could not find ParserDetails.ini in C:/Perl/site/lib/XML/SAX Unable to recognise encoding of this document at C:/Perl/site/lib/XML/SAX/PureP rl/EncodingDetect.pm line 96, <CLIENT> line 89. Successfully installed XML-NamespaceSupport version 1.09 in ActivePerl 5.8.7.81 . ==================== Install 'XML-LibXML-Common' version 0.13 in ActivePerl 5.8.7.815. ==================== Successfully installed XML-LibXML-Common version 0.13 in ActivePerl 5.8.7.815. ==================== Install 'XML-LibXML' version 1.58 in ActivePerl 5.8.7.815. ==================== Successfully installed XML-LibXML version 1.58 in ActivePerl 5.8.7.815.
上のログはエラーのところだけ抜き出してます。Active PerlをインストールしてすぐにXML::LibXMLをインストールすると、関連モジュールとしてXML-NamespaceSupport、XML-SAXもいっしょにインストールされます。XML::LibXML自体は問題なく入るのですが、XML-NamespaceSupport、XML-SAXのところでエラーがでます。いろいろぐぐったんですがひかからなかったので解決法を自分の覚書程度に記事にします。前にインストールしたときはこんなエラーはでなかったと思うのでXML::SAXがVerアップしてからなのかな?
うちの実行環境は次のようになっています。
Windows 2000 SP4
AN HTTPD Ver. 1.42n
Active Perl 5.87 build 815
1. レポジトリを登録する。
Active Perlのモジュールインストールコマンド ppmでデフォルトで登録されているサーバは開発元のActiveState Package Repositoryしか登録されていません。XML::LibXMLはActiveStateのサーバーでは提供されていませんのでサーバを追加する必要があります。コマンドプロンプトを立ち上げて
C:\>ppm rep add "theoryx" "http://theoryx5.uwinnipeg.ca/ppms/"
登録が成功すると
Repositories:
[1] ActiveState Package Repository
[2] theoryx
といった具合に[2] theoryxが追加されます。
2. デフォルトのXML::SAXを削除する
C:\>ppm remove XML-SAX
ActivePerlに最初から入っているXML::SAXモジュールを削除します。そしてCPANのサイトに行ってXML::SAX 0.13をダウンロードします。ダウンロードしたXML-SAX-0.13.tar.gzを解凍してできたXML-SAX-0.13フォルダを、Perl\site\libにコピーします。
3. nmakeをダウンロード
先ほどcpanからダウンロードしたXML-SAX-0.13をPerlで利用できるようにするために展開してやる必要があります。UNIX系ならmakeというプログラムがあるんですが、Windows系ではマイクロソフトのnmake(ダウンロード)というプログラムを使用します。自己解凍ファイルになっていますので新規でフォルダを作成してその中で実行して下さい。実行するとNMAKE.ERR、NMAKE.EXE、README.TXTという3つのファイルが作成されます。その中の3つのファイルををPATHの通ったフォルダにコピーしてください。俺はC:\WINNTにコピーしました。
4. nmakeでXML::SAXをインストール
次にnmakeを使用してXML::SAXをインストールします。コマンドプロンプトを立ち上げて次のコマンドを実行します。
C:\Perl\site\lib\XML-SAX-0.13>perl makefile.pl
C:\Perl\site\lib\XML-SAX-0.13>nmake
C:\Perl\site\lib\XML-SAX-0.13>nmake test
C:\Perl\site\lib\XML-SAX-0.13>nmake install
コマンドプロンプトで以上の4つのコマンドを打つとインストールは完了です。先ほどコピーしたXML-SAX-0.13フォルダはもう必要ありませんので削除します。
5. パッチを当てる
XML::SAX 0.13はそのままだとバグもちなのでパッチを当てなければいけません。パッチファイルはActiveStateのMailingListのログにありました。そこから cdata.patch、encoding.patch、entities.patch の3つのファイルをダウンロードします。そしてPerl\site\lib\XMLフォルダにコピーします。次にWindowsはそのままだとpatchファイルを実行できないのでVectorからpatchをダウンロードします。ダウンロードしたpatch21.zipを解凍すると4つのファイルになりますのでその中のpatch.exeをC:\WINNTにコピーします。そしてコマンドプロンプトで次のコマンドを実行します。
C:\Perl\site\lib\XML>patch < cdata.patch
C:\Perl\site\lib\XML>patch < encoding.patch
C:\Perl\site\lib\XML>patch < entities.patch
これでパッチ当ては終了したので先ほどコピーしたcdata.patch、encoding.patch、entities.patchの3ファイルは削除します。
6. XML::LibXMLをインストール
最後にXML::LibXMLをppmを使ってインストールします。
C:\Perl\site\lib\XML>ppm install XML-LibXML
はい。以上を持ちましてインストールは終了です。もっと簡単な方法があったりして。。。まぁ、ぐぐっても日本語でこのエラーに関して書いているサイトがなかったようなので書いてみました。
コメント