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
이 문제를 해결하기 위해 많은 일을했지만 정확히 어떤 문제가 해결되었는지는 모르겠지만 새 루비 버전을 설치하고 이전 버전의 명령 줄 도구 (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

1
문제는 @Sash와 같은 이전 버전의 루비에 있습니다. rvm : rvm install ruby-2.0.0-p451을 사용하여 2.0.0p2 ..에서 2.0.0p451로 수동으로 업데이트해야했습니다. rvm은이를 기본 버전으로 설정해야하며 보석을 다시 설치하면됩니다.
Adam Spence

rvm ruby ​​2.2.0p0 (2014-12-25 개정 49005)에서이 문제가 발생했습니다.
Sonny Parlin

답변:


145

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

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


1
정말 감사합니다. 많이 도와 주셨습니다. Xcode CLI 도구 5.1 버전 업데이트 이후 Rails 4 프로젝트를 번들링하려고 할 때 많은 오류가 발생했습니다. ARCHFLAGS두 번 통과해야했지만 특정 손상된 보석을 설치할 때와 Bundler를 실행할 때.

라파엘을 도울 수있어서 다행입니다. 나는 하루의 대부분을 같은 엉망으로 보냈다.
Kasper Munck 2014 년

이 문제를 해결하기 위해 많은 작업을 수행했지만 정확히 어떤 문제가 해결되었는지는 모르겠지만 새 루비 버전을 설치하고 이전 버전의 명령 줄 도구 (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

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
엘리야 머레이

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 2.0.0p451 (2014-02-24 revision 45167) [universal.x86_64-darwin13] 이 루비를로 업데이트 하고 이로 인해 문제가 해결 된 것 같습니다.


4

@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

설명해 주시겠습니까?
bjb568 2014 년

@Muncken는 말했지만 그는 단지 답을 제공하는 것처럼 gem install, 그 시도 bundle install또한 작동
worldask

귀하의 답변은 다른 답변의 맥락 없이도 자체적으로 완전해야합니다.
bjb568 2014 년

예. 훨씬 더 좋고 완벽합니다.
bjb568 2014 년

이 ARCHFLAGS = -Wno-error = unused-command-line-argument-hard-error-in-future는 clang : error : unknown argument : '-multiply_definedsuppress'로 실패하는 모든 명령에서 사용할 수 있습니다. 실제로 이것은 clang 컴파일러에게이 오류가 경고로 처리되어야한다고 알려줍니다
g8M

2

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

간단한 재설치가 작동합니다. rvm reinstall ruby-2.1.1


이 문제를 해결하기 위해 모든 것을 태양 아래서 시도한 후 이것이 나를 위해 한 일입니다! 감사합니다!
Trespassers W

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의 one-liner는 더 이상 작동하지 않는 것 같습니다 (9/21/15). 그러나 Pete의 회신에 언급 된 게시물에 대한 이 회신 으로 문제가 해결되었습니다.

  • (a) Apple의 XCode를 설치 한 다음 (b) 실행하고 라이선스 조건에 동의합니다 ((a) 수행했지만 (b) 수행하지 않음).
  • sudo gem uninstall compass
  • sudo gem install compass

Xcode를 업데이트했지만 시작하지 않았습니다. 내가 그것을 시작했을 때, 무언가를 받아들이라는 메시지가 나타나고 "구성 요소를 설치"해야했습니다. 그 후 gem install json다시 시도했는데 효과가있었습니다!
Sarah Vessels 2015

1

이것들 중 어느 것도 나를 위해 일하지 않았습니다.

마지막으로 작동 한 것은 sudo로 명령을 실행하는 것입니다.

gem install byebug -v '9.0.6'


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.