すべての依存関係をインストールするようにCPANに指示するにはどうすればよいですか?
これらをcpan
に設定してみました:
cpan> o conf prerequisites_policy follow
cpan> o conf commit
私はまだ「y」と数回答えなければなりませんでした(しかし、以前よりも少ないように感じました)。
常に先に進んでインストールする方法はありますか?無人にしたいです。
私はフラグが常に正しいことをするためにCPANを信頼するようにしたいと思われるでしょう、そしてそれが答えを示唆するならば、私はそれに従いたいです(常にヒットします) Enter それが何かを尋ねるとき)。
自動初回CPAN構成を含むこれらの変更を永続化するワンライナーは次のとおりです。
Perl -MCPAN -e 'my $c = "CPAN::HandleConfig"; $c->load(doit => 1, autoconfig => 1); $c->edit(prerequisites_policy => "follow"); $c->edit(build_requires_install_policy => "yes"); $c->commit'
または、非特権ユーザー向けのlocal::lib
モジュールと組み合わせます:
Perl -MCPAN -Mlocal::lib=~/Perl5 -e 'my $c = "CPAN::HandleConfig"; $c->load(doit => 1, autoconfig => 1); $c->edit(prerequisites_policy => "follow"); $c->edit(build_requires_install_policy => "yes"); $c->commit'
CPANシェルなどを使用する前に実行してください。
次のようにPerl_MM_USE_DEFAULTを設定してみてください。
Perl_MM_USE_DEFAULT=1 Perl -MCPAN -e 'install My::Module'
CPANがすべてのプロンプトに対してデフォルトで応答するようにする必要があります。
この質問に対する最新かつ最大の答えは、代わりに cpanm
を使用することです(App :: cpanminusまたはcpanminusとも呼ばれます)!
説明
cpanminusは、CPANからモジュールを取得、アンパック、ビルド、およびインストールするためのスクリプトであり、他には何もしません。
依存関係はなく(can bootstrap自体)、ゼロ構成が必要で、スタンドアロンです。実行時には、10MBのRAMのみが必要です。
bootstrap=インストールする:
curl -L http://cpanmin.us | Perl - --Sudo App::cpanminus
または perlbrew
を使用している場合
perlbrew install-cpanm
またはcpan自体から:
cpan install App::cpanminus
その後、実行してモジュールをインストールします(必要に応じてルートとして)
cpanm Foo::Bar
ここにあなたが探していると確信しているものがあります:
cpan> o conf prerequisites_policy follow
cpan> o conf commit
Prerequisites_policyの上にある次のパラメーターを変更します。
cpan> o conf prerequisites_policy 'follow'
cpan> o conf build_requires_install_policy yes
cpan> o conf commit
これにより、「確認/はい」から「はい」に変更され、確認を停止します。
おそらく ExtUtils :: AutoInstall または Module :: AutoInstall が使用されていることに関連しています。 Perl_AUTOINSTALL環境変数を設定してみてください。 (Cf.それらのモジュールのドキュメント。)
これは、CPANモジュールをインストールするための、最も速くて最も信頼できる方法であることが、はるかにわかりました。
yes | Perl -MCPAN -e "CPAN::Shell->notest(qw!install Your::Module!)"
個人的には、そのように設定を変更しようと数回だけ試したところ、実際にCPAN.pm
cpan
引数を指定せずにシェルを構成し、CPAN.pm
インタラクティブプロンプトから:
$ cpan
cpan> o conf init
これにより、CPAN.pm
インターフェイス設定ユーティリティ。単にそれを実行し、必要な場所に「フォロー」を指定してください(質問をすぐに忘れてしまいます)。
このページにアクセスして、特定のPerlスクリプトに必要なすべてのモジュールの依存関係をインストールする方法を探している人たちのために、これを書いています。そのためのスクリプトを書きました。
./installdep.pl yourscript.pl
として実行する必要があります
#!/usr/bin/Perl
`Sudo apt install cpanminus`;
while (<>) {
if (/USE /i)
{
my $line=$_;
$line=~ s/\s//g;
$line=~ /^(.*)\./;
$line=~ s/\;//;
$line=~s/^USE//i;
$line=~s/lib.*//i;
$line=~s/feature.*//i;
$line=~s/strict//i;
$line=~s/warnings//i;
$line =~ s/^(.*)\(.*/$1/;
unless ($line eq '') {
my $cmd='Sudo cpanm '.$line;
print "Installing $line \n";
open my $cmd_fh, "$cmd |";
while (<$cmd_fh>) {
print "$_";
}
close $cmd_fh;
print "\n";
}
}
}
これはcpanminusを使用して、スクリプトに必要なすべてのモジュールの依存関係をインストールします。 cpanmがインストールされていない場合、インストールされます。