
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で質問しましょう!
似たような質問が見つかりました
- Perl Perl の外部モジュールの利用方法 3 2022/07/10 18:34
- バッテリー・充電器・電池 AC-DC電源モジュールの選択について教えてください 3 2022/04/24 11:44
- Visual Basic(VBA) vba メモリ節約 3 2022/09/16 21:45
- Visual Basic(VBA) マクロについて教えてください。 4 2023/06/06 09:06
- ルーター・ネットワーク機器 PCをWI-FI化(現在は有線) 9 2023/01/16 08:20
- ガスコンロ・IHクッキングヒーター・給湯器 シャープ製品JH-WB1821 と BCGシャープ共同開発品JH-WB182E の違いについて 1 2023/05/06 20:06
- Visual Basic(VBA) マクロについて教えてください。 1 2023/06/06 00:57
- Visual Basic(VBA) ExcelVBAで他のExcelVBAを実行 2 2022/10/01 14:55
- Visual Basic(VBA) VBA This Workbookモジュールを別ファイルにコピーする方法 1 2022/09/14 01:51
- その他(セキュリティ) 役所など、情報系システムのセキュリティが弱くても業務システムに問題ないか 3 2022/11/02 16:38
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JAVAを実行できるHTTPクライアント
-
メモリの呼び方で
-
「置くだけ」で使えるperlモジ...
-
モジュールについて教えて下さい。
-
Crypt::SSLeayについて
-
vba userFormのSubを標準モジュ...
-
VBA モジュールを閉じるショー...
-
CGI.pmはもう古い!?
-
このコードについて
-
パワーポイントでマクロ(Auto_C...
-
LWP::simpleがiswebで使えない
-
カレントディレクトリの変更に...
-
Perlでメール本文と添付ファイ...
-
perlからデータベースを利用す...
-
エクセルファイルを開いた時にV...
-
本当にPublicな変数(配列で)
-
Encode.pmというモジュールをPe...
-
Excel VBAで、ユーザーフォーム...
-
日付の差を求める関数はないで...
-
「Perlスクリプトを使ってCD→特...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAで別モジュールへの変数の受...
-
ユーザー定義関数に#NAME?が返...
-
エクセルVBAでシートモジュール...
-
Excel VBAでリンク切れをチェッ...
-
Excel VBAで、ユーザーフォーム...
-
Excel VBA 定義されたプロージ...
-
VBでグローバル変数を宣言するには
-
vba userFormのSubを標準モジュ...
-
モジュールの最大数はいくつな...
-
【vba】フォームに書いてあ...
-
Excel VBA 『Call』で呼び出す...
-
VBAで旧字体を異字体に一括で変...
-
モジュールとクラスの違いって...
-
モジュールからフォームのボタ...
-
大量の標準モジュールを解放す...
-
acwzlibとは?
-
SendKeysの使い方について
-
標準モジュールを削除したい。(...
-
VBA This Workbookモジュール...
-
VBA モジュールで共通に使う変...
おすすめ情報