![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
HTML::Embperlをインストールしてプログラムを作成したのですがエラーになってしまうのです!
OSはRed Hat Linux 8で
Perlはv5.8.0 built for i386-linux-thread-multiで
HTML::EmbperlはHTML-Embperl-1.2b4-2.i386.rpmです。
原因を特定するために次のとおり、いたって単純なプログラムを作成しました。
#!/usr/bin/perl -w
use strict;
use HTML::Embperl;
これを実行すると
Can't locate loadable object for module HTML::Embperl in @INC (@INC contains: /usr/lib/perl5/5.8.0/i386-linux-thread-multi /usr/lib/perl5/5.8.0 /usr/lib/perl5/site_perl/5.8.0/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.0 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.0/i386-linux-t
hread-multi /usr/lib/perl5/vendor_perl/5.8.0 /usr/lib/perl5/vendor_perl .) at ./try line 3
Compilation failed in require at ./try line 3.
BEGIN failed--compilation aborted at ./try line 3.
のように長々とエラーメッセージが出てしまいます。
$ ls -l /usr/lib/perl5/site_perl/HTML/Embperl.pm
-r--r--r-- 1 root root 39448 2月 15 1999 /usr/lib/perl5/site_perl/HTML/Embperl.pm
HTML::Embperlのインストール自体は成功していると思うのですが・・・
誰か、他に何をチェックすればいいか教えてください~
No.2ベストアンサー
- 回答日時:
一言「Read Documents」に尽きるようです.
RPMに過分な信頼をおいてはいけません.
RPMをパッケージした人の環境に激しく依存する可能性が高いですし,
そもそもパッケージした人がspecファイルを間違ったりしてたら
もう終わりです.実際いわゆる「野良RPM」だと結構あるわけです.
#ディストリ公認のものだとそういうことは案外少ないけど
#RedHat8っていまでもメンテナンスされてる?
で。。。CPANから直接ファイルを入手してきて
「きちんとインストールの手順書」を読みましたか?
それから,先にいれたRPM版をきちんとRPMの流儀にのっとって
削除しましたか?
同じモジュールを異なる方法でインストールして
整合がとれなくなると悲惨なことになるのはお分かりでしょうか?
とくにバージョンが異なっていることにお気づきですか?
#RPMはたぶん1.2b4でCPANは2.2.0,互換性がなくても不思議なくらい
#バージョンが違います.
#実際わざわざ2.0のReadmeに「1.xとの互換性」なんて項目があります
>このディレクトリーの中にEmbperl.pmがあったので
>このディレクトリーの名前をHTMLへ変更して/usr/lib/perl5/site_perlへ移動しました。
こんなことを手動でするようにどこかに書いてありましたか?
手作業でできるほど生半可なモジュールではないはずですよ.
実際,展開したディレクトリに install.podがあります
それを読みましたか?
perl Makefile.PL
make
make test
make install
この手順を踏めとかいてあるはずです.
それと。。。CPANからファイルを落としてくるのと
CPANモジュールを使うのは別物です.
CPANモジュールはPerlモジュール用のrpmとかaptみたいなものです.
依存関係を考慮して,自動でやってくれる優れものです.
使い方はCPANモジュールそのもののマニュアル
例えば,
perldoc cpan
をしてください.
kabaokabaさん、ご返信ありがとうございます。
RPMを過信してはいけないのですね。
現在レッドハット8がメンテされてるかどうかは知りませんが、私のレッドハットはCDからインストールしただけのヤツなのでノーメンテ版ですね・・・
とにかくRPMはCDに入ってるものに限って使用した方が無難ってことですね。
CPANで入手したファイルの手順書は読んでいないのです・・・。
RPMの流儀にのっとって削除するとはrpmコマンドを使用してアンインストールすることと認識してよいでしょうか。それならちゃんとやったのですが・・・。
INSTALL.podというのを見てみました。
そして予想はしていましたが日本語でないため、読むのは断念しました。
そこで、いつもの手段なのですが、良く分からないけど、ひとまず
perl Makefile.PL
make
make test
make install
を実行してみました。
そして、どうにかインストールできたようです。
しかし、これでもプログラムは動きませんでした。
今、思ったのですが
私がインストールしたのはEmbperl
だけど、私がインストールしたかったのはHTML::Embperlだったのでは!?
CPANを検索してみたら案の定EmbperlとHTML::Embperlが別々のファイルとして出てきました。
ですので今からEmbperlを消してHTML::Embperlを入れ直さないといけないのです。
インストール方法は教えていただいたとおり覚えました。
もしよければ削除方法も教えてもらえないでしょうか^^;
No.3
- 回答日時:
とりあえず。
。。>私のレッドハットはCDからインストールしただけのヤツなのでノーメンテ版ですね・・・
いや・・・そういうことではなくって。。。
外部公開サーバではないことと祈りつつ。。
本題.
>そして予想はしていましたが日本語でないため、読むのは断念しました。
手厳しいことをいうようですが,論外です.
高校程度の英文であるのが普通なので辞書を片手に読みましょう.
>もしよければ削除方法も教えてもらえないでしょうか^^;
やはり一言「Read Document」です.
ぐぐってもすぐにそれらしい情報に行き着きます.
cpan unistall
くらいはやってみてください.
kabaokabaさん、ご返信ありがとうございます。
これは手厳しいですね。
でもスミマセン、今回は読まずに導入させてください・・・
まだ外部には公開していませんので、見逃してください・・・
アンインストール方法についてネットで調べたのですが、これも断念してしまいました;;
その代わりに興味深いコマンドの情報を入手しました。
cpan2rpmというコマンドなのですが、
なんと、このコマンドはCPANのモジュールをRPM形式に変換してくれるそうです。
rpmの使い方ならまだ分かるので、これは私にはおあつらえ向きです。
このコマンドを使用してHTML::EmbperlのRPM化に成功しました。
しかし、rpmコマンドでこれをインストールしようとしたのですが、
足りないモジュールがありインストール出来ませんでした。
足りないモジュールをインストールするためにcpan2rpmコマンドを使用して、順次RPMを導入していったのですが、
中には、そのモジュールをインストールするためには更に、いくつかのファイルが足りず、
さらにそのファイルをインストールするためには、またさらに他の部品が足りず、というように階段状に、足りないものを次々報告され、
目的のHTML::Embperlをインストールためには、色々なモジュールをインストールする必要があり、気が遠くなってしまいました。
そう言うわけでcpan2rpmを使用してのHTML::Embperlのインストールは断念しました。
そして振り出しに戻りCPANから入手したHTML::Embperlをインストールすることにしました。
これはkabaokabaさんに教わったとおり
perl Makefile.PL
make
make test
make install
とやるだけで、あっという間にインストール出来てしまいました。
そして、私が作成したプログラムも無事動かすことが出来ました。
さて、残った問題は、誤ってインストールしてしまったEmbperlの削除です。
別に残しておいても問題無いとは思うのですが、不要なものはなるべく消したいですよね。
今使っているマシンは、つい最近テスト用にレッドハットを入れたばかりですので、
思い切ってレッドハットを入れ直しました^^
そういう訳で結局アンインストールの方法は探せませんでしたが、今回はこれでOKとします。
No.1
- 回答日時:
> Can't locate loadable object for module HTML::Embperl
というメッセージが出ているので、HTML::Embperlそのものではなく
それが呼び出しているモジュール(多分XS(C)でかかれたもの)が
見つからないのではないでしょうか?
CPANモジュールを使ってインストールしたならテストを行うので
インストールに成功したかどうかは一目瞭然なのですが、
> HTML::EmbperlはHTML-Embperl-1.2b4-2.i386.rpmです。
rpmで入れたときはどうかはわかりません。
いずれにしろインストールがきちんとできていないような気がするのですが、
なぜ成功したと思ったのでしょうか?
この回答への補足
sakusaker7さん、ご返信ありがとうございます。
なるほどHTML::Embperlが何か別のモジュールを呼んでいるけど、それが私のリナックスに入っていない可能性があるわけですね。
しかし私の過去の経験上、足りない部品があるなら、何が足りないのかエラーメッセージが教えてくれるはずなのです。
エラーに出てこない以上、私がHTML::Embperlを呼んで自力で探すことになるとは思うのですが、
その前にCPAN版を試したいと思います。
しかし私はRPM以外のソフトを入れた経験がほとんどないので、教えてほしいのです。
まずCPANでEmbperl-2.2.0.tar.gzを入手して
# tar -zxf Embperl-2.2.0.tar.gzを実行すると
Embperl-2.2.0というディレクトリーができあがります。
このディレクトリーの中にEmbperl.pmがあったので
このディレクトリーの名前をHTMLへ変更して/usr/lib/perl5/site_perlへ移動しました。
しかしこれだけではダメなようです。
プログラムを実行すると@INCにEmbperl/Syntax.pmがない旨のメッセージが表示されます。
それもそのはず、Embperl/Syntax.pmは
/usr/lib/perl5/site_perl
ではなく、その下の
/usr/lib/perl5/site_perl/HTML
に存在していたのです。
ですのでこのSyntax.pmの入ったEmbperlフォルダーを
/usr/lib/perl5/site_perlへコピーしたところ
今度はEmbperl.pmが@INCに存在しない旨のメッセージが表示されたのです。
だって、これについては、私が明示的に
/usr/lib/perl5/site_perlでなく
/usr/lib/perl5/site_perl/HTMLへ置いたのですものね。
しようがないのでEmbperl.pmも/usr/lib/perl5/site_perlへコピーしました。
これでも、まだエラーになります。
次のエラーはRPM版をインストールしたときのと似ています。
Can't locate loadable object for module Embperl in @INC (@INC contains: /usr/lib/perl5/5.8.0/i386-linux-thread-multi /usr/lib/perl5/5.8.0 /usr/lib/perl5/site_perl/5.8.0/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.0 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.0/i386-linux-thread-
multi /usr/lib/perl5/vendor_perl/5.8.0 /usr/lib/perl5/vendor_perl .) at /usr/lib/perl5/site_perl/Embperl/Out.pm line 20
Compilation failed in require at /usr/lib/perl5/site_perl/Embperl/Out.pm line 20.
BEGIN failed--compilation aborted at /usr/lib/perl5/site_perl/Embperl/Out.pm line 20.
Compilation failed in require at /usr/lib/perl5/site_perl/HTML/Embperl.pm line 29.
BEGIN failed--compilation aborted at /usr/lib/perl5/site_perl/HTML/Embperl.pm line 29.
Compilation failed in require at ./try line 3.
BEGIN failed--compilation aborted at ./try line 3.
という内容です。
どうやら、まだ色んなものが足りてないようですね・・・
というかEmbperlのインストールのやり方が間違っているのかな??
何かお気づきの点がありましたら教えてください。
ところで
> なぜ成功したと思ったのでしょうか?
と言われて初めて気が付いたのですが
そもそも私はRPMが正しくインストールできたか確認する方法を知らなかったのです。
rpmコマンドで何もエラーメッセージが表示されず、かつ@INC中にHTML/Embperl.pmが存在していましたので
私は何も疑わずインストールは成功したのだと思いこんでいたわけです。
良く分かってはいないのですがRPMという仕組みに絶対的な信頼をおいていたわけです・・・^^;
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) python 2 2022/12/23 09:06
- Perl perlをバージョンアップしたら、今まで正常に動いていたプログラムが、エラーになってしまった 3 2022/10/05 15:44
- Perl Perl の外部モジュールの利用方法 3 2022/07/10 18:34
- CGI -T(汚染モード)でメールが送れません 1 2022/06/12 14:11
- Perl Windows10においての『Perl』のプログラムについて 1 2022/05/09 16:04
- CGI 古ーくからフリーのtree.cgi掲示板を利用させてもらって来ましたが、最新でなにか復活できないか? 2 2023/04/07 10:43
- Ruby Ruby / passenger のインストールについて 1 2023/01/30 18:31
- Perl perlでリテラル値はメモリにどのように格納されているか? 1 2023/01/15 20:45
- その他(プログラミング・Web制作) ラズパイ上の、pythonのエラーについて 1 2023/04/12 23:27
- その他(プログラミング・Web制作) python flask から fastapiへの移行時のエラー対処 1 2023/02/05 12:26
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Pg.pmモジュールがロードできない
-
例外処理のフローチャートの記...
-
Perlソースコードをコンパイル...
-
ユーザー定義関数に#NAME?が返...
-
「デバイスは PRN を初期化でき...
-
エクセルVBAでシートモジュール...
-
【vba】フォームに書いてあ...
-
Excel VBAでリンク切れをチェッ...
-
VBAでoutlook365が起動しません。
-
ExcelVBA AddinでOnAction
-
LCD ディスプレイを Raspberry ...
-
モジュールとは何ですか
-
AIX6でファイルのタイムスタン...
-
教えて下さい。
-
Excel VBAで、ユーザーフォー...
-
ActivePerlへXML::LibXSLTを!
-
モジュールとクラスの違いって...
-
VBAで別モジュールへの変数の受...
-
CシェルプログラミングをCygwinで?
-
Pythonプログラミングでエラー
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
DB_Fileモジュールインストール...
-
perlのモジュールについて
-
python
-
perlをバージョンUPしたらWebSe...
-
Perlでモジュールを作りましたが、
-
Perl+DBD::Oracleのエラーがわ...
-
SOAP::Liteを利用したい!
-
use lib qw(変数名);は無理?
-
Pg.pmモジュールがロードできない
-
ActivePerlに含まれるモジュール
-
'cgi-lib.pl'などのファイルの...
-
DBIをCPANからインストール時に...
-
GLIBC_2.4 以上がインストール...
-
@INCにrequireされたファイルが...
-
Python エクセル読み込み xlrd...
-
HTML::Embperlが使えない!
-
Net::SSH::Perlについて
-
DBI Make error
-
perl MeCab 和布蕪 エラー
-
HTML::FillInFormが使えない(...
おすすめ情報