web-dev-qa-db-ja.com

すべての依存関係をインストールするようにCPANに指示するにはどうすればよいですか?

すべての依存関係をインストールするようにCPANに指示するにはどうすればよいですか?

これらをcpanに設定してみました:

cpan> o conf prerequisites_policy follow
cpan> o conf commit

私はまだ「y」と数回答えなければなりませんでした(しかし、以前よりも少ないように感じました)。

常に先に進んでインストールする方法はありますか?無人にしたいです。

私はフラグが常に正しいことをするためにCPANを信頼するようにしたいと思われるでしょう、そしてそれが答えを示唆するならば、私はそれに従いたいです(常にヒットします) Enter それが何かを尋ねるとき)。

113
Nifle

自動初回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シェルなどを使用する前に実行してください。

29
Atento

次のようにPerl_MM_USE_DEFAULTを設定してみてください。

Perl_MM_USE_DEFAULT=1 Perl -MCPAN -e 'install My::Module'

CPANがすべてのプロンプトに対してデフォルトで応答するようにする必要があります。

81
kbosak

この質問に対する最新かつ最大の答えは、代わりに 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
52
Joel Berger

ここにあなたが探していると確信しているものがあります:

cpan> o conf prerequisites_policy follow
cpan> o conf commit
28
Mark C

Prerequisites_policyの上にある次のパラメーターを変更します。

cpan> o conf prerequisites_policy 'follow'
cpan> o conf build_requires_install_policy yes
cpan> o conf commit

これにより、「確認/はい」から「はい」に変更され、確認を停止します。

27
sdf

おそらく ExtUtils :: AutoInstall または Module :: AutoInstall が使用されていることに関連しています。 Perl_AUTOINSTALL環境変数を設定してみてください。 (Cf.それらのモジュールのドキュメント。)

6
tsee

セットする

prerequisites_policy

構成内。

Config Variables を参照してください。

6
Sinan Ünür

これは、CPANモジュールをインストールするための、最も速くて最も信頼できる方法であることが、はるかにわかりました。

yes | Perl -MCPAN -e "CPAN::Shell->notest(qw!install Your::Module!)"
3

個人的には、そのように設定を変更しようと数回だけ試したところ、実際にCPAN.pmcpan引数を指定せずにシェルを構成し、CPAN.pmインタラクティブプロンプトから:

$ cpan
cpan> o conf init

これにより、CPAN.pmインターフェイス設定ユーティリティ。単にそれを実行し、必要な場所に「フォロー」を指定してください(質問をすぐに忘れてしまいます)。

3
numberwhun

このページにアクセスして、特定の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がインストールされていない場合、インストールされます。

1
Joel G Mathew