[ruby] Ruby Gem 설치 Json이 Mavericks 및 Xcode 5.1에서 실패-알 수없는 인수 : ‘-multiply_definedsuppress’

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 기반)



답변

Xcode를 5.1로 업데이트 한 후에도 똑같은 문제가 발생하고 Apple의 뉴스가 좋지 않습니다. 에서 엑스 코드 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

그러나 이것은 일시적인 수정일뿐입니다.


답변

한 줄로 고칠 수 있습니다.

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


답변

이 문제를 해결하기 위해 @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


답변

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 2.0.0p451 (2014-02-24 revision 45167) [universal.x86_64-darwin13]

이 루비를로 업데이트
하고 이로 인해 문제가 해결 된 것 같습니다.


답변

@Muncken은 이미 gem을 하나씩 설치하는 답변을 제공했습니다.

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

Muncken의 답변을 바탕으로 사용할 때도 작동한다고 시도했습니다. bundle install

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


답변

제 경우에는 실제로 비슷한 문제가 있지만 시스템 루비가 아니라 OSX 10.8에서 rvm에 의해 설치된 루비에 있으며 OSX 10.9로 업그레이드 한 후 문제가 있습니다.

간단한 재설치가 작동합니다. rvm reinstall ruby-2.1.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를 다루기 시작했음을 알 수 있으므로 위의 조언이 효과가있을 수도 있고 그렇지 않을 수도 있습니다.