1

問題:

perl モジュール、特に JSON-2.53 を正しくインストールできないようです。

私は次のことをしました:

  • 同様の問題を検索し、その解決策を試しましたが、うまくいきませんでした。
  • perl ".../config.h、`Makefile' で必要" が OSX Lion のアップグレード後に機能しない
  • インストールされた XCode コマンドライン開発者ユーティリティ (c コンパイラ、make など)
  • この特定の perl モジュールのバージョン互換性に関するドキュメントをお読みください: http://metacpan.org/pod/JSON
  • 次のコマンドを実行して、目的の perl モジュールを作成およびインストールします。

    $perl Makefile.PL

    JSON へようこそ (v.2.53)

    JSON::XS v.2.27 をインストールすると、JSON が高速になります。

    ************************** 注意 *********************** ***

    • これは「JSON バージョン 2」で、多くの違いがあります *
    • バージョン 1.xx へ *
    • 古いバージョンを使用しているアプリケーションを確認してください。*
    • 「古いバージョンへの互換性のない変更」および「TIPS」を参照してください *

    JSON の Makefile の記述

(Makefileが書かれていることを確認)

$make
make: *** No rule to make target `/System/Library/Perl/5.12/darwin-thread-multi-2level/CORE/config.h', needed by `Makefile'.  Stop.

そのエラーはどういう意味ですか? make installこのモジュールを成功させるにはどうすればよいですか?

この問題のデバッグに役立つ追加のアイテムを次に示します。

$which make
/Applications/Xcode.app/Contents/Developer/usr/bin/make
$which perl
/usr/bin/perl
$perl -v
This is perl 5, version 12, subversion 3 (v5.12.3) built for darwin-thread-multi-2level
4

2 に答える 2

1

XCodeをダウンロードして再インストールする必要があると思います。10.7を正しく思い出せば、アプリストアからXcodeをダウンロードした後、インストーラーがアプリケーションフォルダーにドロップされます。それを実行して、コマンドラインツールのインストールを再試行する必要があります(Xcodeの設定ペインから)。あなたがすでにこれを行ったとあなたが言ったことは知っていますが、もう少し背景がそれがもう一度試す価値がある理由を説明するかもしれません。

これが私のMacからのMakefileの関連する行です:

PERL_INC = /System/Library/Perl/5.12/darwin-thread-multi-2level/CORE
# Where is the Config information that we are using/depend on
CONFIGDEP = $(PERL_ARCHLIB)$(DFSEP)Config.pm $(PERL_INC)$(DFSEP)config.h

後でMakefileで、CONFIGDEPがターゲットの依存関係として使用されます。私はあなたのケースでmakeが/System/Library/Perl/5.12/darwin-thread-multi-2level/CORE/config.hを探していて、それを見つけることができないと信じています。あなたが見ているエラーは、ファイルが見つからないというmakeの鈍い言い方です。

config.hには、OSに関する特定の情報が含まれていますが、スクリプトの実行には必要ありません。モジュールをコンパイルする場合にのみ参照されます。ストックOSXを使用すると、スクリプトを実行するのに十分なperlを取得できます。XCodeをインストールすると、perlの「開発」を行うためのビット(config.hなど)を入手できます。Xcodeなしでperlスクリプトを記述して実行できるため、引用符を使用します。しかし、ご存知のように、モジュールをコンパイルするには、Xcodeが提供する追加のファイルが必要です。(ちなみに、RedHatは同じことをします。config.hを取得するにはperl-develパッケージをインストールする必要があります。perlランタイムは別のパッケージにあります。)

これがあなたが試すことができるいくつかのことです:

  1. /System/Library/Perl/5.12/darwin-thread-multi-2level/CORE/config.hが存在することを確認します。そうでない場合、Xcodeコマンドラインユーティリティが正しくインストールされていません。もう一度やってみる。
  2. config.hが存在する場合は、その内容をチェックして、正常に見えることを確認します。これはCヘッダーファイルであり、コメントと#defineステートメントで構成されています。
  3. config.hを表示するためのアクセス権がない場合は、権限に問題があります。sudo makeバイパスとして使用してみてください。ディスクユーティリティ([アプリケーション]-> [ユーティリティ]にあります)は、これを永続的に修正できる可能性があります。
  4. CONFIGDEPから「$(PERL_INC)$(DFSEP)config.h」を削除すると、Makefileを変更するリスクがあります。私は10.8Macでこれを実行しましたが、問題なく動作しました(すべてのテストにも合格しました)。ただし、config.hの問題の根本的な原因が見つからない場合は、次にperlモジュールをインストールするときに、最初の場所に戻ってしまう可能性があります。
于 2013-03-07T03:34:48.357 に答える
0

これはまったく同じエラーが発生しましたが、これは解決策ではない可能性があります.... OSXバージョンと互換性のある更新されたxcodeを再インストールした後(+インストール後に再起動)、まだエラーが発生しました-長い話を短くするために、私はエラーの後、/CORE/ に config.h がないことに気付きました...うまくいった解決策は、config.h に触れて最初にファイルを作成してから、make を再実行することでした。これが誰かに役立つことを願っています。

于 2015-05-23T19:20:40.440 に答える