2

私は perlmonks でこの質問をしましたが、進歩が限られているので、ここで質問します。perlbrew を使用して、スレッド化された perl 5.16.0 を Mac OS X 10.7.5 にインストールしました。今、モジュールを新しいインストールに転送しようとすると、理解できないメッセージで失敗します。以下は、私が使用して出力したコマンドです。

$ perlbrew install --as perl-5.16.0t -Dusethreads perl-5.16.0

次に、perlmonks の投稿に従ってください。

$ perldoc -t perllocal | perl -lane'/"Module"/ && print $F[-1]' | sort -u >/tmp/pms

$ perlbrew switch perl-5.16.0t

$ cpanm -v </tmp/pms &>>/tmp/inst.log & tail -f /tmp/inst.log

次に、これらのコマンドを簡単なチェックとして試してみたところ、理解できない出力が得られました。

$ perl -e 1 -MFile::Find
  dyld: lazy symbol binding failed: Symbol not found: _Perl_Istack_sp_ptr
  Referenced from: /Users/abualiga/perl5/lib/perl5/darwin-thread-multi-2level/auto/Cwd/Cwd.bundle
  Expected in: flat namespace

  dyld: Symbol not found: _Perl_Istack_sp_ptr
  Referenced from: /Users/abualiga/perl5/lib/perl5/darwin-thread-multi-2level/auto/Cwd/Cwd.bundle
  Expected in: flat namespace

  Trace/BPT trap: 5

$ perldoc File::Find
  dyld: lazy symbol binding failed: Symbol not found: _Perl_Istack_sp_ptr
  Referenced from: /Users/abualiga/perl5/lib/perl5/darwin-thread-multi-2level/auto/Cwd/Cwd.bundle
  Expected in: flat namespace

  dyld: Symbol not found: _Perl_Istack_sp_ptr
  Referenced from: /Users/abualiga/perl5/lib/perl5/darwin-thread-multi-2level/auto/Cwd/Cwd.bundle
  Expected in: flat namespace

  Trace/BPT trap: 5

perl-5.16.0t をアンインストールし、フォルダー perlbrew と .bash_profile の行を削除したので、システム perl 5.12.3 に戻りました。ただし、これを行う方法を知りたいのですが、ホームディレクトリに複数の perl を配置し、ActiveState を使用する必要はありません。

4

1 に答える 1

0

デフォルト ディレクトリ (perl5/perlbrew) にデフォルト設定で perlbrew をインストールしましたか? perlbrew を再インストールし、好みの perl に切り替えて、次のことを確認します。

まず、perlbrew に cpanm はインストールされていますか? 「どのcpanm」は、あなたが使用しているものを教えてくれます。「perlbrew/bin」で終わるパスのディレクトリに配置する必要があります。そうでない場合は、次の方法でインストールできます

perlbrew install-cpanm

また、bash_profile の行は「source ~/perl5/perlbrew/etc/bashrc」のようなものですか? その perlbrew bashrc ファイルの正しいパスですか? bash_profile を編集した後、端末を再起動しましたか? @INC には何が入っていますか? チェックする:

perl -e 'print join "\n", @INC'

perlbrew が正しくインストールされている場合、@INC には perlbrew ディレクトリのサブディレクトリのみが存在するはずです。

あなたのエラーメッセージから、perlbrew perl がそのモジュールを探していて、互換性のない "/Users/abualiga/perl5/lib" にある別の perl に対してビルドされたものを見つけているようです。Perlbrew perl のモジュールは通常、「~/perl5/ perlbrew /perls/perl-5.16.3/lib」のような場所にあります。これは、使用している特定の perlbrew perl に対してこれらのモジュールを適切にインストールしていないか、パス/@INC に何か問題があることを意味します。後者の場合、perlbrew の bashrc スクリプトに何か問題があります (perlbrewの最新バージョン (0.61) でバグが修正されたことは知っています)。ただし、デフォルトの方法で perlbrew をインストールしなかった場合は、自分でパスを修正する必要があるかもしれません。

また、将来、perlbrew でインストールされた異なる perl 間でモジュールを転送したい場合は、これらの手順が役立つかもしれません。

于 2013-04-03T21:05:09.890 に答える