Ruby GemのインストールJsonがMavericksおよびXcode 5.1で失敗する-不明な引数: '-multiply_definedsuppress'


105

gem install jsonを実行しようとしたところ、次のエラーが発生しました

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby extconf.rb 
creating Makefile

make "DESTDIR=" clean

make "DESTDIR="
compiling generator.c
linking shared-object json/ext/generator.bundle
clang: error: unknown argument: '-multiply_definedsuppress' [-Wunused-command-line-argument-hard-error-in-future]
clang: note: this will be a hard error (cannot be downgraded to a warning) in the future
make: *** [generator.bundle] Error 1

make failed, exit code 2

Gem files will remain installed in /opt/boxen/repo/.bundle/ruby/2.0.0/gems/json-1.8.0 for inspection.
Results logged to /opt/boxen/repo/.bundle/ruby/2.0.0/extensions/universal-darwin-13/2.0.0/json-1.8.0/gem_make.out

私が使用しています:

Os X:10.9.2
Xcode:5.1ビルドバージョン5B130a
コマンドラインツール(CLT):5.1.0.0.1.1393561416
Ruby:ruby 2.0.0p247(2013-06-27リビジョン41674)[universal.x86_64-darwin13]
Ruby Gem:2.2 .2
GCC:4.2.1 Apple LLVMバージョン5.1(clang-503.0.38)(LLVM 3.4svnに基づく)


1
私はこの問題を解決するためにたくさんのことをしましたが、どちらが解決したのか正確にはわかりませんが、新しいrubyバージョンをインストールし、以前のバージョンのコマンドラインツール(10月下旬)をダウンロードして、コマンド@Munckenの回答(ARCHFLAGS = -Wno-error = unused-command-line-argument-hard-error-in-future {original command})。それで問題は解決しました。私の特定のケースでは、boxenを使用して環境をインストールしていたため、最後に使用したコマンドはARCHFLAGS = -Wno-error = unused-command-line-argument-hard-error-in-future / opt / boxen / repo / script /でした。 boxen --no-fde。助けてくれたみんなに感謝します。
g8M 2014年

Mavericks 10.9.3はrubyを次のように更新します:ruby 2.0.0p451(2014-02-24リビジョン45167)[universal.x86_64-darwin13]これで問題が解決したようです。
Shahar Hadas 2014年

1
問題は@Sashが言うように古いバージョンのrubyにあります。2.0.0p2から2.0.0p451に手動で更新する必要がありました。rvmはそれをデフォルトバージョンとして設定する必要があります。その後、gemsを再インストールするだけです
Adam Spence

RVM ruby​​ 2.2.0p0(2014-12-25リビジョン49005)でこの問題が発生しています
Sonny Parlin、2015年

回答:


145

Xcodeを5.1にアップデートした後、まったく同じ問題が発生し、Appleからのニュースが良くありません。以下からのXcode 5.1のリリースノート

  • Xcode 5.1のApple LLVMコンパイラは、認識されないコマンドラインオプションをエラーとして扱います。この問題は、Pythonネイティブ拡張とRuby Gemsの両方をビルドするときに発生します。現在、無効なコンパイラオプションがいくつか指定されています。

無効なコンパイラオプションを使用しているプロジェクトは、それらのオプションを削除するように変更する必要があります。その移行を容易にするために、コンパイラーはエラーを警告にダウングレードするオプションを一時的に受け入れます。

-Wno-error=unused-command-line-argument-hard-error-in-future

この問題を回避するには、ARCHFLAGS環境変数を設定して、エラーを警告にダウングレードします。

ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future gem install GemName

コンパイラオプションに違反するすべてのgemは、有効なオプションを使用するように更新する必要があるようです。:明確ことが述べられている[警告にエラーをダウングレード]このオプションは、将来的にはサポートされません

私たちが目にしているclangのメモ(これはハードエラーになる(警告にダウングレードできない)になる)は、リリースノートで発表された変更に対応しています。


具体的に質問に答えるには、次を使用してjson gemをインストールします。

ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future gem install json

ただし、これは一時的な修正にすぎないことに注意してください。


1
本当にありがとうございます。あなたは私をたくさん助けてくれました。Xcode CLIツール5.1バージョンへのアップデート以降、Rails 4プロジェクトをバンドルしようとすると、大量のエラーが発生しました。ARCHFLAGS特定の破損したGemをインストールするときと、Bundlerを実行するとき、2回合格する必要がありましたが

ラファエルを助けることができてうれしい。私は一日のほとんどを同じ混乱の中で過ごしました。
Kasper Munck 2014年

私はこの問題を解決するためにたくさんのことをしましたが、どちらが解決したのか正確にはわかりませんが、新しいrubyバージョンをインストールし、以前のバージョンのコマンドラインツール(10月下旬)をダウンロードして、この回答でコマンドを実行しました。これは私の問題を解決しました。私の場合、私はボックスを使用して環境をインストールしていたため、使用した最後のコマンドはARCHFLAGS = -Wno-error = unused-command-line-argument-hard-error-in-future / opt / boxen / repo / script / boxenでした。 --no-fde。みんなありがとう助けたこと
g8M

2
このソリューションが機能しません。それでもclang: error: unknown argument: '-multiply_definedsuppress' [-Wunused-command-line-argument-hard-error-in-future]何かのアイデアで失敗しますか?
rauberdaniel 2014年

1
明示的export ARCHFLAGS="..."にエクスポートしてから、gem install json(自分でPythonモジュールをコンパイルしています)などの新しい行でコンパイルコマンドを実行してみてください。ちなみに、既存のアーチフラグをラインに追加することを忘れないでください。
Michiel Kauw-A-Tjoe 14年

107

それを修正するためのワンライナー

curl https://gist.githubusercontent.com/Paulche/9713531/raw/1e57fbb440d36ca5607d1739cc6151f373b234b6/gistfile1.txt | sudo patch /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/universal-darwin13/rbconfig.rb

うまくいきませんでした。コマンドを実行して失敗しました:patching file /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/universal-darwin15/rbconfig.rb Hunk #1 FAILED at 82. Hunk #2 FAILED at 125. 2 out of 2 hunks FAILED -- saving rejects to file /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/universal-darwin15/rbconfig.rb.rej
Elijah Murray

19

この問題に対処するには、@ Sashで説明されているように、最新バージョンのRubyをインストールできます。これを行うには、次のコマンドを使用できます。すでにrvmをインストールしている場合は、再インストールする必要はありません。

#Install rvm
\curl -sSL https://get.rvm.io | bash -s stable

#Install ruby version 2.0.0-p451
rvm install ruby-2.0.0-p451

#Print ruby version to verify that it was installed successfully
ruby -v

#Install json gem
sudo gem install json

12

Rubyですでに対処されている問題:

https://bugs.ruby-lang.org/issues/9624

今、私たちはAppleがルビのバージョン(2.0.0p247)をまだ出ていない最新のもの(2.0.0p451)の次のものに更新するのを待つ必要があります...(またはbrew / macport)

アップデート(2014-05-15):Mavericks 10.9.3がrubyをアップデートし ruby 2.0.0p451 (2014-02-24 revision 45167) [universal.x86_64-darwin13] 、これで問題が解決したようです。


4

@Munckenは、gemを1つずつインストールするための回答をすでに提供しています。

ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future gem install GemName

マンケンの答えに基づいて、私はそれが使用時にも機能することを試みました bundle install

ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future bundle install

説明をいただけますか?
bjb568 14年

@Munckenが言ったように、彼は答えを提供しただけだったgem installので、私bundle installもそれを試してみました
worldask

あなたの答えは、他の答えの文脈がなくても、それ自体で完全でなければなりません。
bjb568 14年

うん。はるかに良く、完全です。
bjb568 14年

このARCHFLAGS = -Wno-error = unused-command-line-argument-hard-error-in-futureは、clang:error:unknown argument: '-multiply_definedsuppress'で失敗するすべてのコマンドで使用できます。実際、これはこのエラーを警告として扱う必要があることをclangコンパイラーに通知します
g8M

2

私の場合、実際には同様の問題がありますが、システムrubyではなく、OSX 10.8からrvmによってインストールされたルビーであり、OSX 10.9へのアップグレード後に問題が発生します。

簡単な再インストールが機能します: rvm reinstall ruby-2.1.1


この問題を修正するために太陽の下ですべてを試みた後、これは私のためにそれをしたものです!ありがとうございました!
侵入者W 2014

1

OSX 10.10では、実行時に次のrails new firstappようないくつかの問題がありました。

ERROR:  Error installing json:
ERROR: Failed to build gem native extension.
fatal error: 'ruby/config.h' file not found

この構成でrvmを更新したところ、すべてのエラーが消えました!:

rvm get stable --auto-dotfiles

アプリ名から、Ruby on Railsをいじり始めたばかりであることがわかるので、上記のアドバイスがうまくいかないかもしれません。


1

Paul Chechetinのワンライナーはもう機能していないようです(9/21/15)。しかし、ピートの返信で述べられている投稿へのこの返信は私のために問題を解決しました:

  • (a)AppleのXCodeをインストールしてから、(b)起動して、ライセンス条項に同意します((a)は実行しましたが(b)は実行しませんでした)。
  • sudo gem uninstall compass
  • sudo gem install compass

Xcodeを更新しましたが、起動していません。起動すると、何かを受け入れるように求められ、「コンポーネントをインストールする」必要がありました。その後、私はgem install jsonもう一度試してみましたが、うまくいきました!
Sarah Vessels

1

これらのどれも私にとってはうまくいきませんでした。

最終的に機能したのは、sudoを使用してコマンドを実行することです。

gem install byebug -v '9.0.6'


-1

私は簡単な解決策を使用しました... brewを介してインストールします

醸造インストール名

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.