Jak powiedzieć CPAN, aby zainstalować wszystkie zależności?

Jak powiedzieć CPAN, aby zainstalował wszystkie zależności?

Próbowałem ustawić je w cpan:

cpan> o conf prerequisites_policy follow
cpan> o conf commit

Musiałem jeszcze kilka razy odpowiedzieć "y" (ale mniej niż wcześniej).

Czy istnieje sposób, aby go zawsze iść do przodu i zainstalować? Chcę to zrobić bez opieki.

Wydaje się, że chcę, aby flaga zawsze ufała CPAN, aby zrobił to dobrze, a jeśli sugeruje odpowiedź, chciałbym ją śledzić (zawsze naciśnij Enter Kiedy to pyta o coś).

Author: Peter Mortensen, 2009-05-22

10 answers

Oto jednoliniowy, który sprawia, że te zmiany są trwałe, w tym automatyczna konfiguracja CPAN po raz pierwszy:

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'

Lub połączyć go z local::lib modułem dla nieuprzywilejowanych użytkowników:

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'

Uruchom go przed użyciem powłoki CPAN lub czegokolwiek innego.

 34
Author: Atento,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-22 11:19:20

Spróbuj ustawić PERL_MM_USE_DEFAULT tak:

PERL_MM_USE_DEFAULT=1 perl -MCPAN -e 'install My::Module'

Powinno sprawić, że odpowiedź CPAN będzie domyślna dla wszystkich monitów.

 83
Author: kbosak,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-10 20:33:51

Najnowszą i najlepszą odpowiedzią na to pytanie jest użycie cpanm zamiast tego (określane również jako App:: cpanminus lub cpanminus)!

Opis

Cpanminus jest skryptem do pobierania, rozpakowywania, budowania i instalowania modułów z CPAN i nie robi nic innego.

Jest wolny od zależności (can bootstrap siebie), wymaga zerowej konfiguracji i stoi sam. Podczas biegu, wymaga tylko 10MB pamięci RAM.

Aby zainstalować bootstrap it:

curl -L http://cpanmin.us | perl - --sudo App::cpanminus

Lub jeśli używasz perlbrew po prostu

perlbrew install-cpanm

Lub z samego cpan:

cpan install App::cpanminus

Od tego momentu zainstaluj Moduły wykonując (w razie potrzeby jako root)

cpanm Foo::Bar
 59
Author: Joel Berger,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-11 11:15:57

Zmiana następującego parametru na górze prerequisites_policy następuje.

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

Spowoduje to zmianę z "zapytaj/tak "na" tak " i przestanie pytać Ciebie.

 29
Author: sdf,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-22 11:21:46

Oto, czego jestem pewien, że szukasz:

cpan> o conf prerequisites_policy follow
cpan> o conf commit
 28
Author: Mark C,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-12-18 23:24:51

Może jest to związane z ExtUtils::AutoInstall lub Module::AutoInstall. Spróbuj ustawić zmienną środowiskową PERL_AUTOINSTALL. (Por. dokumentację tych modułów.)

 6
Author: tsee,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-22 18:41:45

Zestaw

prerequisites_policy

W konfiguracji.

Zobacz Zmienne Konfiguracyjne .

 6
Author: Sinan Ünür,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-15 06:37:24

Osobiście próbowałem tylko kilka razy zmodyfikować ustawienia w ten sposób i okazało się, że łatwiej jest wpaść do powłoki CPAN.pm, podając cpan żadnych argumentów, a następnie konfigurując CPAN.pm z interaktywnego monitu:

$ cpan
cpan> o conf init

Spowoduje to uruchomienie narzędzia konfiguracyjnego CPAN.pm interfaces. Po prostu przejrzyj go i określ "follow", gdzie musisz (zapominam o pytaniu offhand), a powinieneś być dobry.

 3
Author: numberwhun,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-22 11:20:34

Uważam, że jest to najszybszy i najbardziej niezawodny sposób instalacji modułów CPAN:

yes | perl -MCPAN -e "CPAN::Shell->notest(qw!install Your::Module!)"
 3
Author: Vladimir Marchenko,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-22 11:35:11

Piszę to z myślą o osobach, które mogły przyjść na tę stronę szukając sposobu na zainstalowanie wszystkich zależności modułów potrzebnych konkretnemu skryptowi Perla. Napisałem do tego scenariusz:

Powinno być uruchamiane jako ./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";
    }
    }
}

To użyje cpanminus do zainstalowania wszystkich zależności modułów wymaganych przez skrypt. Jeśli cpanm nie jest zainstalowany, zainstaluje go.

 2
Author: Joel G Mathew,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-03 15:46:09