使用Perlbrew安装新版本的Perl时出现问题

时间:2012-06-07 15:30:26

标签: perl gcc solaris cpan perlbrew

所以根据我在stackoverflow上给出的指令,我试图使用perlbrew在我的64位Solaris虚拟机上安装新版本的Perl,以便最终安装'cpanm'并安装CGI和DBI模块,如以及DBD :: Oracle驱动程序。这些是我遵循的步骤:

1)打开终端窗口并以 root 用户身份登录。然后安装以下软件包......

  • pkg install system/header
  • pkg install gcc-45
  • pkg install developer/build/gnu-make
  • pkg install archiver/gnu-tar

2)安装perlbrew ......

  • curl -kL http://install.perlbrew.pl | bash

3)接下来,打开〜/ .bash_profile或〜/ .profile并附加以下代码行。

  • vi ~/.bash_profile vi ~/.profile
  • source ~/perl5/perlbrew/etc/bashrc追加到文件末尾
  • 退出root
  • 重新登录root
  • 此外,如果接下来的几个步骤似乎不起作用,您可能需要输入以下内容来手动输入文件:source ~/perl5/perlbrew/etc/bashrc

4)开始安装新的Perl。

  • echo $PERLBREW_ROOT - >这应该等于/ home / oracle / perl5 / perlbrew
  • perlbrew -v install perl-5.16.0 -Dcc=gcc

安装输出:

Test Summary Report
    -------------------
    ../cpan/CGI/t/tmpdir.t                                          (Wstat: 0 Tests: 9 Failed: 0)
      TODO passed:   3, 6, 8
    ../cpan/Socket/t/getnameinfo.t                                  (Wstat: 256 Tests: 14 Failed: 1)
      Failed test:  10
      Non-zero exit status: 1
    Files=2334, Tests=522101, 1212 wallclock secs (90.50 usr 58.34 sys + 533.70 cusr 288.26 csys = 970.80 CPU)
    Result: FAIL
    *** Error code 1
    make: Fatal error: Command failed for target `test_harness'
    Installed /home/oracle/perl5/perlbrew/build/perl-5.16.0 as perl-5.16.0 successfully. Run the following command to switch to it.

      perlbrew switch perl-5.16.0
  • perlbrew switch perl-5.16.0

但是,当我尝试切换到新的perl时,它会显示:perl-5.16.0 is not installed

所以我做了ls $PERLBREW_ROOT并发现它包含 bin,build,build.log,Config.pm,dists等 perls 目录。因此,我认为新的Perl应安装在 perls 目录中,但执行ls $PERLBREW_ROOT/perls表示 perls 目录中没有任何内容。有没有人知道可能出现的问题?

1 个答案:

答案 0 :(得分:3)

当它因测试失败而失败时,它误报了它。如果您认为测试失败是可以接受的,那么再次跳过测试运行它:

perlbrew -v install perl-5.16.0 --notest -Dcc=gcc
                                ^^^^^^^^

这是失败的测试:

my $expect_host = gethostbyaddr( inet_aton( "127.0.0.1" ), AF_INET );
defined $expect_host or $expect_host = "127.0.0.1";
( $err, $host, $service ) = getnameinfo( pack_sockaddr_in( 80, inet_aton( "127.0.0.1" ) ), NI_NUMERICSERV );
is( $host, $expect_host, "\$host is $expect_host for NS" );

如果向上滚动日志输出,则会看到$host$expect_host实际获得的值。

相关问题