Usuario de Mac y obtener ADVERTENCIA: Nokogiri fue construido contra LibXML versión 2.7.8, pero ha cargado dinámicamente 2.7.3


He hecho todo tipo de investigación y probado muchas cosas diferentes. Sé que esta pregunta ha sido respondida muchas veces, pero ninguna de las soluciones sugeridas está funcionando para mí.

Después de actualizar a Lion estoy recibiendo fallos de segmentación en Ruby. Estoy bastante seguro de que es Nokogiri. Así que instalé libxml2 a través de Homebrew. Corrí brew link libxml2. Luego reinstalé Nokogiri usando esa versión de la biblioteca.

Como prueba:

$ nokogiri -v
# Nokogiri (1.5.0)
---
warnings: []
nokogiri: 1.5.0
ruby:
  version: 1.9.2
  platform: x86_64-darwin11.0.0
  description: ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-darwin11.0.0]
  engine: ruby
libxml:
  binding: extension
  compiled: 2.7.8
  loaded: 2.7.8

Ya he incluido Nokogiri en la parte superior de mi gemfile y también lo he requerido en mi archivo de entorno. No tengo idea de por qué sigo recibiendo esa advertencia.

¿Alguna sugerencia o idea para asegurarse de que está cargando la versión correcta de libxml2?

Author: the Tin Man, 2011-07-23

15 answers

Acabo de pasar la mayor parte de la mañana trabajando en esta advertencia. Esta solución es para las personas que utilizan Mac OS Lion. La solució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é apunte libxml2 Nokogiri, 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 (no /usr/local).

As mencionado 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 comandos, 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 está cargando libxml2, con Ruby y Rails usando el libxml2 cargado por el sistema y la línea de comandos usando libxml2 desde la ruta del entorno. De todos modos, esto silencia el error para mí.

Lo diré de nuevo – esto es sólo para León. La solución anterior funcionará para Snow Leopard.

Este es el final de la respuesta. Deja de leer aquí.


OK, no dejaste de leer... bien...

NO SE RECOMIENDA!!!!!!

Usted ha sido advertido. Puede verificar que Mac OSX está cargando la biblioteca libxml2 en su bootstrap deshabilitando libxml2 encontrado en /usr/lib. Hacer algo como copiar todas las versiones de libxml2*.dylib a libxml2*.dylib.old (en mi máquina esto fue libxml2.2.7.3, libxml2.2 y libxml2).

Después de hacer esto, ejecutar Nokogiri no producirá ningún error. Esto se debe a que no puede encontrar el libxml2 cargado y ahora seguirá la ruta del entorno, encontrando finalmente libxml2.2.7.8 en /opt/local.

PERO no podrá copiar los antiguos archivos libxml de nuevo. Esto se debe a que el sistema operativo necesita el libxml2 que se cargó en el bootstrap.

Apagando y encendiendo de nuevo se ladrillo su máquina. La pantalla de inicio de sesión se colgará y colgará y colgará. Energía apagado y encendido de nuevo en modo de usuario único (mantenga pulsada la orden -S durante el reinicio). Puedes ver cómo se produce el bootstrap. Baja y he aquí, lanza un error que no puede cargar libxml2 y luego deja de funcionar.

Apague y encienda de nuevo. Esta vez arranque en modo de recuperación (ya sea mantener Comando-R o mantenga presionada la opción y luego seleccione el disco de recuperación). En modo recuperación abra el terminal (utilities/terminal). Monte /usr/lib en su HD (pruebe /Volumes/Macintosh\ HD/usr/lib) y copie los archivos libxml2 de nuevo. Reinicie y todo estará bien.

 38
Author: Kenton,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-30 22:29:35

Si instalaste Nokogiri con gem install nokogiri, puedes resolver esta advertencia ejecutando gem pristine nokogiri para recompilar la extensión C de la gema.

Si ha instalado Nokogiri con bundle install, puede resolver esta advertencia ejecutando bundle exec gem pristine nokogiri para recompilar la extensión C de la gema donde sea que Bundler la haya instalado.

 94
Author: indirect,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-02-02 05:30:16

Para arreglar esto si está utilizando homebrew y bundler, agregue gem 'nokogiri' a la parte superior de su Gemfile, a continuación, ejecute estos comandos:

gem uninstall nokogiri libxml-ruby
brew update
brew uninstall libxml2
brew install libxml2 --with-xml2-config
brew install libxslt
bundle config build.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.26/
bundle install

Si no utiliza bundler, ejecute estos comandos en su lugar:

gem uninstall nokogiri libxml-ruby
brew update
brew uninstall libxml2
brew install libxml2 --with-xml2-config
brew install libxslt
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.26/

En tu app, debes requerir a nokogiri primero, para forzar a la app a cargar la biblioteca dinámica libxml2 en lugar de la versión anterior del sistema de libxml2 cargada por gemas que no especificaron qué biblioteca cargar.

 57
Author: Michiel de Mare,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-14 11:24:06

Nada de esto funcionó para mí.

Tenía libxml2 instalado en una versión posterior (2.7.8) con brew. Esto causó que nokogiri compilara contra él y los problemas posteriores. Solución, eliminarlo, a continuación, construir, a continuación, instalar si lo desea.

Esto es lo que funcionó:

  • brew uninstall libxml2 (si está instalado previamente)
  • gem uninstall nokogiri
  • gem install nokogiri
  • brew install libxml2 (optativo)
 27
Author: nkadwa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-03-18 18:25:17

La solución (para mí) después de actualizar a Mountain Lion era mucho más simple:

gem uninstall nokogiri
# (and ignore the warnings about dependencies)
gem install nokogiri
 15
Author: IAmNaN,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-06-06 15:07:05

Según el comentario de patrickmcgraw anterior, simplemente poner nokogiri como la primera entrada en mi Gemfile funcionó para mí. Lo estoy poniendo como una respuesta separada porque el comentario original ha sido enterrado.

source 'http://rubygems.org'
gem 'nokogiri'
gem 'rails', '3.0.20'
etc...
 9
Author: Shaun,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-07-11 00:11:27

Bundler tiene opciones para establecer las ubicaciones de compilación predeterminadas. Así, por ejemplo, con libxml2 instalado a través de macports:

$ bundle config build.nokogiri --with-xml2-include=/opt/local/include/libxml2 --with-xml2-lib=/opt/local/lib --with-xslt-dir=/opt/local

Después de hacer esto y bundle install, la advertencia desapareció.

También hay algunos ejemplos útiles para establecer opciones de compilación en el wiki nokogiri.

 4
Author: foz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-10-02 21:13:37

Parece que ha actualizado sus bibliotecas del sistema después de instalar la gema, por lo que debe actualizar Nokogiri. Para usar la versión lib actual:

 gem install nokogiri -- --use-system-libraries
 3
Author: raittes,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-30 22:30:33

Tuve un problema similar y lo resolví de esta manera:

En mi caso, tengo instalado RVM, y tenía conjuntos de gemas @global y @project. Ambos tenían nokogiri instalado y uno de ellos había construido con diferentes libxml.

Reconstruir ambos (tengo razones para hacer esto) resolvió el problema.

Espero que esto ayude..

 2
Author: shigeya,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-07-27 23:58:13
gem uninstall nokogiri
bundle  #install nokogiri again

Si eso falla con "falta libxml2."and you see gems/nokogiri-1.5.0/ext/nokogiri / mkmf.log intentando usar "/usr/bin / gcc-4.2 ...", entonces te falta /usr/bin / gcc-4.2

Solución:

sudo ln -s /usr/bin/gcc /usr/bin/gcc-4.2

Antes:

$ ll /usr/bin/gcc*
lrwxr-xr-x  1 root  wheel  12 Jan 15 00:16 /usr/bin/gcc -> llvm-gcc-4.2

Después de:

$ ll /usr/bin/gcc*
lrwxr-xr-x  1 root  wheel  12 Jan 15 00:16 /usr/bin/gcc -> llvm-gcc-4.2
lrwxr-xr-x  1 root  wheel  12 Jan 15 21:07 /usr/bin/gcc-4.2 -> /usr/bin/gcc

Si realmente te falta libxml2 libxslt, entonces

brew update
brew install libxml2 libxslt
brew link libxml2 libxslt
bundle config build.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/
bundle

Para tu información: Estoy corriendo Mountain Lion con brew, y bundler.

 1
Author: konyak,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-01-16 02:36:35

Instalación de gema libxml-ruby me ayuda

 1
Author: bmalets,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-04-11 19:47:13

En realidad tenía 2 versiones de libxml instaladas, una de fuente, otra de RPM.

La siguiente es mi solución completa

He desinstalado source (desde el directorio source)

sudo make uninstall

Eliminar paquetes

rm -rf ~/.bundle ~/.bundler

LD actualizado (puede que tenga que hacer esto como root, no sudo)

sudo ldconfig

Luego reinstale el paquete

bundle install
 0
Author: jessebs,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-09-20 16:45:27

Acabo de encontrarme con esto (OS X Lion 10.7.5). Mi mensaje exacto fue: Nokogiri fue construido contra LibXML versión 2.8.0, pero ha cargado dinámicamente 2.7.3

Probé algunas sugerencias mencionadas aquí, ninguna funcionó, pero esto sí:

gem install nokogiri -- --with-xml2-dir=/usr --with-xslt-dir=/opt/local --with-iconv-dir=/opt/local

La explicación es: "Esto sucede porque se usa el libxml2 predeterminado del sistema Lion (cargado en bootstrap), independientemente de con qué libxml2 Nokogiri se haya construido."

Créditos a: https://coderwall.com/p/o5ewia

 0
Author: Arta,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-05-08 21:27:26

OS: Maverick 10.9.3

Ruby 1.9.3

ADVERTENCIA: Nokogiri fue construido contra LibXML versión 2.9.1, pero ha cargado dinámicamente 2.9.0

Mi solución:

gem uninstall nokogiri
brew update
cd /usr/local
brew versions libxml2
git checkout 5dd45d7 /usr/local/Library/Formula/libxml2.rb # libxml version 2.9.0
brew install libxml2
bundle install or gem install nokogiri -v "1.5.11"

Espero que esto ayude

 0
Author: Phan Trung Kien,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-05-30 07:27:42

Si tiene este mensaje y su nokogiri está desactualizado con la versión disponible en la fuente de la gema, simplemente ejecute bundle update nokogiri para obtener el nuevo código y recompilarlo. Tu error debería desaparecer.

 0
Author: Martin Streicher,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-10-05 16:00:07