3

しようとしている間:

perl -I'/v1/data/site_perl' -MCPAN -e 'install Log::Dispatch';

「@INCでParams/Validate.pmが見つかりません」というメッセージが引き続き表示されます。出力を見ると、-Iを使用したにもかかわらず、/ v1 / data/site_perlが表示された@INCにありません。

私はrootではないので、CPAN構成を次のように変更しました。

'makepl_arg' => q[LIB=/v1/data/site_perl INSTALLSITEMAN1DIR=/v1/data/site_perl/man/man1 INSTALLSITEMAN3DIR=/v1/data/site_perl/man/man3 INSTALLMAN1DIR=/v1/data/site_perl/man/man1 INSTALLMAN3DIR=/v1/data/site_perl/man/man3]

したがって、LIBも設定されます。

基本的なスクリプトでは、次のようになります。

use lib '/v1/data/site_perl';
use Params::Validate;

問題ありません。

Log::Dispatchに強制インストールなしでlib/v1 / data / site_perlを使用させるにはどうすればよいですか?私は何が欠けていますか?

4

2 に答える 2

3

CPAN.pmは、さまざまなタスクのために多くのサブプロセスを呼び出すのが好きだと思います。これらは、フラグperlを継承しない新しいsを開始することになります。-I代わりに、PERL5LIB環境変数を設定してみてください。

PERL5LIB='/v1/data/site_perl' perl -MCPAN -e 'install Log::Dispatch'

考慮すべきもう1つの戦略は、ローカルディレクトリに完全なPerlインストールを構築することです。次に、そのperlのCPANユーティリティを使用します。すでにすべての独自のパスが組み込まれています。これは私がそれをする傾向がある方法です。

于 2010-04-12T20:28:03.453 に答える
2

-I単純なフラグを使用して別のCPANディレクトリにインストールすることはできません。local :: libパッケージを使用して、ライブラリのローカルセットをインストールするか、この質問この質問を参照してください。

于 2010-04-12T21:05:34.210 に答える