rss_stock.cgi ( io 氏作) その2

多分でたらめなやり方なのでしょうが、我流で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本にはそんな解説無かったしなぁ。

コメント

Comment spam is annoying.

There has been an increase in comment spam, but we decline it. It’s pointless because we use Akismet to block spam comments. Spam comments will not be posted.

コメントスパムが増えていますがお断りします。akismetでスパムコメントを弾いているので無意味です。スパムコメントは掲載されません。

ブロックしたスパム

DMM広告

タイトルとURLをコピーしました