1 votos

La gema Nokogiri no se instala en OS X Mavericks

La instalación falla mostrando:

checking for iconv_open() in iconv.h... no
checking for iconv_open() in -liconv... no
checking for iconv_open() in -liconv... no
checking for libiconv_open() in iconv.h... no
checking for libiconv_open() in -liconv... no
checking for libiconv_open() in -liconv... no
libiconv is missing.

Sin embargo, mirando el mkmf.log de nokogiri, se muestran los siguientes errores:

ld: warning: ignoring file /usr/local/Cellar/libxslt/1.1.28/lib/libxslt.dylib, **file was built for x86_64 which is not the architecture being linked (i386)**: /usr/local/Cellar/libxslt/1.1.28/lib/libxslt.dylib

ld: warning: ignoring file /usr/local/Cellar/libxml2/2.9.1/lib/libxml2.dylib, **file was built for x86_64 which is not the architecture being linked (i386)**: /usr/local/Cellar/libxml2/2.9.1/lib/libxml2.dylib

ld: warning: ignoring file /usr/local/Cellar/libiconv/1.14/lib/libiconv.dylib, **file was built for x86_64 which is not the architecture being linked (i386)**: /usr/local/Cellar/libiconv/1.14/lib/libiconv.dylib

Tengo xcode y sus herramientas de comando instalado. Mi ~/.bash_profile tiene 64bit compilación forzada por: export ARCHFLAGS="-arch x86_64"

Tengo libxml2, libxslt, y libiconv instalado a través de Homebrew, y cada uno está vinculado. He intentado instalar todos estos sin el ARCHFLAG en .bash_profile.

También he brew install apple-gcc42 y vinculado, según cómo tos que he encontrado.

He probado a instalar nokogiri pasando las rutas a libxml2, libxslt y libiconv en /usr/local/Cellar/, pero la instalación sigue fallando, con los mismos errores que arriba.

He perdido al menos un día en esto - sólo tratando de conseguir una gema Ruby instalado. Realmente me gustaría volver a desarrollar.

¿Alguien puede ayudar?

0 votos

¿Qué ruby utilizas? ¿El OS X por defecto o un ruby gestionado por RVM? Con un RVM-managed 2.1.1 no tengo ningún problema haciendo 'gem install nokogiri'. Estoy usando XCode 5.1.1. Construye e instala su propia libxml2 y su instalación nokogiri-1.6.3.1.

1voto

chillin Puntos 1997

No puedes asumir que la versión de ruby incorporada a OS X es compatible con cualquier gema que quieras utilizar. No intentes eliminar la versión de ruby que viene con OS X ni actualizarla a menos que sea con App Store/Software Update/softwareupdate. La mayoría de los rubiers te dirán que ni siquiera te molestes en usar el ruby que viene con OS X. Pero puedes instalar múltiples versiones de ruby, y definitivamente necesitarás un gestor de versiones de ruby si piensas utilizar muchas gemas.

ruby fue una vez bastante fácil de usar, pero ahora, el número de versiones que necesariamente necesitan ser soportadas son legión, y los desarrolladores de gemas a veces te obligan a instalar una nueva versión de ruby en alguna otra versión ¡cuando ya tienes una instalación de ruby perfectamente buena! Grr. ruby realmente está empezando a irritarse, porque mientras que la información de apoyo puede estar ahí fuera, se parece cada vez más a un carrete de pesca que ha anidado pájaro. OMI, ruby está roto, alguien va a tener que sacarlo y conseguir que ordenadamente enrollado para que sea fijo, y yo no estoy a la altura. Yo no soy el tipo. No soy yo.

A pesar del entusiasmo de los brewinistas, el gestor de paquetes homebrew tiene problemas de crecimiento típicos de una solución de gestión de paquetes inmadura. Yo uso MacPorts para gestionar... todas mis instalaciones, pero también las diversas versiones de las instalaciones de ruby que son necesarias para utilizar las gemas que quiero. MacPorts requiere una versión apropiada de xcode; xcode_5.1.1.dmg es la versión más reciente para Mavericks. rvm utiliza MacPorts por por defecto si está instalado.

Por los registros que has proporcionado parece que te faltan cosas. Eso es lo bueno de MacPorts (y de cualquier gestor de paquetes maduro); se encarga de las dependencias por ti si no están instaladas.

Instalar MacPorts

 curl -Ok https://distfiles.macports.org/MacPorts/MacPorts-2.2.1.tar.bz2

 tar xf MacPorts-2.2.1.tar.bz2

 cd MacPorts-2.2.1

 ./configure

 make

 sudo make install

 cd ..

 rm -rf Macports-*

 sudo /opt/local/bin/port -v selfupdate

añade MacPorts a tu $PATH:

 export PATH=/opt/local/bin:/opt/local/sbin:$PATH

eche un vistazo a lo que MacPorts tiene para ruby

 port search ruby |less

y / o simplemente instalar nokogiri

 sudo port -vsk install ruby19 libxml2 libxslt 

 sudo gem install nokogiri

 port -vfp clean ruby19 libxml2 libxslt

si hay problemas prueba

 sudo port upgrade outdated

MacPorts no afectará a la versión OS X de nada, ni a homebrew (excepto para hacerlo superfluo) y guarda todo lo que instala en /opt haciendo que la desinstalación sea pan comido (pero esto no tiene nada que ver con donde ruby guarda sus gemas, ~/.gem ). Pero usted realmente debe llegar a conozca y te encanta MacPorts, es tu amigo.

para desinstalar completamente MacPorts

 sudo port -dfp uninstall --follow-dependencies installed

 sudo port -dfp uninstall all

 sudo rm -rf /opt/local  

 sudo rm -rf /Library/Tcl/macports*

0 votos

Gracias, lo he intentado y sigo obteniendo errores similares relacionados con i386/x64 (no puedo formatear aquí): ld: warning: ignoring file /Library/Ruby/Gems/2.0.0/gems/nokogiri-1.6.1/ports/x86_64-apple-darwin13.1.0/libxslt/1.1.26/lib/libxslt.dylib, file was built for x86_64 which is not the architecture being linked (i386): /Library/Ruby/Gems/2.0.0/gems/noko 85 ld: warning: ignoring file /Library/Ruby/Gems/2.0.0/gems/nokogiri-1.6.1/ports/x86_64-apple-darwin13.1.0/libxml2/2.8.0/lib/libxml2.dylib, file was built for x86_64 which is not the architecture being linked (i386): /Library/Ruby/Gems/2.0.0/gems/nokog

0 votos

No has dicho qué sistema estás utilizando... quizá sea tan sencillo como forzar al sistema a utilizar el kernel de 64 bits (si estás en 10.6, los sistemas posteriores ya deberían estar utilizando un kernel de 64 bits). Para garantizar el modo de 64 bits, mantén pulsadas las teclas "6" y "4" cuando se inicie el Mac; o abre Terminal y escribe: nvram boot-args="arch=x86_64" Se restablece el modo de 32 bits de la siguiente manera: sudo nvram boot-args=""

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X