0

認証のために SVN を Atlassian Crowd に接続しようとしましたが、OS X Leopard Server (10.5.8) と Perl の Digest::SHA1 で問題が発生しています。

ソース ( http://metacpan.org/pod/Digest::SHA1 ) からインストールしました。Perl スクリプトから直接呼び出すと正常に動作しますが、Apache ログに次のエラーが表示されます。

failed to resolve handler `Apache::CrowdAuth': Can't load '/Library/Perl/5.8.8/darwin-thread-multi-2level/auto/Digest/SHA1/SHA1.bundle' for module Digest::SHA1: dlopen(/Library/Perl/5.8.8/darwin-thread-multi-2level/auto/Digest/SHA1/SHA1.bundle, 1): no suitable image found.  Did find:
    /Library/Perl/5.8.8/darwin-thread-multi-2level/auto/Digest/SHA1/SHA1.bundle: no matching architecture in universal wrapper at /System/Library/Perl/5.8.8/darwin-thread-multi-2level/DynaLoader.pm line 230.
 at /Library/Perl/5.8.8/Cache/FileBackend.pm line 15
Compilation failed in require at /Library/Perl/5.8.8/Cache/FileBackend.pm line 15.
BEGIN failed--compilation aborted at /Library/Perl/5.8.8/Cache/FileBackend.pm line 15.
Compilation failed in require at /Library/Perl/5.8.8/Cache/FileCache.pm line 20.
BEGIN failed--compilation aborted at /Library/Perl/5.8.8/Cache/FileCache.pm line 20.
Compilation failed in require at /Library/Perl/5.8.8/Apache/CrowdAuth.pm line 8.
BEGIN failed--compilation aborted at /Library/Perl/5.8.8/Apache/CrowdAuth.pm line 8.
Compilation failed in require at (eval 2) line 3.

残念ながら、オンラインのエラーに関するドキュメントはないようです。

何か案は?

4

2 に答える 2

2

modperl と Perl 実行可能ファイルの間のコンパイラ アーキテクチャ トリプレットに不一致があるようです。関連するエラーは、実際には「ユニバーサルラッパーに一致するアーキテクチャがありません」であり、完全に OS X 固有のようです。

MacOS perl を使用していますか? 別の perl をビルドしてインストールしてみてください。Apple が perl ビルドでひどい仕事をしたことが知られています。

于 2009-10-12T22:41:01.397 に答える
2

Ether を表示するリンクを探しているときに、関連する可能性のあるこの投稿を見つけました。少し古いですが、問題の一部であるため、Apache への言及が私の目を引きました。

最近 32 ビット Mac から 64 ビット モデルに移行した場合、Perl モジュールの一部が突然手を上げて「何だ?」という問題に遭遇した可能性があります。AFP548 の記事は、考えられる原因を指摘しています。Mac 上の CPAN は、デフォルトですべてのモジュールを Universal 32 ビット バイナリとしてコンパイルします。これは、Apache 2.0 の mod_perl などの 64 ビット アプリケーションを失望させる傾向があります。

ARCHFLAGSそこに記載されている修正は、変数を調整することです。詳細については、Ars Technica の投稿がこのリンクを指しています。

于 2009-10-13T00:27:14.520 に答える