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:
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