No se puede instalar Nokogiri en CentOS con una versión de Ruby superior a la requerida
gitlab (3)
Después de trabajar con alguien que está más familiarizado con CentOS, descubrí que el problema se debía a que no tenía cmake instalado, además de intentar instalar una gema a través de sudo .
Consejo: Cuando instale gemas, siempre use el usuario raíz.
Debajo está lo que probé en mi servidor CentOS6.5. Ya actualicé Git y Ruby, pero todavía no puedo conseguir que se instale. La primera sección es donde intenté instalarlo como usuario sudo. La segunda sección es cuando intenté instalarlo por root.
¿Alguien puede ofrecer otras ideas sobre cómo solucionar esto? Me está costando encontrar soluciones para este problema.
Sección 1:
[user@server gitlab-rails]$ sudo gem install nokogiri -- --use-system-libraries
[sudo] password for user:
Fetching: mini_portile-0.6.2.gem (100%)
Successfully installed mini_portile-0.6.2
Fetching: nokogiri-1.6.6.2.gem (100%)
ERROR: Error installing nokogiri:
nokogiri requires Ruby version >= 1.9.2.
[user@server gitlab-rails]$ ruby --version
ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-linux]
Sección 2:
[root@server gitlab-rails]# gem install nokogiri -- --use-system-libraries
Building native extensions with: ''--use-system-libraries''
This could take a while...
ERROR: Error installing nokogiri:
ERROR: Failed to build gem native extension.
/usr/local/bin/ruby extconf.rb --use-system-libraries
checking if the C compiler accepts ... yes
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=/usr/local/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-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
extconf failed, exit code 1
Gem files will remain installed in /usr/local/lib/ruby/gems/2.1.0/gems/nokogiri-1.6.6.2 for inspection.
Results logged to /usr/local/lib/ruby/gems/2.1.0/extensions/x86_64-linux/2.1.0-static/nokogiri-1.6.6.2/gem_make.out
Estos mensajes de error me parecen bastante claros: está usando un rubí viejo en primera instancia (y se encuentra con el comportamiento de Rubygems (no con el comportamiento de Nokogiri)), y tratando de vincularlo a una versión anterior (con errores conocidos) de libxml2 en el segundo (este es el control de cordura de Nokogiri).
Si quiere "arreglarlo", asegúrese de estar usando la versión correcta de Ruby, e instale un libxml2 aceptable o permita que Nokogiri use sus versiones originales para usted.
yum install libxslt-devel libxml2-devel
bundle config build.nokogiri --use-system-libraries
bundle install