3

Web ホストに 2 つの Perl モジュールをインストールする必要があります。それらを A::B と X::Y と呼びましょう。X::Y は A::B に依存します (実行するには A::B が必要です)。どちらもModule::Install を使用します。を使用して A::B をシステム以外の場所に正常にインストールしました

perl Makefile.PL PREFIX=/non/system/location
make; make test; make install

今度は X::Y をインストールしたいので、同じことを試します

perl Makefile.PL PREFIX=/non/system/location

出力は

$ perl Makefile.PL PREFIX=/non/system/location/
Cannot determine perl version info from lib/X/Y.pm
*** Module::AutoInstall version 1.03
*** Checking for Perl dependencies...
[Core Features]
- Test::More          ...loaded. (0.94)
- ExtUtils::MakeMaker ...loaded. (6.54 >= 6.11)
- File::ShareDir      ...loaded. (1.00)
- A::B                ...missing.
==> Auto-install the 1 mandatory module(s) from CPAN? [y] 

システムに A::B がインストールされているのに見つからないようで、CPAN からモジュールを自動インストールしようとすると、システム ディレクトリに書き込もうとします (PREFIX を無視します)。コマンド ラインで や after などのPERL_LIB変数を使用してみましたが、何も機能していないようです。LIBPREFIX=...

私はうまくやることはできますがmake、この問題のためmake installにできません。make test助言がありますか?

http://servers.digitaldaze.com/extensions/perl/modules.htmlで、環境変数 PERL5LIB を使用するためのアドバイスを見つけましたが、これもうまくいかないようです:

export PERL5LIB=/non/system/location/lib/perl5/

問題を解決しませんでした。

4

3 に答える 3

0

OK、次の処方箋でそれができました:

perl Makefile.PL --skipdeps --no-manpages PREFIX=/non/system/location INSTALLSITELIB=/non/system/location/lib INSTALLSITEBIN=/non/system/location/bin INSTALLMAN1DIR=/non/system/location/man/man1 INSTALLMAN3DIR=/non/system/location/man/man3

これは単なる "monkey see monkey do" ですが、現在はmake test機能しています。

  • ここでの--skipdepsオプションは、不足しているモジュールをダウンロードするために CPAN.pm を使用しようとする Module::Install の便利な機能/厄介な問題を抑制します。
  • --no-manpagesマニュアルページのインストールを停止するはずですが、機能しません。
于 2010-06-18T03:52:40.203 に答える
0

答えはlocal::libですが、おそらくすでにご存知でしょう:)

于 2010-06-18T04:11:23.277 に答える