ruby - ¿Por qué la instalación de Nokogiri en Mac OS falla con la ausencia de libiconv?
macos libxml2 (30)
He intentado instalar Nokogiri en Mac OS 10.9.3 y, sea lo que sea, 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 una gran cantidad de ayuda encontrada en la web, incluyendo la construcción e instalación de libxml2 y libxslt usando brew y compilando 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, parece que libxml2 y libxslt están bien, pero no libiconv.
¿Alguien con un mejor conocimiento de estas cosas sabe cómo instalar Nokogiri?
Al buscar en el archivo mkmf, aparece que nokogiri (o gema, no 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) me funcionó:
$ gem install nokogiri -- --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.26 --with-xml2-dir=/usr/local/Cellar/libxml2/2.7.8/
Tal vez hay algo que arreglar en nokogiri ...
HTH,
Asumiendo que instaló libxml2 y libxslt con MacPorts, entonces aún podría estar recibiendo este error debido a una falta de coincidencia en el orden de incluir rutas y rutas de enlace utilizadas por la llamada a have_func (''iconv_open'', ''iconv.h'')
Solución simple (parche): eliminar libiconv. * En / usr / local / lib
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 pulsé 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.
De acuerdo con la documentación, a partir de OSX 10.9 y Homebrew 9.5+, es probable que le falten las herramientas de desarrollo.
Solución de problemas
Si tiene problemas para mencionar que falta libiconv, tiene un aspecto similar a este:
Installing nokogiri (1.6.2.1) Building nokogiri using packaged libraries.
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.
/usr/local/rvm/rubies/ruby-2.0.0-p0/bin/ruby extconf.rb
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 ***
Entonces probablemente te estás perdiendo las herramientas de desarrollador adecuadas. Esta es una solución realmente fácil:
brew unlink gcc-4.2 # you might not need this step
gem uninstall nokogiri
xcode-select --install
gem install nokogiri
Esto se verifica trabajando en OSX 10.9 con el compilador clang de xcode.
En mi caso, (como con scotchi) la compilación falló debido a una biblioteca de iconos incompatible en / opt / local / lib. Por defecto, el proceso de compilación de Nokogiri mira primero / opt / local. Para obligarlo a usar un directorio de instalación diferente, / usr / local, por ejemplo, haga lo siguiente:
gem install nokogiri -- --with-xml2-lib=/usr/local/lib --with-xml2-include=/usr/local/include/libxml2 --with-xslt-lib=/usr/local/lib --with-xslt-include=/usr/local/include
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í:
Antes que nada, instalé iconv usando homebrew: brew install iconv
Luego desinstalé ruby, afortunadamente esto es muy fácil con rvm:
rvm uninstall 1.9.2
Luego tuve que reinstalar Ruby con las siguientes opciones:
CC=gcc-4.2 rvm install 1.9.2-p290 --with-iconv-dir=/usr/local/Cellar/libiconv/1.13.1
Luego creo un gemset con la nueva versión de ruby:
rvm use 1.9.2@coolproject
Entonces finalmente puedo instalar nokogiri como este:
gem install nokogiri -v=1.4.4 -- --with-xml2-include=/usr/local/Cellar/libxml2/2.7.8/include/libxml2 --with-xml2-lib=/usr/local/Cellar/libxml2/2.7.8/lib --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.26
Esta publicación de blog propone instalar libiconv manualmente.
Posteriormente, nokogiri se puede instalar con una serie de conmutadores que le indican dónde encontrar libiconv (consulte 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). Ahora bien, todavía estoy enfrentando problemas, porque cuando inicio gollum, Python se cuelga.
Este funcionó para mí
sudo env ARCHFLAGS = "- arch x86_64" instalación gema nokogiri: 1.6.6.2 - --use-system-libraries --with-xml = / usr / local / Cellar / libxml2 / 2.9.3 / --with-iconv- dir = / usr / local / Cellar / libiconv / 1.14
Esto funciona para mí:
gem install nokogiri -- --use-system-libraries
Si está usando Bundler, dígale que use la opción:
bundle config build.nokogiri --use-system-libraries
bundle install
Estoy usando ... OS X 10.9.4 Homebrew 0.9.4
Aquí está mi resumen de este hilo para instalar con éxito nokogiri, solucionando la falta de libiconv.
Instale Homebrew Homebrew O actualice a la última usando el siguiente comando
brew update
Instalar libxml2 libxslt
brew install libxml2 libxslt
Enlace ambos libxml2 libxslt
brew link libxml2 libxslt
Si recibes una advertencia para usar --force, solo usa el comando a continuación
brew link --force libxml2 libxslt
Instale las herramientas de comando xCode para permitirle instalar libiconv
xcode-select --install
Instalar libiconv
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz
tar xvfz libiconv-1.13.1.tar.gz
cd libiconv-1.13.1
./configure --prefix=/usr/local/Cellar/libiconv/1.13.1
make
sudo make install
Paso final, instala nokogiri!
gem install nokogiri -- --with-xml2-include=/usr/local/Cellar/libxml2/2.8.0/include/libxml2 --with-xml2-lib=/usr/local/Cellar/libxml2/2.8.0/lib --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.26 --with-iconv-include=/usr/local/Cellar/libiconv/1.13.1/include --with-iconv-lib=/usr/local/Cellar/libiconv/1.13.1/lib
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
y which gem
me daban /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 I: 1. volví a mi directorio de proyectos 2. desinstalé el dependiente 3. (re) brew install libxml2 libiconv libxslt
dependientes: hice una brew install libxml2 libiconv libxslt
4. instalé mi versión de ruby fresh (con rbenv) 5. hice gem install bundler
6. y la bundle install
ejecutó sin problemas.
Nokogiri
estaba bien después de eso.
Para referencia:
╰─% cat .bundle/config
---
BUNDLE_PATH: vendor/bundle
BUNDLE_DISABLE_SHARED_GEMS: ''1''
BUNDLE_JOBS: 4
╰─% which ruby bundle gem
~/.rbenv/shims/ruby
~/.rbenv/shims/bundle
~/.rbenv/shims/gem
Finalmente pude resolver este problema. Ninguna de las soluciones anteriores me lo arregló por completo.
Recibí 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 modificado para dar cuenta de una versión más actual de libxml2):
brew install libxml2
brew link libxml2
# install libxslt from source
wget ftp://xmlsoft.org/libxml2/libxslt-1.1.26.tar.gz
tar -zxvf libxslt-1.1.26.tar.gz
cd libxslt-1.1.26
./configure --prefix=/usr/local/Cellar/libxslt/1.1.26 --with-libxml-prefix=/usr/local/Cellar/libxml2/2.7.8
make
sudo make install
En este punto, seguí las instrucciones en el sitio de nokogiri y probé
gem install nokogiri -- --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.26
Sin embargo, esto aún no funciona porque al compilar libxslt desde el origen, instala la carpeta /include
en un lugar original. Por lo tanto, debe especificar la lib
e include
carpetas por separado como se muestra a continuación:
gem install nokogiri -- --with-xslt-lib=/usr/local/Cellar/libxslt/1.1.26/lib --with-xslt-include=/usr/local/Cellar/libxslt/1.1.26/include/libxslt
Esto todavía no funcionaba (el mismo error de libiconv), así que traté de especificar las tres bibliotecas requeridas (libxslt, libxml2 y libiconv):
gem install nokogiri -- --with-xslt-lib=/usr/local/Cellar/libxslt/1.1.26/lib --with-xslt-include=/usr/local/Cellar/libxslt/1.1.26/include/libxslt --with-iconv-dir=/usr/local/Cellar/libiconv/1.14 --with-xml2-dir=/usr/local/Cellar/libxml2/2.7.8
¡Ahora tengo un error diferente! Todavía era un error, pero al menos era diferente. El proceso de make falló con:
in /opt/local/lib/libz.1.dylib, file was built for unsupported file format which is not the architecture being linked (x86_64) for architecture x86_64
Uhh, ¿qué? Después de mucho buscar en Google, 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-architecture/
Aparentemente, OSX Lion se envía con algunas versiones incorrectas de la biblioteca libz ( libz.dylib, libz.1.dylib, libz.1.2.4.dylib
) y deben reemplazarse con las últimas versiones del Xcode SDK. El artículo lo explica mejor de lo que puedo, así que lea el enlace de arriba para obtener instrucciones específicas.
Una vez que estos fueron reemplazados, corrí
gem install nokogiri -- --with-xslt-lib=/usr/local/Cellar/libxslt/1.1.26/lib --with-xslt-include=/usr/local/Cellar/libxslt/1.1.26/include/libxslt --with-iconv-dir=/usr/local/Cellar/libiconv/1.14 --with-xml2-dir=/usr/local/Cellar/libxml2/2.7.8
de nuevo y todo estaba bien. Espero que esto ayude a alguien más.
Intenté muchas cosas, pero nada funcionó para mí. ¡Finalmente encontré la documentación del iconv y me salvó el día!
Intenta usar las bibliotecas del sistema. OSX viene con libiconv en versiones más nuevas, pero el script de instalación predeterminado parece tener un problema
gem install nokogiri -- --use-system-libraries
Editar: Si usa bundler, como lo menciona Geoff , puede hacer:
bundle config build.nokogiri --use-system-libraries
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 superior, por lo que solo realizo los pasos necesarios.
En Mavericks (OSX 10.9+):
Instalar las herramientas de línea de comandos de Xcode:
xcode-select --install
luego instala tu joya:
gem install nokogiri
Me encontré con esto, esta mañana ... después de una actualización a Mavericks. Hicimos muchas cosas Sin embargo, si alguien está teniendo este problema aquí hay algunas cosas que probar.
Ejecuté ''xcode-select --install'' y luego obtuve las herramientas de línea de comandos instaladas (sorprendió que esto no se actualizó en el sistema operativo). Ejecuté ''rvm implode'' (lo construiré una copia de seguridad más tarde).
Recopilamos juntos 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.
Ejecuté ''env''
Salida contenida:
...
CXX=/usr/local/opt/apple-gcc42/bin/g++-4.2
...
CC=/usr/local/opt/apple-gcc42/bin/gcc-4.2
...
Estos archivos no existían en el sistema de archivos ...
Después de todos estos cambios, se movió a una nueva ventana de terminal (para que todo estuviera fresco). La instalación de vagabunda-berkshelf (que a su vez instala nokogiri) funcionó bien.
NOTA: cuando se ejecutaba ''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 es importante, pero traté de recrear las partes que parecían tener un papel en hacer que esto funcionara.
Necesita actualizar su homebrew a 0.9
luego sigue estos pasos
brew install libxml2 libxslt
brew link libxml2 libxslt
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz
tar xvfz libiconv-1.13.1.tar.gz
cd libiconv-1.13.1
./configure --prefix=/usr/local/Cellar/libiconv/1.13.1
make
sudo make install
sudo ln -s /usr/bin/gcc /usr/bin/gcc-4.2
gem install nokogiri -- --with-xml2-include=/usr/local/Cellar/libxml2/2.9.0/include/libxml2 --with-xml2-lib=/usr/local/Cellar/libxml2/2.9.0/lib --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.28 --with-iconv-include=/usr/local/Cellar/libiconv/1.13.1/include --with-iconv-lib=/usr/local/Cellar/libiconv/1.13.1/lib
Debería verificar la versión de la biblioteca de carpetas.
Recibí este problema cuando actualicé mi Mac OS a Yosemite. Pude resolver este problema haciendo:
xcode-select --install
brew uninstall libiconv
brew install libiconv
gem install nokogiri
Resolví esto en Yosemite
corriendo Ruby 2.1.4
por
- asegúrese de tener xCode 6.1 instalado, luego
-
xcode-select --install
, luego - En AppStore, haga clic en actualizaciones e instale la versión más reciente de las herramientas de línea de comandos (que aparentemente
xcode-select --install
does''txcode-select --install
- suspiro) - luego la
bundle install
funcionó normalmente.
También hice una brew install libiconv
también, pero no estoy convencido de que se necesitara un paso.
Seguí las instrucciones de la página de instalación de nokogiri y también instalé las herramientas xcode. Pero todavía no funcionó para mí.
Luego vi que el comando brew install libxml2 libxslt
genera lo siguiente (entre otras cosas diferentes):
To allow the nokogiri gem to link against this libxslt run:
gem install nokogiri -- --with-xslt-dir=/usr/local/opt/libxslt
Entonces, ejecuto esto y nokogiri se instaló con éxito.
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:
sudo env ARCHFLAGS="-arch x86_64" gem install nokogiri -- --use-system-libraries
Puede que no resuelva nada para el solicitante original, pero esto puede ayudar a alguien.
Nota al margen: nokogiri ha sido mi mayor barrera para usar aplicaciones ruby. Cada vez que alguien depende de una versión diferente, tengo que descubrir cómo construirla. Y mi problema es diferente cada vez.
También puedes hacer esto en Mavericks:
joya instalar nokogiri - --use-system-libraries = true --with-xml2-include = / Applications / Xcode.app / Contents / Developer / Platforms / MacOSX.platform / Desarrollador / SDKs / MacOSX10.9.sdk / usr / include / libxml2
Solo asegúrate de tener xcode instalado
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 tienes instalado, asegúrate de obtener las últimas fórmulas actualizándolas así:
brew update
Nota : En OSX 10.9+ puede que necesite instalar las herramientas de comando xCode para permitirle instalar libiconv.
xcode-select --install
luego instala una versión más nueva de libiconv
brew install libiconv
luego, vincula tus nuevas bibliotecas de iconv:
brew link libiconv
luego instala tu joya
gem install nokogiri -- --with-iconv-dir=/usr/local/Cellar/libiconv/1.14
Tuve problemas similares en Mountain Lion. Resulta que había instalado libiconv vía paquete rvm previamente y esto ya no es necesario para ruby 1.9.3 / Mountain Lion / nokogiri.
Siguiendo el consejo de https://rvm.io/packages/ , eliminé mi directorio $ rvm_path / usr y reconstruí ruby 1.9.3. Después de eso, instalar nokogiri fue una simple instalación de gemas. ¡Sin problemas con las instalaciones de brew / macports / manual source!
Tuve que instalar gcc primero antes de ejecutar ./configure --prefix=/usr/local/Cellar/libiconv/1.13.1
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
un comando gmkdir
como en esta pregunta:
Lo que funcionó para mí fue primero una pequeña limpieza:
brew uninstall libiconv
brew uninstall libxml2
brew uninstall libxslt
Y luego brew unlink libiconv
y todo lo que necesites para desvincular (verifica con brew doctor
). Luego, las dos líneas mágicas (copiadas de la respuesta vinculada):
brew install coreutils
gem install nokogiri
libiconv se eliminó de Homebrew 0.9. Ahora se recomienda compilar libiconv desde el código fuente, luego haga 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
HOMEBREW USUARIOS
Solución correcta para solucionar este problema si está utilizando homebrew:
xcode-select --install
Elija "Obtener Xcode" en el cuadro de diálogo.
brew unlink libiconv
gem install nokogiri
El paso de selección de xcode corrige su 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 de O / S o las restauraciones de las copias de seguridad. Si no tiene ese archivo de cabecera y /usr/lib/libconv.dylib después de ejecutar xcode-select, lo más probable es que necesite arrastrar Xcode desde 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 instalar eso.
Luego necesitas desvincular el libiconv de homebrew. No necesitas esto Y clang realmente tomará /usr/local/include/iconv.h sobre /usr/include/iconv.h y # definirá iconv_open en libiconv_open pero luego enlazará 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, es probable que 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 intenta utilizar libiconv fuera de homebrew, que es completamente innecesario. Las respuestas que brew link libiconv
están causando el problema en el que clang se confunde e intenta leer un archivo de cabecera homebrew y un enlace contra las bibliotecas del sistema. Las respuestas que sugieren --use-system-libraries
son pobres porque nokogiri debe vincularse con sus bibliotecas libxml2 y libxslt combinadas porque otras versiones de esas bibliotecas son incompatibles con ella. Las respuestas que quiere que recopile de las fuentes son demasiado complicadas.
TL; DR:
- Actualiza y / o repara tu instalación de Xcode
- Desenlace su libiconv homebrew ya que tratar de usar eso solo causa problemas
- Construye nokogiri normalmente
USUARIOS RVM
Las instalaciones antiguas de RVM pueden tener un escondite libiconv en sus directorios rvm en algún lugar que están en conflicto con las bibliotecas de su sistema. Consulte https://.com/a/11809261/506908 para obtener más información.
MacPorts USUARIOS
Si tiene /opt/local/lib/libiconv.dylib, 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:
sudo port uninstall libiconv
Si eso falla debido a las dependencias, entonces puede intentar vincular directamente con la versión de MacPorts (no probado):
gem install nokogiri -- --with-iconv-dir=/opt/local
$ gem install iconv # works but it is missing an iconv.so file in ruby 2.0.0-p247
$ ls -1 2.0.0-p0/lib/ruby/gems/2.0.0/gems/iconv-1.0.3/*/*/*.so
2.0.0-p0/lib/ruby/gems/2.0.0/gems/iconv-1.0.3/ext/iconv/iconv.so*
2.0.0-p0/lib/ruby/gems/2.0.0/gems/iconv-1.0.3/lib/iconv/iconv.so*
$ ls -1 2.0.0-p247/lib/ruby/gems/2.0.0/gems/iconv-1.0.3/*/*/*.so
2.0.0-p247/lib/ruby/gems/2.0.0/gems/iconv-1.0.3/ext/iconv/iconv.so*
TENGA EN CUENTA el archivo /lib/iconv/iconv.so FALTA en 2.0.0-p247 que está presente en la instalación de las gemas 2.0.0-p0.
$ rbenv version
2.0.0-p247 (set by /home/XXX/tmp/.ruby-version)
$ rbenv which gem
/home/XXX/.rbenv/versions/2.0.0-p247/bin/gem
$ gem --version
1.8.25
$ rbenv which pry
/home/XXX/.rbenv/versions/2.0.0-p247/bin/pry
$ pry
[1] pry(main)> require ''iconv''
LoadError: cannot load such file -- iconv/iconv.so
from /home/XXX/.rbenv/versions/2.0.0-p247/lib/ruby/site_ruby/2.0.0/rubygems/custom_require.rb:36:in `require''
Copie el archivo
$ pushd ~/.rbenv/versions/
$ cp 2.0.0-p247/lib/ruby/gems/2.0.0/gems/iconv-1.0.3/ext/iconv/iconv.so 2.0.0-p247/lib/ruby/gems/2.0.0/gems/iconv-1.0.3/lib/iconv/
¡AHORA FUNCIONA!
$ pry
[1] pry(main)> require ''iconv''
=> true
$ gem install nokogiri -- --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.26 --with-xml2-dir=/usr/local/Cellar/libxml2/2.7.8/
Igual que el anterior, esta es la solución para homebrew y el uso de gem install (aplicar cambios depende de su versión)
sin embargo, si usa Gemfile y bundle install, debe aplicar la configuración del paquete antes de instalar, aquí el código
$ bundle config build.nokogiri --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.26 --with-xml2-dir=/usr/local/Cellar/libxml2/2.7.8/ --with-iconv-dir=/usr/local/Cellar/libiconv/1.14
de nuevo, aplicar cambios depende de tu versión
Espero que esto te ayudará.
crédito: https://gist.github.com/1344331