J'essayais de lancer 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 Construire la 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 de Apple ne sont pas bonnes. À partir de 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é rencontré lors de la construction des deux Python et Ruby Gems, où certaines options de compilateur non valides sont actuellement spécifiées.
Les projets utilisant des options de compilateur non valides devront être modifiés pour les supprimer. Pour faciliter cette transition, le compilateur acceptera temporairement une option permettant de rétrograder l'erreur en un avertissement:
-Wno-error=unused-command-line-argument-hard-error-in-future
Pour résoudre ce problème, définissez la variable d'environnement ARCHFLAGS afin de rétrograder l'erreur en un avertissement.
ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future gem install GemName
Il semble que tous les gems violant les options du compilateur doivent être mis à jour pour utiliser des options valides. Il est explicitement indiqué que: Cette option [déclassement d'erreur en avertissement] ne sera plus prise en charge à l'avenir .
La note que nous voyons ( sera une erreur difficile (ne peut pas être transformée en avertissement) dans le futur ) correspond au changement annoncé dans le notes de version.
Pour répondre spécifiquement à votre question, procédez comme 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'une solution temporaire.
Un revêtement pour résoudre ce problème
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 ce problème, vous pouvez installer la version la plus récente de Ruby comme décrit par @Sash. Vous pouvez utiliser les commandes suivantes pour le faire. Si vous avez déjà installé rvm, vous 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
Question déjà abordée par Ruby:
https://bugs.Ruby-lang.org/issues/9624
il ne reste plus qu’à attendre Apple pour mettre à jour leur Ruby (2.0.0p247) à la version la plus récente (2.0.0p451) qui ne pas encore sorti ... (ou brasser/macporter ça)
Mise à jour (2014-05-15): 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 une par une:
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é de dire que cela fonctionnait également avec 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 rubis installés par rvm à partir d’OSX 10.8 et qui pose des problèmes après la mise à niveau vers OSX 10.9.
Une réinstallation simple fonctionne: rvm reinstall Ruby-2.1.1
La ligne unique de Paul Chechetin ne semble plus fonctionner (21/09/15). Cependant, cette réponse au message mentionné dans la réponse de Pete résolut le problème pour moi:
Sudo gem uninstall compass
Sudo gem install compass
Sous OSX 10.10, j’ai eu plusieurs problèmes lors de l’exécution de Rails new firstapp
tel que:
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 dire à partir du nom de l'application que je viens de commencer à jouer avec Ruby sur Rails, de sorte que le conseil ci-dessus peut ne pas fonctionner pour vous.
Aucun de ceux-ci n'a fonctionné pour moi.
Ce qui a finalement fonctionné est d’exécuter la commande avec un Sudo -
gem installer byebug -v '9.0.6'