2011-07-26 9 views
0

1つのCPAN依存関係を持つ私のPerlアプリケーションを配布したい。誰かがアプリケーションを起動したときにこの依存関係のチェックを含めることはできますか?コマンドライン引数または内部のperlを通して直接?PerlアプリケーションにCPAN依存関係を含めるにはどうすればいいですか?

+0

http://stackoverflow.com/questions/1094125/try-to-use-module-in-perl-and-print-message-if-module-not-available –

答えて

3

他の依存関係のない純粋なPerlモジュールですか?

私は自分のコードでパッケージ化しています。あなたが好きなら、ちょうどあなたのファイルに追加することさえできます。

これは少し複雑です。つまり、インストールする必要のあるモジュールが十数あり、必要なコンパイルがある場合は、CPANを使用してダウンロードする必要があります。 CPAN::AutoINCがあり、モジュールが必要なときにCPANから必要なモジュールをダウンロードしてインストールし、@INCパスにはないものとします。

しかし、私の経験では、混乱してしまうことがありました。ユーザーはプログラムの実行を開始するかもしれませんが、実際に時間がかからない場合、前提条件のモジュールをダウンロード、コンパイル、テストするのに20分かかります。

ただ失敗して、何が必要なのかをよく説明してください。ユーザーはcpanをrootとして実行したいので、マシン上の全員が利用できます。あるいは、システム管理者にそれを行うように依頼する必要があるかもしれません。

私はこのような何かを行うことができます見つけた

our $missingModuleFlag; 

BEGIN { 
    eval { require My::Mod; }; 
    our $missingModuleFlag = [email protected] if ([email protected]); 
} 

[...] 

our $missingModuleFlag; #Package Variable -- Value is from above 
if ($missingModuleFlag) { 
    die <<EOM; 
ERROR: You are missing module "My::Mod" which is required for 
    this program. Please use "cpan" to download this module 
    and install it on this server. If you have no idea what 
    I am talking about, see http://www.cpan.org/modules/INSTALL.html. 
    If that doesn't make any sense to you, then ask a system administrator. 
EOM 
} 

それは問題が何であるかを説明し、何が行われる必要があると、インストールを進めるのいずれかに、ユーザーに選択肢を与え、または誰かにそれらのためにそれをするように頼みなさい。

5

このquestionで説明されている複数の方法の他に、前提条件モジュールをコードにバンドルすることも考えられます。 PARPAR::Packerなど、いくつかのオプションがあります。

関連する問題