1

因此,根据我在 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到文件末尾
  • 登出根
  • 重新登录到根目录
  • 此外,您可能必须通过输入手动获取文件: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、dist 等perls目录。因此我认为新的 Perl 应该安装在perls目录中,但是执行显示perlsls $PERLBREW_ROOT/perls目录中没有任何内容。有谁知道可能出了什么问题?

4

1 回答 1

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

于 2012-06-07T15:41:05.583 回答