Ruby Gem install Json falla en Mavericks y Xcode 5.1 - argumento desconocido: '-multiply_definedsuppress'

105

Estaba intentando ejecutar gem install json y obtuve el siguiente error

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

Estoy usando:

Os X: 10.9.2
Xcode: 5.1 Versión de compilación 5B130a
Herramientas de línea de comandos (CLT): 5.1.0.0.1.1393561416
Ruby: ruby ​​2.0.0p247 (2013-06-27 revisión 41674) [universal.x86_64-darwin13]
Ruby Gem: 2.2 .2
GCC: 4.2.1 Apple LLVM versión 5.1 (clang-503.0.38) (basado en LLVM 3.4svn)

g8M
fuente
1
Hice muchas cosas tratando de resolver este problema y no sé exactamente cuál resolvió, pero instalé la nueva versión de ruby, descargué la versión anterior de Command Line Tools (finales de octubre) y ejecuté el comando @Muncken 's answer (ARCHFLAGS = -Wno-error = argumento-de-línea-de-comandos-no utilizado-error-duro-en-futuro (comando original}). Eso resolvió mi problema. En mi caso específico, estaba usando boxen para instalar mi entorno, por lo que el comando final que usé fue ARCHFLAGS = -Wno-error = unused-command-line-argument-hard-error-in-future / opt / boxen / repo / script / boxen --no-fde. Gracias a todos los que ayudaron.
g8M
Mavericks 10.9.3 actualiza ruby ​​a: ruby ​​2.0.0p451 (2014-02-24 revisión 45167) [universal.x86_64-darwin13] Esto parece resolver el problema.
Shahar Hadas
1
El problema es con la versión antigua de ruby ​​como dice @Sash. Tuve que actualizar a 2.0.0p451 manualmente desde 2.0.0p2 .. usando rvm: rvm install ruby-2.0.0-p451. rvm debería configurarlo como versión predeterminada, entonces solo necesita reinstalar sus gemas
Adam Spence
Tengo este problema con rvm ruby ​​2.2.0p0 (2014-12-25 revisión 49005)
Sonny Parlin

Respuestas:

145

Me encuentro exactamente con el mismo problema después de actualizar Xcode a 5.1 y las noticias de Apple no son buenas. De las notas de la versión Xcode 5.1 :

  • El compilador LLVM de Apple en Xcode 5.1 trata las opciones de línea de comandos no reconocidas como errores. Este problema se ha observado al crear extensiones nativas de Python y Ruby Gems, donde actualmente se especifican algunas opciones de compilador no válidas.

Los proyectos que utilicen opciones de compilador no válidas deberán cambiarse para eliminar esas opciones. Para ayudar a facilitar esa transición, el compilador aceptará temporalmente una opción para degradar el error a una advertencia:

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

Para solucionar este problema, configure la variable de entorno ARCHFLAGS para degradar el error a una advertencia.

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

Parece que todas las gemas que violan las opciones del compilador deben actualizarse para usar opciones válidas. Se indica explícitamente que: Esta opción [error de degradación a advertencia] no se admitirá en el futuro .

La nota de clang que estamos viendo ( esto será un error grave (no se puede degradar a una advertencia) en el futuro ) corresponde al cambio anunciado en las notas de la versión.


Para responder a su pregunta específicamente, use lo siguiente para instalar la gema json:

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

Sin embargo, tenga en cuenta que esto es solo una solución temporal.

Kasper Munck
fuente
1
Muchas gracias, me has ayudado mucho. Desde la actualización a la versión 5.1 de las herramientas Xcode CLI, recibí una gran cantidad de errores al intentar agrupar un proyecto de Rails 4. Aunque necesitaba pasar ARCHFLAGSdos veces: al instalar gemas corruptas específicas y al ejecutar Bundler.
Me alegro de poder ayudar a Rafael. He pasado la mayor parte del día en el mismo lío.
Kasper Munck
Hice muchas cosas para tratar de resolver este problema y no sé exactamente cuál resolvió, pero instalé la nueva versión de ruby, descargué la versión anterior de Command Line Tools (finales de octubre) y ejecuté el comando en esta respuesta. Esto resolvió mis problemas. En mi caso, estaba usando cajas para instalar mi entorno, por lo que el comando final que usé fue ARCHFLAGS = -Wno-error = unused-command-line-argument-hard-error-in-future / opt / boxen / repo / script / boxen --no-fde. Gracias a todos los que ayudaron
g8M
2
No puedo hacer que esta solución funcione para mí. ¿Todavía falla con clang: error: unknown argument: '-multiply_definedsuppress' [-Wunused-command-line-argument-hard-error-in-future]alguna idea?
rauberdaniel
1
Podría intentar exportar explícitamente export ARCHFLAGS="..."y luego ejecutar su comando de compilación en una nueva línea, como gem install json(yo mismo estoy compilando módulos de Python). Por cierto, no olvide agregar archflags previamente existentes a la línea, o de lo contrario se sobrescribirán.
Michiel Kauw-A-Tjoe
107

Una sola línea para arreglar eso

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
Paul Brit
fuente
No funcionó. Ejecutó el comando y tuvo fallas: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
Elijah Murray
19

Para solucionar el problema, puede instalar la versión más reciente de ruby ​​como lo describe @Sash. Puede utilizar los siguientes comandos para hacerlo. En caso de que ya haya instalado rvm, no es necesario que lo vuelva a instalar.

#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
Sbhklr
fuente
12

Problema ya abordado por Ruby:

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

ahora solo tenemos que esperar a que Apple actualice su versión ruby ​​(2.0.0p247) a la que sigue a la última (2.0.0p451) que aún no ha salido ... (o brew / macport it)

Actualización (2014-05-15): Mavericks 10.9.3 actualiza ruby ​​a ruby 2.0.0p451 (2014-02-24 revision 45167) [universal.x86_64-darwin13] Y esto parece resolver el problema.

Shahar Hadas
fuente
4

@Muncken ya ha proporcionado una respuesta para instalar gemas una por una:

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

Basado en la respuesta de Muncken, he intentado que también funcione cuando se usa bundle install

ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future bundle install
Worldask
fuente
¿Podría darnos una descripción?
bjb568
como dijo @Muncken, pero él solo proporcionó la respuesta gem install, intenté que bundle installtambién funciona
worldask
Su respuesta debe estar completa por sí sola, incluso sin el contexto de otras respuestas.
bjb568
Sip. Mucho mejor y completo.
bjb568
Este ARCHFLAGS = -Wno-error = unused-command-line-argument-hard-error-in-future se puede usar en cada comando que falle con clang: error: unknown argument: '-multiply_definedsuppress'. En realidad, esto le dice al compilador clang que este error debe tratarse como una advertencia
g8M
2

En mi caso, tengo un problema similar, pero no en el sistema ruby, sino en rubies instalado por rvm desde OSX 10.8, y tiene problemas después de actualizar a OSX 10.9.

Una simple reinstalación funciona: rvm reinstall ruby-2.1.1

xbeta
fuente
Después de probar todo lo que hay bajo el sol para solucionar este problema, ¡esto es lo que hizo por mí! ¡Gracias!
Trespassers W
1

En OSX 10.10, tuve varios problemas al ejecutar rails new firstapp, como:

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

Actualicé rvm con esta configuración y ¡todos los errores desaparecieron !:

rvm get stable --auto-dotfiles

Puede decir por el nombre de la aplicación que acabo de empezar a jugar con Ruby on Rails, por lo que los consejos anteriores pueden funcionar o no para usted.


fuente
1

Parece que la frase de Paul Chechetin ya no funciona (21/9/15). Sin embargo, esta respuesta a la publicación mencionada en la respuesta de Pete me resolvió el problema:

  • (a) Instale XCode de Apple, luego (b) ejecútelo y acepte los términos de la licencia (yo había hecho (a), pero no (b)).
  • sudo gem uninstall compass
  • sudo gem install compass
marca
fuente
Había actualizado Xcode pero nunca lo había lanzado. Cuando lo lancé, me pidió que aceptara algo, luego tenía que "instalar componentes". Después de eso, probé de gem install jsonnuevo y funcionó.
Sarah Vessels
1

Ninguno de estos funcionó para mí.

Lo que finalmente funcionó es ejecutar el comando con un sudo:

gem install byebug -v '9.0.6'

Alex José
fuente
-1

Usé una solución simple ... instalar a través de brew

brew nombre de instalación

usuario3800976
fuente