また、「Can’t locate モジュール名 in @INC ...」というエラーメッセージもよく出ます。検索してみると、似たような現象についての書き込みなどはいくつか見つかるのですが、解決策まで記載されているところはありませんでした。その後もキーワードを様々入れ替えていろいろ検索してみたのですが、どうにも上手くいかず、こちらで皆さんのお知恵をお借りできればと思っております。PerlのXML関係のモジュールはインストールに手間がかかるとウェブ上や雑誌で見たことがあるのですが、そういうものなのでしょうか?それではよろしくお願いいたします。
まずXML::RSS系のモジュールインストールにはXML::Parserモジュールが必要です。
ただし、このモジュールのインストールには(OSの)expatライブラリの存在が必要です。
これはCPANインストールではなく、Linuxのrpmパッケージのインストールを行う必要があります。
使用OSはFedora Core 4ですので、yumかrpmコマンドで入れてください。
# rpm -qa | grep expat
expat-1.95.5-6
のように表示されればインストール済みですが、表示されなければ以下のようにインストールしてください。
# yum install expat
or
# rpm -ivh expat-1.95.5-6.i386.rpm
(バージョン/ファイル名はOSにより異なる)
「Can’t locate aaa.pm in @INC...」というエラーメッセージはPerl側でaaaモジュールが見つからないというメッセージですので、CPANインストールでinstall aaaとすれば入れられるはずです。aaa/bbb.pmがないといわれたらinstall aaa::bbbとしてください。
The XML C parser and toolkit of Gnome
XML::RSS::LibXML はその名の通り LibXML を使ってるので、libxml2 もインストールする必要があります。
パッケージでいれるなら libxml2 と libxml2-dev あたりかなと思います。
以下蛇足です。
テストなのですが、テストも人が書いてるコードで自動化してあるものなので、テストコードにバグがある、ということも時折あります。(XML::RSS::LibXML は大丈夫だと思いますが。) そういうときは、force install コマンドを使うと make test で失敗しても無理やりインストールできたりもします。
naoya さん(ですか!)、レスをいただきありがとうございます!
> パッケージでいれるなら libxml2 と libxml2-dev あたりかなと思います。
tetsuyasodo さんへのお返事に加えるべきでしたが、libxml2 もインストールしておりました。すみません。
> テストコードにバグがある、ということも時折あります。
教えていただいたとおり、cpan で force install コマンドを使ってみたところ、上でお知らせしたような Bad free() ... というメッセージが続いた後に make install に進み、install -- OK と出ました。perl の短いスクリプトで試してみたところ、問題なくモジュールを使用することができました。お答えいただいた tetsuyasodo さん、naoya さん、どうもありがとうございます!
今回は、「はてな」のなおやさんが執筆されたAPI関係の雑誌記事を見て取り組んでおりました。おかげさまで何とか先に進めそうです。「乗っかりはてな」をしていただいた匿名さんの方にも感謝します。同じような状況で困っておられるのかもしれないので、今回の情報が解決の糸口になればと思います。それではこれで質問を終了とさせていただきます。ありがとうございました。
tetsuyasodo さん、ありがとうございます。
お返事が遅れましてすみません。
モジュールには依存関係があるとのことで、それぞれのモジュールをインストールする過程で書き留めておいたものをまとめると、必ずしも正確ではありませんが以下のようになるようです。
XML::RSS::LibXML
Test::Manifest
XML::Parser
XML::LibXML::XPathContext
XML::LibXML
XML::LibXML::Common
XML::SAX
XML::NamespaceSupport
アドバイスいただいたように expatを入れたことにより、各モジュールのうち、本丸のXML::RSS::LibXML「以外」についてはインストールできたようです(確認のため cpan でinstall としてみますと、例えば XML::Parser is up to date. と出ます)。
ただ、cpan> install XML::RSS::LibXML としますと、Bad free() ignored (PERL CORE) at /root .cpan/build/XML-RSS-LibXML-0.09/blib/lib/XML/RSS/LibXML/LibXML/Parser.pm line 246 というメッセージが多数出ます。make testがうまくいっていないとのことです。cpan> install XML::RSS であれば、XML::RSS is up to date. と出るのですが・・・。
expatの他にもライブラリが必要なのでしょうか?何かお気づきの点などございましたらお知らせいただければと思います。よろしくお願いします。