我正在尝试设置一个新的Redhat VM,它将运行我的Redhat Ruby 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.
思想?
答案 0 :(得分:1)
按照此处的指南:http://nokogiri.org/tutorials/installing_nokogiri.html使用以下的Homebrew 0.9为我的安装工作是他们为Red Hat推荐的。
Red Hat / CentOS
在CentOS和RHEL上安装Nokogiri的最简单方法似乎是包含预构建的nokogiri软件包的EPEL存储库。要使用它,请为您的操作系统安装适当的epel-release软件包,然后运行:
sudo yum install -y rubygem-nokogiri
使用gem install进行安装有点复杂,因为中央存储库提供的软件包的使用年限。如果你安装了rubygems,你可以通过gem install安装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 从ftp://xmlsoft.org/libxml2/下载最新的libxml2和libxslt 。/配置 ;制作sudo make install 然后安装nokogiri,指定libxml2和libxslt安装目录:
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头文件安装在root include目录中,但libxml2头文件安装在名为libxml2的子目录中。)
或者,您知道,您安装了libxml和libxslt的目录。祝你好运。
答案 1 :(得分:1)
以下是我安装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。不要这样做。 RVM directions for installing gems具体说:
不要使用sudo ......
使用RVM宝石。当您执行sudo时,您正在以root身份运行命令,另一个用户在另一个shell中运行,因此当命令在sudo下运行时(例如GEM_HOME等等),RVM为您完成的所有设置都将被忽略。所以重申一下,只要你'sudo&#39;您作为根系统用户运行,它将清除您的环境以及它创建的任何文件都无法被您的用户修改,并将导致奇怪的事情发生。 (你会开始认为有人有你的应用程序的巫毒娃娃......)
下一步:
checking for libxml/parser.h... *** extconf.rb failed ***
您似乎错过了libxml的开发包。
答案 2 :(得分:0)
尝试访问mkmf.log文件,看看其中列出了哪些信息。我在Mac OS上遇到了类似的问题,我记得因为文件损坏而不得不删除文件。
答案 3 :(得分:0)
因为这个错误而挣扎了几个小时,最后我需要的是:
yum install cmake
欢呼声
答案 4 :(得分:0)
在CentOS上,缺少的编译器环境是我的gem问题的原因:
memset