
perlモジュールをインストールしたいとき、CPANモジュールを使えば手軽に可能ですが、サーバーによってはGCC(コンパイラ)が使えない場合があります。シェル自体が使えないこともあります。
そんなときは、とりあえずダメモトで手動での展開・配置を試みます。
たとえばDate::Simpleなどはこれで問題ないですが、当然、バージョンの整合性や環境に依存するものなどもあり、動かなければ、モジュールの中身やmakeファイルなど調べたり、…などなどすることがあります。
しかし、そもそもモジュールは中身なんて知る必要がないのが利点でもあって、それこそ手軽に機能を使いたいからこそなのに、…などと作業しながら釈然としない気持ちになります。
そこでお聞きしたいのですが、コンパイルしなくても動くかどうかを知る方法、あるいはその情報、どこかに公開されているモジュール別の一覧など、そういうものをご存知ではないでしょうか。
この思いは私だけではない気がするのですが…、皆さんどうなのでしょう。
No.2ベストアンサー
- 回答日時:
モジュール名にPPまたはPurePerlというのがはいっていれば、それは確実にコンパイル不要なモジュールです。
PurePerlとは、「Perlだけで書かれたモジュール」のことです。(PPはPurePerlの略です)
例えば・・・「Digest::SHA::PurePerl」、「XML::Comma::Parsing::PurePerl」、「Crypt::Blowfish_PP」、「Crypt::DES_PP」etc...
これらは、makeしたときに行われるのはファイルのコピー処理だけです。
PPやPurePerlと書かれているのは、通常XS版(コンパイルが必要なもの)とPurePerl版の両方が存在するモジュールの場合がほとんどです。どちらか片方しかない場合は区別する必要がないのでPurePerlなモジュールであってもPPやPurePerlと書かれていない場合もあります。
逆に、コンパイルが必要なモジュールはXSという拡張子のファイルが入っています。
また、コンパイルが必要な物であっても、他のコンピュータでコンパイルし、それを実際に使うサーバーマシンにコピーして使うという方法があります。
この場合の注意点は、コンパイルするマシンをサーバーマシンの環境と同じでないといけない点です。
(例:サーバーがWindowsならコンパイルするマシンもWindows。サーバーがPerl5.8系列ならコンパイルするマシンもPerl5.8系列。)
余談ですが、前述のように同じモジュールでXS版とPurePerl版の両方が存在した場合、負荷と速度から考えるとできる限りXS版を使うべきです。
ご回答いただきありがとうございます。
まさしく、そのような情報が欲しかったのです!
名前にPPですか、まったく知りませんでした。確かにPurePerlと言われれば予測がつきそうですね。
別のマシンでコンパイルしておいてコピー、は最終手段として何度か試みたことがあります。それでも中には、他プログラムとの依存関係などあれば、動かないことがあり、結局いろいろ調べることになり…。まあその手段をとる時点で「置くだけ」ではないので仕方がないのですが。
大変有用なご回答、ありがとうございます。
No.1
- 回答日時:
釈然としたくなくて手軽にモジュールが使いたいなら制限のないところへ移転すべきでしょう。
制限のある場合で、他言語に依存するものならコンパイルだけでなく特定のディレクトリへのインストールを期待される場合もあるのであきらめるのがよいかと。
コンパイルだけしたいとか,インストール作業は必要ないものの場合は根性入れたらコンパイルできることはあります。(シェルが使えなくとも)
ご回答いただきありがとうございます。
> 制限のないところへ移転すべきでしょう。
それはまさに理想なんですが、仕事で行っていると様々な事情が絡むのです…。そしてそのモジュールを使いたい要求が発生することもあります。
おっしゃるとおり、たとえばCPNモジュールやシェルが使えなくてもmakeなど行う手立てはありますが、質問文に書いたようにGCCが使えない場合もあります。それでも展開だけで動くものもあります。
ただ、お聞きしたかったのは、それを判断するための情報なのですが、やはりなかなか無いようですね…。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAで別モジュールへの変数の受...
-
プラグイン、ライブラリ、コン...
-
Excel VBA 定義されたプロージ...
-
VBAで旧字体を異字体に一括で変...
-
印刷後メッセージボックスを表...
-
モジュールとクラスの違いって...
-
vba userFormのSubを標準モジュ...
-
VBA モジュールで共通に使う変...
-
システムエラーの内容
-
モジュールとは何ですか
-
モジュールからフォームのボタ...
-
標準モジュールを削除したい。(...
-
エクセルVBA 時間のカウントダ...
-
VBA モジュールを閉じるショー...
-
VBでグローバル変数を宣言するには
-
グラフのX,Y座標を取得したい
-
【vba】フォームに書いてあ...
-
エクセルVBAでシートモジュール...
-
どのファイルを開いた時もマク...
-
シャープ製品JH-WB1821 と BCG...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel VBAでリンク切れをチェッ...
-
エクセルVBAでシートモジュール...
-
VBでグローバル変数を宣言するには
-
ユーザー定義関数に#NAME?が返...
-
Excel VBAで、ユーザーフォーム...
-
Excel VBA 定義されたプロージ...
-
vba userFormのSubを標準モジュ...
-
標準モジュールを削除したい。(...
-
'Range'メソッドは失敗しました
-
VBAで別モジュールへの変数の受...
-
モジュールからフォームのボタ...
-
モジュールの最大数はいくつな...
-
グラフのX,Y座標を取得したい
-
モジュールとクラスの違いって...
-
【vba】フォームに書いてあ...
-
Form間の値の渡し方
-
VBのフォームモジュールと標準...
-
VBA モジュールで共通に使う変...
-
Excel VBA 『Call』で呼び出す...
-
acwzlibとは?
おすすめ情報