web-dev-qa-db-fra.com

Ruby L'installation de Gem Json échoue sous Mavericks et Xcode 5.1 - argument inconnu: '-multiply_definedsuppress'

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)

104
g8M

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.

144
Kasper Munck

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
107
Paul Chechetin

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
19
Sbhklr

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.

12
Shahar Hadas

@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
4
worldask

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

2
xbeta

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:

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

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.

1
user2623812

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'

1
Alex Jose