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ś).
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.
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.
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
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.
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
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.)
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
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.
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!)"
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.
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