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

そこで、を実行したところ、 bin、build、build.log、Config.pm、distsなど、およびperlsls $PERLBREW_ROOTディレクトリが含まれていることがわかりました。したがって、新しいPerlをperlsディレクトリにインストールする必要があると思います、ショーを実行すると、 perlsディレクトリに何もないことがわかります。何がうまくいかないのか誰かが知っていますか?ls $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 に答える