ruby-on-rails - que - nokogiri gem
Nokogiri ''No se pudo construir la extensión nativa de la gema'' cuando ejecuto la instalación del paquete (16)
El error indica que su biblioteca del sistema libxml2 está desactualizada. Necesitas la versión 2.6.21 o posterior.
En mi sistema Debian / ubuntu, nokogiri compila para mí, y puedo ver que tengo la versión 2.9.1
dpkg -l | grep libxml2-dev
ii libxml2-dev:amd64 2.9.1+dfsg1-3 amd64 Development files for the GNOME XML library
Tienes tres opciones aquí.
Compruebe si su gestor de paquetes del sistema operativo proporciona una versión más nueva de la biblioteca libxml2
Descargue el último código fuente libxml2, compílelo e instálelo
- Especifique manualmente una versión anterior de nokogiri en su Gemfile que funcione con una biblioteca libxml2 anterior. El registro de cambios de nokogiri muestra que no tendrás este problema con la versión 1.4.7 de nokogiri (aunque el uso de una versión anterior puede exponerte a problemas de seguridad)
Para la solución n. ° 3, pondría esto en su gemfile: gem ''nokogiri'', ''1.4.7''
Estoy ejecutando bundle install
y obtengo este error:
Building nokogiri using system libraries.
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby extconf.rb --use-system-libraries
Building nokogiri using system libraries.
libxml2 version 2.6.21 or later is required!
*** 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
--with-zlib-dir
--without-zlib-dir
--with-zlib-include
--without-zlib-include=${zlib-dir}/include
--with-zlib-lib
--without-zlib-lib=${zlib-dir}/lib
--with-xml2-dir
--without-xml2-dir
--with-xml2-include
--without-xml2-include=${xml2-dir}/include
--with-xml2-lib
--without-xml2-lib=${xml2-dir}/lib
--with-libxml-2.0-config
--without-libxml-2.0-config
--with-pkg-config
--without-pkg-config
--with-xslt-dir
--without-xslt-dir
--with-xslt-include
--without-xslt-include=${xslt-dir}/include
--with-xslt-lib
--without-xslt-lib=${xslt-dir}/lib
--with-libxslt-config
--without-libxslt-config
--with-pkg-config
--without-pkg-config
--with-exslt-dir
--without-exslt-dir
--with-exslt-include
--without-exslt-include=${exslt-dir}/include
--with-exslt-lib
--without-exslt-lib=${exslt-dir}/lib
--with-libexslt-config
--without-libexslt-config
--with-pkg-config
--without-pkg-config
extconf failed, exit code 1
Gem files will remain installed in /Users/myuser/projectpath/vendor/bundle/ruby/2.0.0/gems/nokogiri-1.6.2.rc2 for inspection.
Results logged to /Users/myuser/projectpath/vendor/bundle/ruby/2.0.0/extensions/universal-darwin-13/2.0.0/nokogiri-1.6.2.rc2/gem_make.out
An error occurred while installing nokogiri (1.6.2.rc2), and Bundler cannot continue.
Make sure that `gem install nokogiri -v ''1.6.2.rc2''` succeeds before bundling.
¿Alguna idea de lo que podría ser esto?
EDITAR:
También instalé nokogiri siguiendo las instrucciones en el tutorial , y lo extraño es que la gema se instaló con éxito. Cuando ejecuto gem list
, tengo nokogiri (1.6.2.1)
, pero al ejecutar bundle install
muestra el error.
En Amazon Linux, tuve que instalar estas dos bibliotecas de desarrollo y luego especificar la ruta de inclusión para libxml2
$ yum install libxml2-devel libxslt-devel
$ gem install nokogiri -- --use-system-libraries=true --with-xml2-include=/usr/include/libxml2/
En Mavericks, esta solución alternativa funcionó para mí:
gem install nokogiri -- --use-system-libraries=true --with-xml2-include=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/libxml2
Ver: https://github.com/sparklemotion/nokogiri/issues/1099#issuecomment-43023208
En OSX 10.12 (Sierra) esto funcionó para mí:
gem install nokogiri -- --use-system-libraries=true --with-xml2-include=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/libxml2
En Yosemite 10.10, esta solución funcionó para mí:
gem install nokogiri -- --use-system-libraries
En Yosemite 10.10, los siguientes pasos resolvieron completamente mis problemas:
-
sudo xcode-select -switch /Library/Developer/CommandLineTools
-
gem uninstall nokogiri libxml-ruby
-
gem install nokogiri
En Yosemite 10.10.1, este paso no ayudó (puede ser que funcione para otros)
gem install nokogiri -- --use-system-libraries
Básicamente el problema en mi local se debió a libxml2
, por lo que la solución siguiente fue el truco
bundle config build.nokogiri "--use-system-libraries --with-xml2-include=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/libxml2
bundle install
Este hilo en GitHub me dio el truco que necesitaba para instalar Nokogiri 1.6.2:
Mi ~ / .gitconfig tenía la configuración
autocrlf = input
. Cuando elimino esta configuración, la construcción de nokogiri tiene éxito.
Este es un hilo antiguo, pero me tocó problemas similares, y la solución en mi caso fue bastante diferente a la publicada hasta ahora.
Después de algunas excavaciones, encontré este hilo: https://github.com/bundler/bundler/issues/2648#issuecomment-25124800
Habla de bundler usando una versión diferente de ruby a la utilizada por gem.
De la pasta de OP, podemos ver que bundler está usando la copia del sistema Mac de ruby: /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby
En mi caso, descubrí que la gema provenía de brebaje; which gem
dio /usr/local/bin/gem
que se /Cellar/ruby/2.3.3/bin/gem
a /Cellar/ruby/2.3.3/bin/gem
. Creo que el caso del OP fue el mismo.
Entonces, gem y bundler no funcionan con la misma instalación de ruby, lo que explica por qué el OP ve esto:
Cuando ejecuto gem gem list, tengo nokogiri (1.6.2.1), pero al ejecutar bundle install muestra el error.
En mi caso, simplemente ejecuté el gem install bundler
, que hizo que el bundler comenzara a usar la versión de brew de ruby, y todos los problemas desaparecieron.
Esto funcionó para OS X El Capitan:
brew install libxml2 libxslt libiconv
Después de ejecutar the''brew install libxml2 libxslt libiconv ''Puede encontrar que ya están instalados. No se preocupe, nunca está de más comprobarlo.
sudo gem install nokogiri -v ''1.6.7'' -- --use-system-libraries --with-xml2-include=/usr/include/libxml2 --with-xml2-lib=/usr/lib
bundle install
Cambie la versión de nokogiri, si es necesario. p.ej
sudo gem install nokogiri -v ''1.6.5'' -- --use-system-libraries --with-xml2-include=/usr/include/libxml2 --with-xml2-lib=/usr/lib
Los consejos anteriores no me ayudaron, aquí está la solución para OS 10.9:
brew install libxml2
bundle config build.nokogiri "--use-system-libraries --with-xml2-include=/usr/local/opt/libxml2/include/libxml2"
bundle install
Para #CentOS tuve que hacer lo siguiente:
gem update --system
yum install libxml2-devel libxslt-devel ruby-devel
gem install nokogiri -- --use-system-libraries
Para Mac, la razón por la que falló es que no tenía las últimas herramientas de desarrollo de Xcode. Nokogiri ya se ha empaquetado con libxml2. Por la falta de las últimas herramientas de desarrollo de Xcode, no puede construir extensiones nativas.
Para actualizar Xcode Developer Tools usando:
xcode-select --install
Y entonces:
gem install nokogiri
Si lo arreglas usando
gem install nokogiri -- --use-system-libraries
puede recibir una advertencia similar más adelante:
WARNING: Nokogiri was built against LibXML version 2.9.3, but has dynamically loaded 2.9.0
También tuve algunos problemas para instalar nokogiri, luego de instalar los siguientes paquetes, funcionó para mí:
libxslt-dev
libxml2-dev
libruby1.8
libreadline-ruby1.8
libopenssl-ruby
libxml2
No estoy seguro, cuál fue exactamente necesario.
Tuve este problema exacto. Corro un entorno de rieles en un mac. Después de pasar de Yosemite a Sierra, creo que fue cuando comenzó.
Para solucionar el problema, solo tuve que instalar las xcode command line tools
. No sé si la actualización Sierra los eliminó o qué.
xcode-select --install
(esto instalará las xcode command line tools
)
También otro síntoma ... cosas como el estado de git no funcionarán. Después de esto, pude hacer rails nueva aplicación y estaba bien.
http://nokogiri.org/tutorials/installing_nokogiri.html . Consulte este enlace e instale las dependencias requeridas para nokogiri. Entonces ejecuta esto
-
bundle config build.nokogiri --use-system-libraries
-
bundle install