Ruby Gem install 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 Build версия 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
Я столкнулся с одной и той же проблемой после обновления Xcode до 5.1, а новости от Apple не очень хороши. Из Примечания к выпуску Xcode 5.1:
- Компилятор Apple LLVM в Xcode 5.1 рассматривает непризнанные параметры командной строки как ошибки. Эта проблема была замечена при создании как собственных расширений 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
Кажется, что все драгоценные камни, нарушающие параметры компилятора, должны быть обновлены, чтобы использовать допустимые параметры. В явном виде указано, что: Этот вариант [понижающая ошибка до предупреждения] не будет поддерживаться в будущем.
Заметка, которую мы видим (это будет жесткая ошибка (не может быть понижена до предупреждения) в будущем) соответствует изменению, объявленному в примечаниях к выпуску.
Чтобы конкретно ответить на ваш вопрос, используйте следующие установки для установки json gem:
ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future gem install json
Обратите внимание, однако, что это только временное исправление.
Ответ 2
Один-лайнер для исправления того, что
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
Ответ 3
Чтобы решить эту проблему, вы можете установить самую последнюю версию ruby, как описано в @Sash. Для этого вы можете использовать следующие команды. Если вы уже установили 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
Ответ 4
Проблема, уже рассмотренная Ruby:
https://bugs.ruby-lang.org/issues/9624
теперь нам просто нужно дождаться, пока Apple обновит свою рубиновую версию (2.0.0p247) до версии после последней версии (2.0.0p451), которая еще не появилась...
(или brew/macport it)
Обновление (2014-05-15): Mavericks 10.9.3 обновляет рубин до
ruby 2.0.0p451 (2014-02-24 revision 45167) [universal.x86_64-darwin13]
И это, похоже, решает проблему.
Ответ 5
@Muncken уже предоставил ответ для установки gem один за другим:
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
Ответ 6
В моем случае у меня есть аналогичная проблема, но не на рубине системы, а на рубинах, установленных rvm из OSX 10.8, и у нее есть проблемы после обновления до OSX 10.9.
Простая переустановка работ: rvm reinstall ruby-2.1.1
Ответ 7
В 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, поэтому вышеупомянутый совет может или не может работать для вас.
Ответ 8
Полевой Чечетин не работает больше (9/21/15). Однако этот ответ на сообщение, упомянутое в ответе Пита, решил проблему для меня:
- (a) Установите Apple XCode, затем (b) запустите его и примите условия лицензирования (я сделал (а), но не (b).)
-
sudo gem uninstall compass
-
sudo gem install compass
Ответ 9
Ни один из них не работал у меня.
Что, наконец, работало с командой sudo -
gem install byebug -v '9.0.6'
Ответ 10
Я использовал простое решение... установить через brew
brew установить имя