L’installation de Ruby Gem Json échoue sur Mavericks et Xcode 5.1 – argument inconnu: ‘-multiply_definedsuppress’

J’essayais d’exécuter gem install json et j’ai eu l’erreur suivante

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 

J’utilise:

Os X: 10.9.2
Xcode: 5.1 Build version 5B130a
Outils de ligne de commande (CLT): 5.1.0.0.1.1393561416
Ruby: ruby ​​2.0.0p247 (2013-06-27 révision 41674) [universal.x86_64-darwin13]
Ruby Gem: 2.2.2
GCC: 4.2.1 Apple LLVM version 5.1 (clang-503.0.38) (basé sur LLVM 3.4svn)

Je rencontre exactement le même problème après la mise à jour de Xcode en 5.1 et les nouvelles d’Apple ne sont pas bonnes. A partir des notes de version de Xcode 5.1 :

  • Le compilateur Apple LLVM de Xcode 5.1 traite les options de ligne de commande non reconnues comme des erreurs. Ce problème a été constaté lors de la construction des extensions natives Python et Ruby Gems, où certaines options de compilation non valides sont actuellement spécifiées.

Les projets utilisant des options de compilateur non valides devront être modifiés pour supprimer ces options. Pour faciliter cette transition, le compilateur acceptera temporairement une option permettant de réduire l’erreur à un avertissement:

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

Pour contourner ce problème, définissez la variable d’environnement ARCHFLAGS afin de réduire l’erreur à un avertissement.

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

Il semble que toutes les gemmes violant les options du compilateur doivent être mises à jour pour utiliser des options valides. Il est explicitement déclaré que: Cette option [erreur de mise à niveau vers l’avertissement] ne sera plus prise en charge à l’avenir .

La note de clang que nous voyons ( ce sera une erreur dure (ne peut pas être déclassée en avertissement) ) correspond au changement annoncé dans les notes de publication.


Pour répondre spécifiquement à votre question, utilisez ce qui suit pour installer le gem json:

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

Notez, cependant, qu’il ne s’agit que d’un correctif temporaire.

Un paquebot pour réparer ça

 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 

Pour résoudre le problème, vous pouvez installer la version la plus récente de ruby ​​décrite par @Sash. Vous pouvez utiliser les commandes suivantes pour le faire. Si vous avez déjà installé rvm, vous n’avez pas besoin de le réinstaller.

 #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 

Problème déjà abordé par Ruby:

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

il ne rest plus qu’à attendre qu’Apple mette à jour sa version Ruby (2.0.0p247) après celle de la dernière version (2.0.0p451) qui n’est pas encore sortie … (ou la brew / macporte)

Mise à jour (15/05/2014): Mavericks 10.9.3 met à jour ruby ​​à ruby 2.0.0p451 (2014-02-24 revision 45167) [universal.x86_64-darwin13] Et cela semble résoudre le problème.

@Muncken a déjà fourni une réponse pour installer gem un par un:

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

Sur la base de la réponse de Muncken, j’ai essayé que cela fonctionne également lors de l’utilisation d’une bundle install

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

Dans mon cas, j’ai en fait un problème similaire, mais pas sur le système ruby, mais sur les rbuy installés par rvm depuis OSX 10.8, et il a des problèmes après la mise à niveau vers OSX 10.9.

Une réinstallation simple fonctionne: rvm reinstall ruby-2.1.1

Sur OSX 10.10, j’ai rencontré plusieurs problèmes lors de l’exécution de rails new firstapp , comme par exemple:

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

J’ai mis à jour rvm avec cette configuration et toutes les erreurs ont disparu !:

 rvm get stable --auto-dotfiles 

Vous pouvez voir depuis le nom de l’application que je viens de commencer à manipuler Ruby on Rails, alors les conseils ci-dessus peuvent ou non fonctionner pour vous.

Le one-liner de Paul Chechetin ne semble plus fonctionner (21/09/15). Cependant, cette réponse au message mentionné dans la réponse de Pete a résolu le problème pour moi:

  • (a) Installez XCode d’Apple, puis (b) lancez-le et acceptez les termes de la licence (j’ai fait (a), mais pas (b)).
  • sudo gem uninstall compass
  • sudo gem install compass

Aucun d’entre eux n’a fonctionné pour moi.

Ce qui a finalement fonctionné, c’est d’exécuter la commande avec un sudo –

gem install byebug -v ‘9.0.6’

J’ai utilisé une solution simple … installer à travers l’infusion

nom de l’installation d’infusion