代码之家  ›  专栏  ›  技术社区  ›  Nifle Hassan Syed

如何告诉CPAN安装所有依赖项?

  •  111
  • Nifle Hassan Syed  · 技术社区  · 17 年前

    如何告诉CPAN安装所有依赖项?

    我试着把这些放进去 cpan :

    cpan> o conf prerequisites_policy follow
    cpan> o conf commit
    

    我仍然需要回答“Y”几次(但比以前少了一些)。

    有没有办法让它一直安装下去?我想让它无人看管。

    似乎我想要一个始终相信CPAN做正确事情的标志,如果它表明了一个答案,我愿意跟随它(总是点击 进入 当它问什么的时候)。

    10 回复  |  直到 9 年前
        1
  •  29
  •   Peter Mortensen Pieter Jan Bonestroo    9 年前

    以下是使这些更改永久化的一行程序,包括自动首次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 shell或其他程序之前运行它。

        2
  •  80
  •   kbosak    17 年前

    尝试设置perl-mm-u-use-u-default,如下所示:

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

    它应该使CPAN对所有提示都默认应答。

        3
  •  52
  •   Joel G Mathew    13 年前

    这个问题的最新和最好的答案是 cpanm 相反(也被称为app::cpanminus或cpanminus)!

    描述

    cpanminus是一个脚本,用于从中获取、解包、构建和安装模块 CPAN什么也不做。

    它是无依赖的(可以引导 它本身),需要零配置,并且是独立的。跑步时, 它只需要10MB的内存。

    要引导安装它:

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

    或者如果你正在使用 perlbrew 简单地

    perlbrew install-cpanm
    

    或者来自CPAN本身:

    cpan install App::cpanminus
    

    从那时起,通过执行安装模块(如有必要,作为根目录)

    cpanm Foo::Bar
    
        4
  •  28
  •   Mark C    16 年前

    这是我非常确定你要找的:

    cpan> o conf prerequisites_policy follow
    cpan> o conf commit
    
        5
  •  27
  •   Peter Mortensen Pieter Jan Bonestroo    9 年前

    在先决条件的基础上更改以下参数\u策略如下。

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

    这将把它从“ask/yes”更改为“yes”,并停止询问您。

        6
  •  6
  •   tsee    17 年前

    也许它与 ExtUtils::AutoInstall Module::AutoInstall 正在使用。尝试设置perl_autoinstall环境变量。(参见这些模块的文档。)

        7
  •  6
  •   Jose Faeti    11 年前

    集合

    prerequisites_policy
    

    在配置中。

    Config Variables .

        8
  •  3
  •   Peter Mortensen Pieter Jan Bonestroo    9 年前

    就我个人而言,我只尝试过几次以这种方式修改设置,实际上发现更容易进入 CPAN.pm 给予贝壳 cpan 没有参数,然后配置 下午 从交互式提示:

    $ cpan
    cpan> o conf init
    

    这将启动 下午 接口配置实用程序。只需运行它并指定“跟随”您需要去的地方(我马上就忘记了这个问题),您应该很好地去。

        9
  •  3
  •   Peter Mortensen Pieter Jan Bonestroo    9 年前

    我发现这是迄今为止安装CPAN模块最快速和最可靠的方法:

    yes | perl -MCPAN -e "CPAN::Shell->notest(qw!install Your::Module!)"
    
        10
  •  1
  •   Joel G Mathew    9 年前

    我写这篇文章的目的是为了帮助那些可能来到这一页的人寻找一种方法来安装特定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,它将安装它。