在Redhat虚拟机上安装Nokogiri失败



我正在尝试设置一个新的Redhat VM,它将运行我的RedhatRuby on Rails应用程序。

我正在尝试bundle install,但它不起作用。它一直告诉我要安装Nokogiri,但我确实安装了它,但我仍然收到错误。

以下是我如何安装Nokogiri

$ sudo gem install nokogiri -v 1.5.11
Building native extensions.  This could take a while...
Successfully installed nokogiri-1.5.11
1 gem installed

然后,在我的Rails应用程序中,我执行bundle install,并得到以下错误:

Installing nokogiri (1.5.11) 
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.
    /home/gsidevas/.rvm/rubies/ruby-1.9.3-p448/bin/ruby extconf.rb 
checking for libxml/parser.h... *** 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=/home/gsidevas/.rvm/rubies/ruby-1.9.3-p448/bin/ruby
--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-iconv-dir
--without-iconv-dir
--with-iconv-include
--without-iconv-include=${iconv-dir}/include
--with-iconv-lib
--without-iconv-lib=${iconv-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-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-libxml-2.0-config
--without-libxml-2.0-config
--with-libiconv-config
--without-libiconv-config
  /home/gsidevas/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/1.9.1/mkmf.rb:381:in `try_do': The compiler   failed to generate an executable file. (RuntimeError)
  You have to install development tools first.
from /home/gsidevas/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/1.9.1/mkmf.rb:506:in `try_cpp'
from /home/gsidevas/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/1.9.1/mkmf.rb:970:in `block in find_header'
from /home/gsidevas/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/1.9.1/mkmf.rb:790:in `block in checking_for'
from /home/gsidevas/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/1.9.1/mkmf.rb:284:in `block (2 levels) in  postpone'
from /home/gsidevas/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/1.9.1/mkmf.rb:254:in `open'
from /home/gsidevas/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/1.9.1/mkmf.rb:284:in `block in postpone'
from /home/gsidevas/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/1.9.1/mkmf.rb:254:in `open'
from /home/gsidevas/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/1.9.1/mkmf.rb:280:in `postpone'
from /home/gsidevas/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/1.9.1/mkmf.rb:789:in `checking_for'
from /home/gsidevas/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/1.9.1/mkmf.rb:969:in `find_header'
from extconf.rb:116:in `<main>'

Gem files will remain installed in /home/gsidevas/.rvm/gems/ruby-1.9.3-p448/gems/nokogiri-1.5.11 for  inspection.
Results logged to /home/gsidevas/.rvm/gems/ruby-1.9.3-p448/gems/nokogiri-1.5.11/ext/nokogiri/gem_make.out
An error occurred while installing nokogiri (1.5.11), and Bundler cannot
continue.
Make sure that `gem install nokogiri -v '1.5.11'` succeeds before bundling.

想法?

遵循此处的指南:http://nokogiri.org/tutorials/installing_nokogiri.html使用Homebrew 0.9为我的安装工作,下面是他们为Red Hat推荐的。

Red Hat/CentOS

在CentOS和RHEL上安装Nokogiri最简单的方法似乎是EPEL存储库,其中包含预构建的Nokogiri包。要使用它,请为您的操作系统安装适当的epel发布包,然后运行:

sudo yum install -y rubygem-nokogiri

使用geminstall进行安装有些复杂,因为中央存储库中可用的软件包已经过时。如果你安装了rubygems,你可以通过gem安装来安装nokogiri。如果您运行介绍问题,请尝试安装这些软件包。

sudo yum install -y gcc ruby-devel libxml2 libxml2-devel libxslt libxslt-devel

CentOS 5(和RHEL5)安装了libxml 2.6.26,虽然不像Mac Leopard那样过时,但它仍然非常旧(2006年6月发布),并且存在已知问题。

如果您受到任何已知错误的影响或看到奇怪的行为,您可能需要考虑卸载libxml2和libxslt的RPM,并从源代码构建它们。

sudo yum-remove-y libxml2-devel libxslt-devel从下载最新的libxml2和libxsltftp://xmlsoft.org/libxml2/./configure;制作sudo制作安装然后安装指定libxml2和libxslt安装目录的nokogiri:

sudo gem install nokogiri -- --with-xml2-lib=/usr/local/lib 
                             --with-xml2-include=/usr/local/include/libxml2 
                             --with-xslt-lib=/usr/local/lib 
                             --with-xslt-include=/usr/local/include

(请注意,默认情况下,libxslt头文件安装在根include目录中,但libxml2头文件安装到其名为libxml2的子目录中。)

或者,您知道,无论您在哪个目录中安装了libxml和libxslt。祝你好运

以下是我如何安装nokogiri

$ sudo gem install nokogiri -v 1.5.11

    /home/gsidevas/.rvm/rubies/ruby-1.9.3-p448/bin/ruby extconf.rb 

当您使用个人RVM沙箱时,您使用sudo安装了Nokogiri。不要那样做。安装gems的RVM指示特别指出:

不要使用sudo。。。

使用RVM宝石。当你执行sudo时,你正在以root用户的身份运行命令,另一个shell中的另一个用户以及RVM为你所做的所有设置都将被忽略,而命令在sudo下运行(例如GEM_HOME等),一旦你"sudo",你就以root系统用户的身份运行,这将清除你的环境以及它创建的任何文件,但你的用户无法修改这些文件,这将导致奇怪的事情发生。(你会开始认为有人有你的应用程序的巫毒娃娃…)

下一篇:

checking for libxml/parser.h... *** extconf.rb failed ***

看起来您缺少libxml的devel包。

尝试访问mkmf.log文件并查看其中列出的信息。我在Mac操作系统上遇到了类似的问题,我记得我不得不删除一个文件,因为它已经损坏了。

我为这个错误挣扎了几个小时,最后我需要的是:

yum install cmake

欢呼

在CentOS上,缺少编译器环境是我的gem问题的原因:

yum install gcc
yum install cmake
yum install ruby-devel

相关内容

  • 没有找到相关文章