多分でたらめなやり方なのでしょうが、我流でrss_stock.cgiが動きました。
やはり躓いていたのは、Perlのモジュールについての理解が足りないという事に尽きます。もちろん私にはコードが書けないのですが、誰かが作ったスクリプトを設置するしても、モジュールの理解は必須だなと痛感したのであります。
取り合えず手がかりとなるのは、Apacheが吐き出すエラーメッセージだけです。これを手がかりにどうやって対処して(無理矢理)動くようにした
か備忘録です。実際かなり地味な作業でした。しかし動いたという結果には満足しています。(出来れば詳しい方から指導を受けて裏付けをとりたいものです
ね)
下記のエラーが /var/log/httpd/error.log に記されていました。
少しずつ対処していきます。
Can't locate XML/RSS.pm in @INC (@INC contains:
/usr/lib/perl5/5.8.2/i386-linux-thread-multi /usr/lib/perl5/5.8.2
/usr/lib/perl5/site_perl/5.8.2/i386-linux-thread-multi
/usr/lib/perl5/site_perl/5.8.2 /usr/lib/perl5/site_perl
/usr/lib/perl5/vendor_perl/5.8.2/i386-linux-thread-multi
/usr/lib/perl5/vendor_perl/5.8.2 /usr/lib/perl5/vendor_perl
/usr/local/lib/site_perl/5.8.2/i386-linux-thread-multi
/usr/local/lib/site_perl/5.8.2 /usr/local/lib/site_perl .) at
/home/sasakis/public_html/rss_stock/rss_stock.cgi line 3.
早い話、XML/RSS.pmというモジュールがないというエラーだ。
このモジュールは、Vine Linux 3.2の場合、aptでインストール出来ることがわかった。
# apt-cache search XML::RSS
perl-XML-RSS – creates and updates RSS files with Perl
# apt-get install perl-XML-RSS
これで、XML/RSS.pmが見付からないというエラーは出なくなった。
Can't locate url_get.pm in @INC (@INC contains: /usr/lib/perl5/5.8.2/i386-linux-thread-multi
/usr/lib/perl5/5.8.2
/usr/lib/perl5/site_perl/5.8.2/i386-linux-thread-multi
/usr/lib/perl5/site_perl/5.8.2 /usr/lib/perl5/site_perl
/usr/lib/perl5/vendor_perl/5.8.2/i386-linux-thread-multi
/usr/lib/perl5/vendor_perl/5.8.2 /usr/lib/perl5/vendor_perl
/usr/local/lib/site_perl/5.8.2/i386-linux-thread-multi
/usr/local/lib/site_perl/5.8.2
/usr/local/lib/site_perl.) at
/home/sasakis/public_html/rss_stock/rss_stock.cgi line 4.
url_get.pmというモジュールがないと言うエラーである。
昨日のエントリーに記したよう、このモジュールは io 氏の自家製モジュールだと分かったので、ソースをそのままダウンロードして、url_get.pmとして保存した。
問題は保存場所だ。どこに保存したらPerlがモジュールとして認識してくれるのだろうか?
冷静に考えてみたら答えらしきものが、Apacheのエラーメッセージにあるではないか!おそらくこれがPerlが認識している、環境変数らしきものだと推測し、一番最後に書かれているPATHに保存してみた。結果はOK!、このエラーメッセージも出なくなった。
Can't locate LWP/Simple.pm in @INC (@INC contains: /usr/lib/perl5/5.8.2/i386-linux-thread-multi
/usr/lib/perl5/5.8.2
/usr/lib/perl5/site_perl/5.8.2/i386-linux-thread-multi
/usr/lib/perl5/site_perl/5.8.2 /usr/lib/perl5/site_perl
/usr/lib/perl5/vendor_perl/5.8.2/i386-linux-thread-multi
/usr/lib/perl5/vendor_perl/5.8.2 /usr/lib/perl5/vendor_perl
/usr/local/lib/site_perl/5.8.2/i386-linux-thread-multi
/usr/local/lib/site_perl/5.8.2 /usr/local/lib/site_perl .) at
/usr/local/lib/site_perl/url_get.pm line 21.
LWP/Simple.pmというモジュールがないというメッセージだ。
# apt-cache search LWP::Simple
perl-libwww-perl – libwww-perl module for perl
# apt-get install perl-libwww-perl
これでLWP/Simple.pmのエラーも記録されなくなった。
Can't locate Template/Extract.pm in @INC (@INC contains: /usr/lib/perl5/5.8.2/i386-linux-thread-multi
/usr/lib/perl5/5.8.2
/usr/lib/perl5/site_perl/5.8.2/i386-linux-thread-multi
/usr/lib/perl5/site_perl/5.8.2 /usr/lib/perl5/site_perl
/usr/lib/perl5/vendor_perl/5.8.2/i386-linux-thread-multi
/usr/lib/perl5/vendor_perl/5.8.2 /usr/lib/perl5/vendor_perl
/usr/local/lib/site_perl/5.8.2/i386-linux-thread-multi
/usr/local/lib/site_perl/5.8.2 /usr/local/lib/site_perl .) at
/home/sasakis/public_html/rss_stock/rss_stock.cgi line 5.
Template/Extract.pmというモジュールがないというエラーメッセージだ。
残念ながらaptでは見付けられなかった。あんまりやりたくないのだがCPANコンソールからインストールするしか無さそうだ。
# perl -MCPAN -e shell
cpan> install Template::Extract
cpan> quit
おおー、なんとかインストール出来たみたい。Template/Extract.pmのエラーも記録されなくなったぞ。
Can't locate Jcode.pm in @INC (@INC contains: /usr/lib/perl5/5.8.2/i386-linux-thread-multi
/usr/lib/perl5/5.8.2
/usr/lib/perl5/site_perl/5.8.2/i386-linux-thread-multi
/usr/lib/perl5/site_perl/5.8.2 /usr/lib/perl5/site_perl
/usr/lib/perl5/vendor_perl/5.8.2/i386-linux-thread-multi
/usr/lib/perl5/vendor_perl/5.8.2 /usr/lib/perl5/vendor_perl
/usr/local/lib/site_perl/5.8.2/i386-linux-thread-multi
/usr/local/lib/site_perl/5.8.2 /usr/local/lib/site_perl .) at
/home/sasakis/public_html/rss_stock/rss_stock.cgi line 6.
Jcode.pmというモジュールがないと言うエラーだ。Jcode.plってのは、KENTさんのCGIでもよく見掛けた覚えがある。これのモジュールはaptで手に入るのだろうか?
# apt-cache search jcode
jcode.pl – 日本語コード変換用Perlライブラリ
perl-Jcode – さまざまな日本語文字コードを Perl で扱うための Module
perlftlib – Perlftlib は、fonts.dir を作成するツールです。
# apt-get install perl-Jcode
パッケージリストを読みこんでいます… 完了
依存情報ツリーを作成しています… 完了
以下のパッケージが新たにインストールされます:
perl-Jcode
アップグレード: 0 個, 新規インストール: 1 個, 削除: 0 個, 保留: 0 個
165kB のアーカイブを取得する必要があります。
展開後に 546kB のディスク容量が追加消費されます。
取得:1 http://updates.vinelinux.org 3.2/i386/plus perl-Jcode 0.83-0vl4 [165kB]
165kB を 0s 秒で取得しました (379kB/s)
変更を適用しています…
準備中…
########################################### [100%]
1:perl-Jcode
########################################### [100%]
完了
見事にaptでインストール出来ちゃいました。もちろん
Jcode.pmのエラーもこれで解消。
てな訳でかなり強引な手順?で、解決させたのですが、url_get.pmの設置方法については、全く根拠が無いというか思い付きなので、本来はどうすべきか調べなくてはと思っています。
そもそも、Perlがモジュールを認識するPATHがどこかに定義されていると思うのですが(シェルの環境変数と同じように)、それが何処で定義されているか全く不明です。持ってるPerl本にはそんな解説無かったしなぁ。


コメント