Ошибка установки 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, загрузил предыдущую версию инструментов командной строки (конец октября) и выполнил команду @Muncken answer (ARCHFLAGS = -Wno-error = неиспользуемый-аргумент-командной-строки-жесткая-ошибка-в будущем {исходная команда}). Это решило мою проблему. В моем конкретном случае я использовал boxen для установки своей среды, поэтому последняя использованная мной команда была ARCHFLAGS = -Wno-error = unused-command-line-argument-hard-error-in-future / opt / boxen / repo / script / boxen --no-fde. Спасибо всем, кто помог.
g8M

Mavericks 10.9.3 обновляет ruby ​​до: ruby ​​2.0.0p451 (2014-02-24, редакция 45167) [universal.x86_64-darwin13] Похоже, это решает проблему.
Шахар Хадас

1
Проблема связана со старой версией рубина, как говорит @Sash. Мне пришлось обновить до 2.0.0p451 вручную с 2.0.0p2 .. с помощью rvm: rvm install ruby-2.0.0-p451. rvm должен установить его как версию по умолчанию, тогда вам просто нужно переустановить свои драгоценные камни
Адам Спенс

У меня проблема с rvm ruby ​​2.2.0p0 (25 декабря 2014 г., ревизия 49005)
Сонни Парлин,

Ответы:


145

Я столкнулся с той же проблемой после обновления 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

Однако учтите, что это временное исправление.


1
Большое вам спасибо, вы мне очень помогли. После обновления до версии 5.1 Xcode CLI tools я получал кучу ошибок при попытке связать проект Rails 4. Хотя мне нужно было пройти ARCHFLAGSдважды: при установке определенных поврежденных гемов и при запуске Bundler.

Рад, что смог помочь Рафаэлю. Я провел большую часть дня в таком же беспорядке.
Kasper Munck

Я сделал много вещей, пытаясь решить эту проблему, и я точно не знаю, что решено, но я установил новую версию ruby, загрузил предыдущую версию инструментов командной строки (конец октября) и выполнил команду для этого ответа. Это решило мои проблемы. В моем случае я использовал ящики для установки моей среды, поэтому последняя использованная мной команда была ARCHFLAGS = -Wno-error = unused-command-line-argument-hard-error-in-future / opt / boxen / repo / script / boxen --но-фде. Спасибо всем, кто помог
g8M

2
Я не могу заставить это решение работать на меня. Все еще не удается. clang: error: unknown argument: '-multiply_definedsuppress' [-Wunused-command-line-argument-hard-error-in-future]Любые идеи?
rauberdaniel

1
Вы можете попробовать выполнить экспорт явно export ARCHFLAGS="...", а затем запустить команду компиляции в новой строке, например gem install json(Я сам компилирую модули Python). Кстати, не забудьте добавить в строку ранее существовавшие archflags, иначе они будут перезаписаны.
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

Чтобы решить эту проблему, вы можете установить самую последнюю версию 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

12

Проблема уже решена Ruby:

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

теперь нам просто нужно дождаться, пока Apple обновит свою рубиновую версию (2.0.0p247) до версии, следующей за последней (2.0.0p451), которая еще не вышла ... (или варите / macport)

Обновление (2014-05-15): Mavericks 10.9.3 обновляет рубин до ruby 2.0.0p451 (2014-02-24 revision 45167) [universal.x86_64-darwin13] И это, похоже, решает проблему.


4

@Muncken уже предоставил ответ на установку гема один за другим:

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

как сказал @Muncken, но он только что дал ответ gem install, я пробовал, это bundle installтоже работает
worldask

Ваш ответ должен быть полным сам по себе, даже без контекста других ответов.
bjb568

Ага. Намного лучше и полно.
bjb568

Этот ARCHFLAGS = -Wno-error = unused-command-line-argument-hard-error-in-future может использоваться во всех командах, которые завершаются неудачно с clang: error: unknown argument: '-multiply_definedsuppress'. Фактически это говорит компилятору clang, что эту ошибку следует рассматривать как предупреждение
g8M

2

В моем случае у меня действительно есть аналогичная проблема, но не на системном рубине, а на рубинах, установленном rvm из OSX 10.8, и у него есть проблемы после обновления до OSX 10.9.

Простая переустановка работает: rvm reinstall ruby-2.1.1


После того, как я попробовал все под солнцем, чтобы решить эту проблему, это то, что помогло мне! Спасибо!
Нарушители 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

Острый текст Пола Чечетина, похоже, больше не работает (21.09.15). Однако этот ответ на сообщение, упомянутое в ответе Пита, решил проблему для меня:

  • (а) Установите Apple XCode, затем (б) запустите его и примите условия лицензирования (я сделал (а), но не (б)).
  • sudo gem uninstall compass
  • sudo gem install compass

Я обновил Xcode, но никогда его не запускал. Когда я его запустил, он подсказал мне что-то принять, потом пришлось «установить компоненты». После этого я попробовал еще gem install jsonраз, и это сработало!
Сара Весселс,

1

У меня ничего из этого не сработало.

Наконец, сработало выполнение команды с помощью sudo -

gem установить byebug -v '9.0.6'


-1

Я использовал простое решение ... установить через brew

brew имя установки

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.