zerosp.blog > Web Programming > 2006/01/29 20:37 >

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

はい。以上を持ちましてインストールは終了です。もっと簡単な方法があったりして。。。まぁ、ぐぐっても日本語でこのエラーに関して書いているサイトがなかったようなので書いてみました。

投稿日 2006-01-29 20:37

当サイトのコメントとトラックバックの扱いについて。

スパム対策のため認証制となっています。受け取ったコメント、トラックバックは一旦保留扱いとなり管理人が許可したものだけ表示されます。

トラックバック

  • Active PerlでXML::LibXMLインストールメモのトラックバックURL

コメント

コメントフォーム