He estado tratando de instalar Nokogiri en Mac OS 10.9.3 y lo que sea que intente, la instalación falla al final con el siguiente mensaje de error:
$ sudo gem install nokogiri -- --with-xml2-include=/usr/local/Cellar/libxml2/2.9.1/include/libxml2 --with-xml2-lib=/usr/local/Cellar/libxml2/2.9.1/lib --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.28 --with-iconv-include=/usr/local/Cellar/libiconv/1.14/include --with-iconv-lib=/usr/local/Cellar/libiconv/1.14/lib
Building native extensions with: '--with-xml2-include=/usr/local/Cellar/libxml2/2.9.1/include/libxml2 --with-xml2-lib=/usr/local/Cellar/libxml2/2.9.1/lib --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.28 --with-iconv-include=/usr/local/Cellar/libiconv/1.14/include --with-iconv-lib=/usr/local/Cellar/libiconv/1.14/lib'
This could take a while...
Building nokogiri using packaged libraries.
ERROR: Error installing nokogiri:
ERROR: Failed to build gem native extension.
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby extconf.rb --with-xml2-include=/usr/local/Cellar/libxml2/2.9.1/include/libxml2 --with-xml2-lib=/usr/local/Cellar/libxml2/2.9.1/lib --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.28 --with-iconv-include=/usr/local/Cellar/libiconv/1.14/include --with-iconv-lib=/usr/local/Cellar/libiconv/1.14/lib
Building nokogiri using packaged libraries.
checking for iconv.h... yes
checking for iconv_open() in iconv.h... no
checking for iconv_open() in -liconv... no
checking for libiconv_open() in iconv.h... no
checking for libiconv_open() in -liconv... no
-----
libiconv is missing. please visit http://nokogiri.org/tutorials/installing_nokogiri.html for help with installing dependencies.
-----
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers. Check the mkmf.log file for more details. You may
need configuration options.
Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby
--help
--clean
--use-system-libraries
--enable-static
--disable-static
--with-zlib-dir
--without-zlib-dir
--with-zlib-include
--without-zlib-include=${zlib-dir}/include
--with-zlib-lib
--without-zlib-lib=${zlib-dir}/lib
--enable-cross-build
--disable-cross-build
Gem files will remain installed in /Library/Ruby/Gems/2.0.0/gems/nokogiri-1.6.2.1 for inspection.
Results logged to /Library/Ruby/Gems/2.0.0/gems/nokogiri-1.6.2.1/ext/nokogiri/gem_make.out
Después de seguir mucha ayuda encontrada en la web, incluida la construcción e instalación de libxml2 y libxslt usando brew y la construcción de libiconv desde las fuentes (como se describe en " Instalación de Nokogiri "), el error sigue siendo el mismo.
Al intentar ejecutar la instalación de Nokogiri, libxml2 y libxslt parecen encontrarse bien, pero no libiconv.
¿Alguien con un mejor conocimiento de estas cosas sabe cómo instalar Nokogiri?
gem install nokogiri
, pero luego uso RVM para administrar mis instalaciones de Mac OS Ruby. libxml y libxslt no están relacionados con iconv, por lo que recomiendo hacer su pregunta en Nokogiri-talk, que es su foro de soporte. No recuerdo haber tenido problemas de ícono al instalar Nokogiri, y lo tengo en un montón de máquinas.sudo gem install nokogiri
". No lo usesudo
para instalar gemas ni modificar el Ruby predeterminado. En su lugar, use rbenv o RVM para administrar un Ruby por separado. Esto se cubre varias veces en Stack Overflow.Respuestas:
Tuve el mismo problema. Desafortunadamente, la " Instalación de Nokogiri " no cubre los problemas de Iconv. Así es como resolví el problema.
Primero instala homebrew , te hará la vida más fácil. Si ya lo tiene instalado, asegúrese de obtener las últimas fórmulas actualizándolas así:
Nota : en OSX 10.9+ puede que necesite instalar las herramientas de comando xCode para permitirle instalar libiconv.
luego instale una versión más nueva de libiconv
luego instala tu gema
fuente
brew install libiconv
escupir: Error: No hay una fórmula disponible para libiconv Apple distribuye libiconv con OS X, puede encontrarlo en / usr / lib. Algunos scripts de compilación no lo detectan correctamente, compruebe las fórmulas existentes para encontrar soluciones.xcode-select --install
. Esto solucionó el problema para mí.brew install libiconv
obtener la fórmula correcta, use esto:brew tap homebrew/dupes
Yosemite
(10.10) No tuve que hacer lasbrew
cosas; soloxcode-select --install
solucionó este problema para mí.Intenta usar las bibliotecas del sistema. OSX viene con libiconv en versiones más recientes, pero el script de instalación predeterminado parece tener un problema
Editar: si usa bundler, como lo menciona Geoff , puede hacer:
fuente
libxml2 version 2.6.21 or later is required!
.La solución de @ Cory contiene la respuesta correcta, pero la solución en Mavericks es en realidad mucho más simple que la solución principal, por lo que estoy volviendo a publicar solo con los pasos necesarios.
En Mavericks (OSX 10.9+):
Instale las herramientas de línea de comandos de Xcode:
luego instala tu gema:
fuente
Finalmente pude resolver este problema. Ninguna de las soluciones anteriores me lo arregló por completo.
Recibía este error al intentar
gem install nokogiri
en OSX Lion 10.7.2. En primer lugar, este error enmascara el problema real al decir que falta libiconv, porque obtendrá el mismo error incluso si nokogiri no puede encontrar libxslt o libxml2, que en mi caso, no pudo.Así que seguí las instrucciones en http://nokogiri.org/tutorials/installing_nokogiri.html en la sección Homebrew (ligeramente modificada para tener en cuenta una versión más actual de libxml2):
En este punto seguí las instrucciones en el sitio de nokogiri e intenté
Sin embargo, esto todavía falló porque al construir libxslt desde la fuente, instala la
/include
carpeta en un lugar funky. Por lo tanto, debe especificar las carpetaslib
y porinclude
separado de esta manera:Esto todavía no funcionaba (el mismo error de libiconv), así que intenté especificar las tres bibliotecas requeridas (libxslt, libxml2 y libiconv):
¡Ahora tengo un error diferente! Seguía siendo un error, pero al menos era diferente. El proceso de creación falló con:
Uhh que? Después de mucho googlear, me encontré con esta publicación milagrosa: http://www.refresherate.com/2010/01/08/fixing-ld-warning-in-usrlocalliblibz-dylib-file-is-not-of-required -arquitectura/
Aparentemente, OSX Lion viene con algunas versiones malas de la biblioteca libz (
libz.dylib, libz.1.dylib, libz.1.2.4.dylib
) y deben reemplazarse con las últimas versiones del SDK de Xcode. El artículo lo explica mejor que yo, así que lea el enlace de arriba para obtener instrucciones específicas.Una vez que estos fueron reemplazados, corrí
de nuevo y todo estuvo bien. Espero que esto ayude a alguien más.
fuente
Solo agregué mi voz a la multitud, pero mkmf.log dijo algo acerca de no poder encontrar símbolos para la arquitectura x86_64. Me encontré con esta solución:
Puede que no resuelva nada para el autor de la pregunta original, pero esto puede ayudar a alguien.
Nota al margen: el nokogiri ha sido mi mayor barrera para el uso de aplicaciones de rubí. Cada vez que alguien depende de una versión diferente, tengo que descubrir cómo construirlo. Y mi problema es diferente cada vez.
fuente
ARCHFLAGS="-arch x86_64" sudo gem install nokogiri -- --use-system-libraries
funcionó ...gem install nokogiri -v '1.6.6.2' -- --use-system-libraries --with-xml2-include=$(brew --prefix libxml2)/include/libxml2
Esto funcionó para mí en macos. Funciona tambien con version
1.6.6.4
fuente
--with-xml2-include
opción para mí en Catalina ...gem install nokogiri --version=1.6.6.2 -- --use-system-libraries
Estoy usando .. OS X 10.9.4 Homebrew 0.9.4
Aquí está mi resumen de este hilo para instalar con éxito nokogiri, reparando libiconv faltante.
Instale Homebrew http://brew.sh/ O actualice a la última utilizando el siguiente comando
Instalar libxml2 libxslt
Enlace ambos libxml2 libxslt
Si recibe una advertencia para usar --force, solo use el comando a continuación
Instale las herramientas de comando xCode para permitirle instalar libiconv
Instalar libiconv
Paso final, instale nokogiri!
fuente
Resolví esto al
Yosemite
correrRuby 2.1.4
porxcode-select --install
, luegoxcode-select --install
no funciona, suspire)bundle install
funcionó normalmente.También hice un
brew install libiconv
pero también no estoy convencido de que ese paso fuera necesario.fuente
brew install libiconv
sea necesario: nunca me molesté en encontrar el paquete adecuado y esto funcionó bien para mí. De acuerdo, puede haber estado en mi máquina desde que instalé nokogiri con ruby 2.1.1 antes.xcode-select --install
y pude instalar Nokogiri.Intenté muchas cosas pero nada funcionó para mí. ¡Finalmente encontré la documentación de iconv y me salvó el día!
fuente
Mirando en el archivo mkmf, parece que nokogiri (o gema, no lo sé) intenta encontrar dependencias en / op / local /. Para mí no es el camino correcto para buscarlos.
Obligar a nokogiri a encontrar las librerías en el lugar correcto (uso homebrew) hizo el truco para mí:
Tal vez hay algo que arreglar en nokogiri ...
HTH
fuente
libiconv se eliminó de Homebrew 0.9 Ahora se recomienda compilar libiconv desde la fuente, luego hacer referencia a la instalación cuando instale la gema nokogiri. Consulte las instrucciones de instalación de Nokogiri en la sección Homebrew 0.9 en la página de instalación de Nokogiri
fuente
Busque en el archivo mkmf.log en el directorio de compilación de la gema (por ejemplo, /Library/Ruby/Gems/1.8/gems/nokogiri-1.4.4/ext/nokogiri/mkmf.log). Eso tiene mucha más información. En mi caso, cuando llegué a esto, fue que Nokogiri agrega específicamente / opt / local / lib a la ruta de búsqueda de la biblioteca y GNU Backgammon había instalado allí un libiconv incompatible.
fuente
Suponiendo que instaló libxml2 y libxslt con MacPorts, aún podría recibir este error debido a una falta de coincidencia del orden de las rutas de inclusión y las rutas de enlace utilizadas por la llamada a have_func ('iconv_open', 'iconv.h')
Solución simple (parche): elimine libiconv. * En / usr / local / lib
fuente
igual que el anterior, esta es la solución para homebrew y el uso de la instalación de gemas (aplicar cambios depende de su versión)
sin embargo, si usa Gemfile e instalación de paquete, debe aplicar la configuración del paquete antes de instalar, aquí el código
nuevamente, aplicar cambios depende de su versión
Espero que esto te ayudará.
crédito: https://gist.github.com/1344331
fuente
Tuve problemas similares en Mountain Lion. Resulta que había instalado libiconv a través del paquete rvm anteriormente y esto ya no es necesario para ruby 1.9.3 / Mountain Lion / nokogiri.
Siguiendo los consejos de https://rvm.io/packages/ , eliminé mi directorio $ rvm_path / usr y reconstruí ruby 1.9.3. Posteriormente, la instalación de nokogiri fue una simple instalación de gemas. ¡No te metas con brew / macports / manual source installs!
fuente
También puedes hacer esto en Mavericks:
gem install nokogiri - --use-system-library = true --with-xml2-include = / Applications / Xcode.app / Contents / Developer / Platforms / MacOSX.platform / Developer / SDKs / MacOSX10.9.sdk / usr / include / libxml2
Solo asegúrate de tener instalado xcode
fuente
Estuve peleando con Nokogiri por un tiempo hoy en OS X 10.10 Yosemite
Mi entorno estaba en mal estado por alguna razón.
which bundle
ywhich gem
me estaban dando/usr/bin/bundle
y/usr/bin/gem
lugar de~/.rbenv/shims/gem
Lo que me ayudó a corregirlo fue
sudo rm -i /usr/bin/gem /usr/bin/bundle
Después de eso, yo: 1. volví a mi directorio de proyecto 2. desinstalé el dependiente 3. (re) -instalé las librerías dependientes: hice un
brew install libxml2 libiconv libxslt
4. instalé mi versión ruby fresh (con rbenv) 5. hicegem install bundler
6. ybundle install
ejecuté sin ninguna problemas.Nokogiri
estuvo bien después de eso.Para referencia:
fuente
Necesita actualizar su homebrew a 0.9
luego sigue estos pasos
Debe verificar la versión de la biblioteca de carpetas.
fuente
brew create http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz && brew install libiconv
USUARIOS HOMEBREW
Solución correcta para solucionar este problema si está utilizando homebrew:
Elija "Obtener Xcode" en el cuadro de diálogo.
El paso xcode-select repara la instalación de Xcode y la instalación de Xcode Command Line Utils. Descubrí que no tenía /usr/include/iconv.h debido a algún tipo de problema con las actualizaciones o restauraciones de O / S de las copias de seguridad. Si no tiene ese archivo de encabezado y /usr/lib/libconv.dylib después de ejecutar xcode-select, lo más probable es que necesite arrastrar Xcode de la carpeta de la Aplicación a la papelera y reinstalar y luego descargar manualmente las Herramientas de línea de comandos para Xcode de https://developer.apple.com/downloads/index.action e instálelo.
Entonces necesitas desvincular el libiconv de homebrew. No necesitas esto. Y clang realmente seleccionará /usr/local/include/iconv.h sobre /usr/include/iconv.h y #definirá iconv_open a libiconv_open pero luego se vinculará contra /usr/lib/libiconv.dylib que no tiene libiconv_open que es lo que hace que las fallas de mkmf encuentren libiconv. Lo que debe hacer es eliminar el enlace de iconv.h para que nokogiri no lo encuentre.
Entonces solo construye nokogiri normalmente.
Para los nuevos usuarios, todo lo que debe hacer es instalar xcode con xcode-select e instalar nokogiri, pero si ha encontrado esta pregunta, entonces probablemente tenga una instalación fallida y no una nueva instalación de Mavericks.
Algunas de las otras respuestas aquí son definitivamente incorrectas. La mayoría de ellos intentan usar libiconv fuera de homebrew, lo cual es completamente innecesario. Las respuestas que en
brew link libiconv
realidad están causando el problema de que clang se confunde e intenta leer un archivo de encabezado homebrew y vincularlo con las bibliotecas del sistema. Las respuestas que sugieren--use-system-libraries
son deficientes porque nokogiri necesita vincularse con sus bibliotecas incluidas libxml2 y libxslt porque otras versiones de esas bibliotecas son incompatibles con él. Las respuestas que quieren que compiles de las fuentes son irremediablemente demasiado complicadas.TL; DR:
USUARIOS RVM
Las instalaciones antiguas de RVM pueden tener un libiconv escondido en sus directorios rvm en algún lugar que está en conflicto con las bibliotecas de su sistema. Consulte https://stackoverflow.com/a/11809261/506908 para obtener más información.
USUARIOS MacPorts
Si tiene /opt/local/lib/libiconv.dylib, entonces nokogiri agrega esa ruta a la lista de directorios que busca y encontrará que la instalación de MacPorts es similar a cómo recoge el libiconv homebrew y entra en conflicto con las bibliotecas del sistema. Puedes probar:
Si eso falla debido a dependencias, puede intentar vincular directamente con la versión de MacPorts (sin probar):
fuente
gem install nokogiri -- --with-iconv-dir=/opt/local
funciona bien con MacPortslibiconv
instaladoEste me funcionó
fuente
Me encontré con esto, esta mañana ... después de una actualización a Mavericks. Hicimos muchas cosas Sin embargo, si alguien tiene este problema, aquí hay algunas cosas para probar.
Ejecuté 'xcode-select --install' y luego instalé las herramientas de línea de comandos (me sorprendió que esto no se actualizara en el sistema operativo ugrade). Ejecuté 'rvm implode' (lo construiré de nuevo más tarde).
Unimos dos archivos de salida de error:
~ / .vagrant.d / gems / gems / nokogiri-1.6.3.1 / ext / nokogiri / gem_make.out
~ / .vagrant.d / gems / gems / nokogiri-1.6.3.1 / ext / nokogiri / tmp / x86_64-apple-darwin12.5.0 / ports / libxml2 / 2.8.0 / configure.log
Lo que parecía indicar que el compilador de c estaba usando una configuración sorprendente.
Corrí 'env'
Salida contenida:
Estos archivos no existían en el sistema de archivos ...
Después de todos estos cambios, pasar a una nueva ventana de terminal (por lo que todo estaba fresco). La instalación de vagrant-berkshelf (que a su vez instala nokogiri) funcionó bien.
NOTA: al ejecutar 'env' en la ventana nueva ya no había una configuración para CC o CXX ...
No estoy seguro de la parte clave de esto, o si el orden importa, pero trató de recrear las partes que parecían desempeñar un papel para que esto funcione.
fuente
gem install nokogiri
tiene éxito? ¿Wither con el mensaje "ya instalado" o una instalación exitosa?Según la documentación, a partir de OSX 10.9 y Homebrew 9.5+, probablemente le falten las herramientas de desarrollo.
Instalación de Nokogiri
Solución de problemas
Si tiene problemas para mencionar que falta libiconv, se parece a esto:
Entonces probablemente te faltan las herramientas de desarrollador adecuadas. Esta es una solución realmente fácil:
Esto se verifica trabajando en OSX 10.9 con el compilador clang de xcode.
fuente
Recibí este problema cuando actualicé mi Mac OS a Yosemite. Pude resolver este problema haciendo:
fuente
Tuve un problema similar y la respuesta aceptada solía funcionar para mí. Ahora, sin embargo, he estado viendo un nuevo mensaje de error donde
gmkdir
falta un comando como en esta pregunta:gem install nokogiri -v '1.5.11' falló debido a que: / usr / local / bin / gmkdir: No existe tal archivo o directorio
Lo que funcionó para mí fue primero una pequeña limpieza:
Y luego
brew unlink libiconv
y cualquier otra cosa que necesite desvincular (consulte conbrew doctor
). Luego, las dos líneas mágicas (copiadas de la respuesta vinculada):fuente
Sencillos pasos a seguir antes de comenzar a desinstalar e instalar cualquier cosa. Compruebe si tiene CLT (herramientas de línea de comandos instaladas):
brew config
vea la versión CLT aquí si está instalada sin necesidad de reinstalación.
Esto significa que el problema es con el permiso de que haya reinstalado solo la gema del paquete que no sea sudo. Desinstalar el paquete con
gem uninstall bundler
reinstalar gem bundlergem install bundler
El punto más importante aquí es el permiso bajo el cual se instala el paquete de gemas, nunca se debe suponer.
fuente
En primer lugar, asegúrese de seguir la guía de instalación en nokogiri: http://nokogiri.org/tutorials/installing_nokogiri.html
Después de haber seguido la guía, todavía tenía este problema. Así es como lo resolví:
En primer lugar, instalé iconv usando homebrew: brew install iconv
Luego desinstalé ruby, afortunadamente esto es muy fácil con rvm:
Luego tuve que reinstalar ruby con las siguientes opciones:
Luego creo un conjunto de gemas con la nueva versión ruby:
Entonces finalmente puedo instalar nokogiri así:
fuente
En mi caso, (como con scotchi) la compilación falló debido a una biblioteca iconv incompatible en / opt / local / lib. Por defecto, el proceso de compilación de Nokogiri se ve primero en / opt / local. Para forzarlo a usar un directorio de instalación diferente, / usr / local, por ejemplo, haga lo siguiente:
fuente
Esta publicación de blog propone instalar libiconv manualmente.
Posteriormente, nokogiri se puede instalar con varios interruptores que le indican dónde encontrar libiconv (vea la publicación del blog).
Como nota al margen: después de instalar nokogiri, logré instalar gollum (cuya instalación también falló porque no pudo encontrar iconv). Sin embargo, ahora todavía tengo problemas, porque cuando inicio Gollum, Python se bloquea.
fuente
OBSERVE EL FALTA archivo /lib/iconv/iconv.so en 2.0.0-p247 que está presente en la instalación de gemas 2.0.0-p0.
Copie el archivo sobre
¡AHORA FUNCIONA!
fuente
Tuve que instalar gcc primero antes de ejecutar
./configure --prefix=/usr/local/Cellar/libiconv/1.13.1
fuente