programing tip

CPAN에 모든 종속성을 설치하도록하려면 어떻게합니까?

itbloger 2020. 7. 25. 10:39
반응형

CPAN에 모든 종속성을 설치하도록하려면 어떻게합니까?


CPAN에 모든 종속성을 설치하도록하려면 어떻게합니까?

나는 이것들을 설정하려고 시도했다 cpan:

cpan> o conf prerequisites_policy follow
cpan> o conf commit

나는 여전히 "y"라고 몇 번 대답해야했다.

항상 설치하고 설치하는 방법이 있습니까? 무인으로 만들고 싶습니다.

CPAN이 항상 올바른 일을 할 수 있도록 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에서 모듈을 가져오고, 압축을 풀고, 빌드 및 설치하는 스크립트이며 다른 작업은 수행하지 않습니다.

그것은 의존성이 없으며 (부트 스트랩 자체 가능), 제로 구성이 필요하며 독립적입니다. 실행할 때 10MB의 RAM 만 필요합니다.

부트 스트랩 설치하기 :

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

그러면 "ask / yes"에서 "yes"로 바뀌고 요청을 중단합니다.


아마 ExtUtils :: AutoInstall 또는 Module :: AutoInstall 사용 과 관련이 있습니다. PERL_AUTOINSTALL 환경 변수를 설정하십시오. (해당 모듈의 설명서 참조)


세트

prerequisites_policy

구성에서.

구성 변수를 참조하십시오 .


개인적으로 나는 그런 식으로 설정을 수정하기 위해 몇 번만 시도했으며 실제로 인수 CPAN.pm를주지 cpan않고 CPAN.pm대화식 프롬프트에서 구성 하여 셸에 넣기가 더 쉽다는 것을 알았습니다 .

$ cpan
cpan> o conf init

CPAN.pm인터페이스 구성 유틸리티 가 시작됩니다 . 간단히 살펴보고 필요한 곳에 "팔로우"를 지정하십시오 (질문을 잊어 버립니다).


I found this to be, by far, the quickest and most reliable way to install CPAN modules:

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

I'm writing this for benefit of people who may have come to this page searching for a way to install all module dependencies needed by a particular perl script. I wrote a script for that:

It should be run as ./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";
    }
    }
}

This will use cpanminus to install all module dependencies required by your script. If cpanm isnt installed, it will install it.

참고URL : https://stackoverflow.com/questions/898782/how-do-i-tell-cpan-to-install-all-dependencies

반응형