Как мне сказать CPAN для установки всех зависимостей?

perl dependencies cpan

90387 просмотра

10 ответа

Как мне сказать CPAN для установки всех зависимостей?

Я попытался установить их в cpan:

cpan> o conf prerequisites_policy follow
cpan> o conf commit

Мне все еще приходилось отвечать «у» пару раз (но меньше, чем раньше).

Есть ли способ заставить его всегда идти вперед и устанавливать? Я хочу сделать это без присмотра.

Казалось бы, я хочу, чтобы флаг всегда доверял CPAN, чтобы делать правильные вещи, и если он предлагает ответ, я хотел бы следовать ему (всегда нажимать, Enterкогда он что-то спрашивает).

Автор: Nifle Источник Размещён: 12.11.2019 09:23

Ответы (10)


29 плюса

Решение

Вот одна строка, делающая эти изменения постоянными, включая автоматическую первоначальную конфигурацию 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 или чего-либо еще.

Автор: Atento Размещён: 12.02.2014 06:18

81 плюса

Попробуйте установить PERL_MM_USE_DEFAULT следующим образом:

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

Это должно заставить CPAN отвечать по умолчанию на все запросы.

Автор: kbosak Размещён: 10.06.2009 08:33

54 плюса

Последний и лучший ответ на этот вопрос - использовать cpanmвместо этого (также называемый App :: cpanminus или cpanminus)!

ОПИСАНИЕ

cpanminus - это скрипт для получения, распаковки, сборки и установки модулей из CPAN и больше ничего не делает.

Он свободен от зависимостей (может самозагрузиться), не требует настройки и стоит отдельно. При работе требуется только 10 МБ оперативной памяти.

Для начальной загрузки установите его:

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

или если вы используете perlbrewпросто

perlbrew install-cpanm

или из самого cpan:

cpan install App::cpanminus

С этого момента установите модули, выполнив (как root, если необходимо)

cpanm Foo::Bar
Автор: Joel Berger Размещён: 31.10.2011 02:09

28 плюса

Вот что я уверен, что вы ищете:

cpan> o conf prerequisites_policy follow
cpan> o conf commit
Автор: Mark C Размещён: 18.12.2009 11:24

27 плюса

Изменение следующего параметра поверх prerequisites_policy следует.

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

Это изменит его с «спросить / да» на «да» и прекратит спрашивать вас.

Автор: sdf Размещён: 14.01.2010 04:20

6 плюса

Возможно, это связано с используемыми ExtUtils :: AutoInstall или Module :: AutoInstall . Попробуйте установить переменную окружения PERL_AUTOINSTALL. (См. Документацию этих модулей.)

Автор: tsee Размещён: 22.05.2009 06:41

6 плюса

Установлен

prerequisites_policy

в конфигурации.

См. Переменные конфигурации .

Автор: Sinan Ünür Размещён: 22.05.2009 04:52

3 плюса

Лично я только пару раз пытался изменить настройки таким образом, и на самом деле мне было проще попасть в CPAN.pmоболочку, не давая cpanаргументов, а затем настраивая CPAN.pmиз интерактивного приглашения:

$ cpan
cpan> o conf init

Это CPAN.pmзапустит утилиту настройки интерфейсов. Просто пройдите по нему и укажите «следовать», где вам нужно (я забыл вопрос не по порядку), и вам будет хорошо идти.

Автор: numberwhun Размещён: 23.05.2009 12:41

3 плюса

На мой взгляд, это самый быстрый и надежный способ установки модулей CPAN:

yes | perl -MCPAN -e "CPAN::Shell->notest(qw!install Your::Module!)"
Автор: Vladimir Marchenko Размещён: 29.07.2015 02:08

1 плюс

Я пишу это для пользы людей, которые, возможно, пришли на эту страницу в поисках способа установки всех зависимостей модуля, необходимых для конкретного сценария 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 не установлен, он установит его.

Автор: Joel G Mathew Размещён: 02.08.2017 07:48
Вопросы из категории :
32x32