nokogiri - Errores al usar rspec, bibliotecas perdidas después de instalar Homebrew y desinstalar MacPorts
rsync libiconv (4)
Puede haber dado un paso más allá de mi conocimiento. Instalé Homebrew y después de que continuara avisándome sobre la instalación de MacPorts lo desinstalé. Pero ahora mis pruebas rspec no se ejecutan.
Estos son los errores que obtengo:
/Users/mark/.rvm/gems/ruby-1.9.2-p180/gems/nokogiri-1.4.4/lib/nokogiri.rb:13:in `require'': dlopen(/Users/mark/.rvm/gems/ruby-1.9.2-p180/gems/nokogiri-1.4.4/lib/nokogiri/nokogiri.bundle, 9): Library not loaded: /opt/local/lib/libiconv.2.dylib (LoadError)
Referenced from: /Users/mark/.rvm/gems/ruby-1.9.2-p180/gems/nokogiri-1.4.4/lib/nokogiri/nokogiri.bundle
Reason: Incompatible library version: nokogiri.bundle requires version 8.0.0 or later, but libiconv.2.dylib provides version 7.0.0 - /Users/mark/.rvm/gems/ruby-1.9.2-p180/gems/nokogiri-1.4.4/lib/nokogiri/nokogiri.bundle
.....
.....
He instalado libiconv a través de Homebrew, pero eso no lo solucionó. Se queja de los números de versión de libiconv. ¿Este es el problema?
¿Qué está pasando aquí y qué debo hacer?
En general, este problema es causado por no poder encontrar el libiconv correcto . Así es como resuelvo mi problema:
Verifique la salida de otool -L /usr/lib/libiconv.2.dylib
. Obtuve el siguiente resultado:
/usr/lib/libiconv.2.dylib (compatibility version 7.0.0, current version 7.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 169.3.0)
Luego instalo libiconv con Homebrew, brew install libiconv
, y muestro dónde fue instalado usando brew list libiconv
. Obtuve el siguiente resultado:
/usr/local/Cellar/libiconv/1.14/bin/iconv
/usr/local/Cellar/libiconv/1.14/include/ (3 files)
/usr/local/Cellar/libiconv/1.14/lib/libcharset.1.dylib
/usr/local/Cellar/libiconv/1.14/lib/libiconv.2.dylib
/usr/local/Cellar/libiconv/1.14/lib/ (3 other files)
/usr/local/Cellar/libiconv/1.14/share/doc/ (6 files)
/usr/local/Cellar/libiconv/1.14/share/man/ (6 files)
libiconv está instalado en /usr/local/Cellar/libiconv/1.14/lib/libiconv.2.dylib
. Luego verifico la versión de libiconv recién instalado, otool -L /usr/local/Cellar/libiconv/1.14/lib/libiconv.2.dylib
, y obtuve el siguiente resultado:
/usr/local/Cellar/libiconv/1.14/lib/libiconv.2.dylib:
/usr/local/opt/libiconv/lib/libiconv.2.dylib (compatibility version 8.0.0, current version 8.1.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 169.3.0)
La versión es correcta, y tenemos que hacer que esta biblioteca esté disponible para Ruby . Crear un enlace de símbolo es una solución rápida:
sudo ln -s /usr/local/opt/libiconv/lib/libiconv.2.dylib /opt/local/lib/libiconv.2.dylib
FWIW, me encontré con el mismo problema y si está vendorizando sus gemas, tendrá que eliminar la gema ofensiva de vendor / ruby, ya que una desinstalación gem + no siempre es eficiente. Supongo que el bundler deja restos de memoria caché de gemas y sus respectivas libs, incluso cuando ejecuta una nueva instalación.
Tengo cosas que funcionan de nuevo para cualquier persona interesada. Quité y reinstalé la gema nokogiri y todo parece estar funcionando de nuevo.
Tuve que volver a instalar libxml-ruby además de nokogiri para que las cosas funcionen nuevamente.