如何在Perl中安装Parallel::ForkManager模块?

12
我正在尝试使用使用Parallel:ForkManager的perl脚本并行运行多个任务。
#!/usr/bin/perl  -w

use Parallel::ForkManager;

my @make_obj = qw(
 mode1_testlist
 mode1_testlist1
 mode1_testlist2
);

my $fm = $pm = Parallel::ForkManager-> new(3);
foreach my $obj (@make_obj) {
  $fm->start and next;
  print("make regression MODE=1 MODELIST=$make_obj");
  $fm->finish();
}

但是它给我抛出了以下错误。
无法在@INC中找到Parallel/ForkManager.pm(@INC包含:/usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl /usr/lib64/perl5/vendor_perl/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl /usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/5.8.8。)parallel_run.pl第3行。 BEGIN失败 - 在parallel_run.pl第3行中中止编译。
我已经下载了Parallel-ForkManager-1.03.tar.gz,但我不知道在哪里保存它,我的意思是如何安装它。
我尝试了perl Makefile.PL && make test && make install:
WARNING: META_MERGE is not a known parameter.
WARNING: BUILD_REQUIRES is not a known parameter.
WARNING: LICENSE is not a known parameter.
Checking if your kit is complete...
Looks good
'BUILD_REQUIRES' is not a known MakeMaker parameter name.
'LICENSE' is not a known MakeMaker parameter name.
'META_MERGE' is not a known MakeMaker parameter name.
Writing Makefile for Parallel::ForkManager
cp lib/Parallel/ForkManager.pm blib/lib/Parallel/ForkManager.pm
PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e"test_harness(0,'blib/lib', 'blib/arch')" t/*.t
                                                                                            t/00-load.............ok 1/3    (in cleanup) Undefined subroutine 
&File::Path::remove_tree called at /h/altera_dump2/vjain419/regression_flow_bck
/regression_flow/MSS1/hw/verif/top_/00e/tools/Parallel-ForkManager-1.03/blib
/lib/Parallel  /ForkManager.pm line 662.
t/00-load.............ok
t/01-utf8-all.........skipped
    all skipped: Need utf8::all for this test crashing on Windows
    t/02-callback.........Array found where operator expected at t/02-callback.t line
    21,at  end of line
    (Do you need to predeclare explain?)
    syntax error at t/02-callback.t line 21, near "explain @out"
   xecution of t/02-callback.t aborted due to compilation errors.
   # Looks like your test died before it could output anything.
   t/02-callback.........dubious                                                
    Test returned status 255 (wstat 65280, 0xff00)
     DIED. FAILED tests 1-2
    Failed 2/2 tests, 0.00% okay
    t/03-callback-data....Array found where operator expected at t/03-callback-data.t line 13, at end of line
    (Do you need to predeclare explain?)
   syntax error at t/03-callback-data.t line 13, near "explain @out"
   Execution of t/03-callback-data.t aborted due to compilation errors.
    # Looks like your test died before it could output anything.
    t/03-callback-data....dubious                                                
    Test returned status 255 (wstat 65280, 0xff00)
    DIED. FAILED test 1
    Failed 1/1 tests, 0.00% okay
   Failed Test          Stat Wstat Total Fail  Failed  List of Failed
   t/02-callback.t       255 65280     2    4 200.00%  1-2
   t/03-callback-data.t  255 65280     1    2 200.00%  1
   1 test skipped.
   Failed 2/4 test scripts, 50.00% okay. 3/6 subtests failed, 50.00% okay.
   make: *** [test_dynamic] Error 255 
2个回答

17

只需使用

cpan Parallel::ForkManager

或者,在确保您安装了它的依赖项(POSIX、Storable、File::Spec、File::Temp、File::Path 2.00和Test::More 0.81_01)之后,执行以下命令:

tar xvzf Parallel-ForkManager-1.03.tar.gz
cd Parallel-ForkManager-1.03
perl Makefile.PL && make test && make install

1
它需要File :: Path 2.00或更高版本,即使版本在Makefile.PL中没有指定。 它需要Test :: More 0.81_01,即使在Makefile.PL中指定了0.80。 - ikegami
1
只是提供信息,我不是那个服务器的管理员。我需要并行运行一些作业!如果有其他方法,比如一些脚本,请告诉我! - vjain419
1
查看了此链接的依赖项:http://deps.cpantesters.org/?module=Parallel%3A%3AForkManager;perl=latest 我认为你不需要安装所有的依赖模块,因为它们是核心模块,应该已经随着 Perl 一起提供了。 对我来说,“perl Makefile.PL && make test && make install” 运行良好。 当你运行这些命令时,日志显示了什么? - Suvasish Sarker
2
当我试图安装 TEST:MORE 时,执行 make install 后给了我以下警告!警告:您没有权限安装到 /usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi,在 /usr/lib/perl5/5.8.8/ExtUtils/Install.pm 的第 114 行。 在 /usr/lib/perl5/5.8.8/File/Find.pm 的第 924 行,无法强制删除 /usr/lib/perl5/5.8.8/Test/Builder.pm:权限被拒绝。 我认为我应该有管理员访问权限来安装它!! - vjain419
1
@vjain419,请将您本地的 perl 路径放在 /usr/bin 之前,加入到 PATH 环境变量中。 - ikegami
显示剩余13条评论

2

就像接受答案的一些评论所建议的那样,可能会缺少某个依赖项。以下方法对我有用:

% cpan Test::More
% cpan Parallel::ForkManager

cpan 可以使用一个命令行安装多个模块:cpan Test::More Parallel::ForkManager - brian d foy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接