2

スクリプト内からCPANをMiniCPANリポジトリと連携させるのに問題がある(目的は、CPANのモジュールと一緒にローカルモジュールを構築し、local-libにインストールしてから、サーバーに同期するコード展開システムです)

$HOME/.cpan/CPAN/MyConfig.pmurllistがに設定された状態で存在します['file:///home/user/minicpan/']

(非CPAN)モジュールディストリビューションがminicpanリポジトリに正常に挿入され、ファイルが存在します/home/user/minicpan/authors/U/US/USER/My-Module-0.01.tar.gz

作者はに.../01mailrc.txt.gz、モジュールはに.../modules/02packages.details.txt.gz

モジュールが見つかり、cpanシェルを介してインストールされます。

次のコードで失敗します:

CPAN::HandleConfig->load;
CPAN::Shell::setup_output;
CPAN::Index->reload;

# dumping config here shows urllist set correctly,
# and config exactly the same as through shell
use Data::Dumper;
$Data::Dumper::Sortkeys = 1;
print Dumper($CPAN::Config);

CPAN::Shell->install("My::Module");

モジュールが見つからない("Cannot install My::Module, don't know what it is.")、またはクレームが最新である(My::Module is up to date (0.01)

モジュールはlocal-libにインストールされていません(そして、マシン上の他の場所、たとえば/ usr / ...にはインストールされていません)local-lib環境変数は eval $(perl -I$HOME/foo/lib/perl5 -Mlocal::lib=$HOME/locallib)bashプロファイルを介して設定されます

いずれかのエラー(「モジュールは最新です」を含む)を受け取った後、シェルの通常の「インストール」は強制的に機能しますperl -MCPAN -e "install My::Module"。そのため、構成が正しく設定されていないと思いますが、CPAN.pmドキュメントはかなり難しいです従う...

(CPAN.pmはv1.9402です)

4

1 に答える 1

0

試す :

#!/usr/bin/perl -w

system <cpan install My::Module>
于 2012-05-03T04:10:17.080 に答える