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

使用Perlbrew安装新版本Perl时出现问题,perl,gcc,solaris,cpan,perlbrew,Perl,Gcc,Solaris,Cpan,Perlbrew,因此,根据stackoverflow上给出的说明,我试图使用perlbrew在我的64位Solaris虚拟机上安装新版本的Perl,以便最终安装“cpanm”,安装CGI和DBI模块,以及DBD::Oracle驱动程序。以下是我遵循的步骤: 1) 打开终端窗口,以root用户身份登录。然后安装以下软件包 pkg安装系统/标题 pkg安装gcc-45 pkg安装开发者/build/gnu制作 pkg安装archiver/gnu tar 2) 安装perlbrew curl-kLhttp://i

因此,根据stackoverflow上给出的说明,我试图使用perlbrew在我的64位Solaris虚拟机上安装新版本的Perl,以便最终安装“cpanm”,安装CGI和DBI模块,以及DBD::Oracle驱动程序。以下是我遵循的步骤:

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

  • pkg安装系统/标题
  • pkg安装gcc-45
  • pkg安装开发者/build/gnu制作
  • pkg安装archiver/gnu tar
2) 安装perlbrew

  • curl-kLhttp://install.perlbrew.pl |bash
3) 接下来,打开~/.bash_profile或~/.profile并附加以下代码行

  • vi~/.bash\u配置文件
    或vi
    ~/.profile
  • 在文件末尾追加
    source~/perl5/perlbrew/etc/bashrc
  • 从根目录注销
  • 重新登录到根目录
  • 此外,如果接下来的几个步骤似乎不起作用,您可能必须通过输入:
    source~/perl5/perlbrew/etc/bashrc
    手动为文件寻找源代码。
4) 开始安装新的Perl

  • echo$PERLBREW\u ROOT
    -->这应该等于/home/oracle/perl5/PERLBREW
  • perlbrew-v安装perl-5.16.0-Dcc=gcc
安装的输出:

  • perlbrew开关perl-5.16.0
但是,当我尝试切换到新的perl时,它会说:
perl-5.16.0未安装


所以我做了一个
ls$PERLBREW\u ROOT
,发现它包含一个bin、build、build.log、Config.pm、dists等和perls目录。因此,我认为新的Perl应该安装在perls目录中,但是执行
ls$PERLBREW\u ROOT/perls
表明perls目录中没有任何内容。有人知道可能出了什么问题吗?

当它由于测试失败而失败时,它会错误地将其描述为已安装。如果您认为测试失败是可以接受的,则再次运行它,跳过测试:

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\u host

的值,因此这似乎确实起了作用,现在perls目录中似乎有一个perl-5.16.0。但是,当我使用:
cpanm-vdbi安装DBI模块时,它仍然失败。我把输出放在OP里。为了更好的结果,开始一个新的问题。你的问题会得到更多的曝光,并找出答案。你需要提供比你发布的更多的信息。我们不知道哪些测试失败以及失败的原因,因此我们无法帮助您解决失败问题。“安装DBI失败。有关详细信息,请参阅/home/oracle/.cpanm/build.log。”
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" );