Pasé la mayor parte de la mañana trabajando en esta advertencia. Esta solución es para personas que usan Mac OS Lion. La corrección anterior usando
bundle config build.nokogiri --with-xml2-include=/opt/local/include/libxml2 --with-xml2-lib=/opt/local/lib --with-xslt-dir=/opt/local
es para Snow Leopard con libxml2 instalado a través de MacPorts.
Con Lion, libxml2 se carga como parte del proceso de arranque. Independientemente de a qué libxml2 Nokogiri esté apuntando, la biblioteca predeterminada del sistema Lion para libxml2 se utilizará en tiempo de ejecución. Lion usa libxml2.2.7.3 que se encuentra en /usr
(not /usr/local
).
Como se mencionó en muchos otros lugares, uno puede simplemente ignorar la advertencia. Si, como yo, la advertencia te vuelve loco, puedes hacer esto:
bundle config build.nokogiri --with-xml2-dir=/usr --with-xslt-dir=/opt/local --with-iconv-dir=/opt/local
Curiosamente, si escribe nokogiri -v
en la línea de comando, obtendrá la advertencia opuesta:
WARNING: Nokogiri was built against LibXML version 2.7.3, but has dynamically loaded 2.7.8
Esto sugiere que hay más sobre cómo se carga libxml2, con Ruby y Rails usando el sistema cargado libxml2 y la línea de comando usando libxml2 desde la ruta del entorno. De todos modos, esto silencia el error para mí.
Lo diré de nuevo, esto es solo para Lion. La solución anterior funcionará para Snow Leopard.
Este es el final de la respuesta. Deja de leer aquí.
OK, no dejaste de leer ... bueno ...
¡¡¡¡¡¡NO RECOMENDADO!!!!!!
Usted ha sido advertido. Puede verificar que Mac OSX esté cargando la biblioteca libxml2 en su bootstrap deshabilitando libxml2 que se encuentra en /usr/lib
. Haga algo como copiar todas las versiones de libxml2*.dylib
to libxml2*.dylib.old
(en mi máquina esto era libxml2.2.7.3
, libxml2.2
y libxml2
).
Una vez hecho esto, la ejecución de Nokogiri no producirá ningún error. Esto se debe a que no puede encontrar el libxml2 cargado y ahora seguirá la ruta del entorno, eventualmente encontrando libxml2.2.7.8
en /opt/local
.
PERO no podrá volver a copiar los archivos libxml antiguos. Esto se debe a que el sistema operativo necesita libxml2 que se cargó en el bootstrap.
Apagar y encender de nuevo bloqueará su máquina. La pantalla de inicio de sesión se colgará, se colgará y se colgará. Apague y encienda nuevamente en modo de usuario único (mantenga presionado Command- Smientras se reinicia). Puede ver cómo se produce el arranque. Bajo y he aquí, arroja un error de que no puede cargar libxml2 y luego deja de funcionar.
Apague y encienda de nuevo. Esta vez inicie en modo de recuperación (mantenga presionado Command- Ro mantenga presionado Optiony luego seleccione el disco de recuperación). En modo de recuperación abra el terminal ( utilities/terminal
). Montar /usr/lib
en su disco duro (TRY /Volumes/Macintosh\ HD/usr/lib
) y copiar los archivos libxml2 espalda. Reinicie y todo estará bien.
brew remove --force libxml2
bundle config --delete build.nokogiri
gem uninstall nokogiri libxml-ruby
bundle