我正在安装Ruby Nokogiri gem并在下面找到错误。
如何诊断并解决它?
# gem install nokogiri
Building native extensions. This could take a while...
ERROR: Error installing nokogiri:
ERROR: Failed to build gem native extension.
...
/opt/ruby/1.9.3-p194/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.
...
/opt/ruby/1.9.3-p194/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 /opt/ruby/1.9.3-p194/lib/ruby/1.9.1/mkmf.rb:506:in `try_cpp'
...
答案 0 :(得分:60)
为了诊断和解决,这对我有用。
要找出失败的内容,请转到您的ruby gems目录。
例如:
$ cd <MY RUBY DIRECTORY>/lib/ruby/gems/2.0.0/gems
如果你不知道你的宝石目录,试试这个:
$ echo $GEM_HOME
/opt/gems/2.0.0
$ cd /opt/gems/2.0.0/gems
我安装的是什么版本的nokogiri?
$ ls -ladg nokogiri-*
nokogiri-1.5.5
转到安装程序目录:
$ cd nokogiri-1.5.5/ext/nokogiri
尝试手动安装:
$ ruby extconf.rb
结果:
checking for libxml/parser.h... *** extconf.rb failed ***
...
我正在使用Ubuntu,所以我搜索任何类似的包:
$ aptitude search libxml
结果:
p libxml2 - GNOME XML library
p libxml2-dev - Development files for the GNOME XML library
...
我相信libxml2会正常工作。
$ apt-get install libxml2
Ruby原生宝石通常需要标头的* -dev包,所以安装它们:
$ apt-get install libxml2-dev
现在我有解析器文件吗?
$ find / | grep libxml/parser.h
是的,结果显示了解析器:
/usr/include/libxml2/libxml/parser.h
现在再次尝试安装,这次提供了libxml2路径:
$ gem install nokogiri -- --with-xml2-dir=/usr/include/libxml2
仍然失败,请阅读mkmf错误日志:
$ more mkmf.log
错误日志显示失败的原因,并且这些行看起来很有希望:
package configuration for libxslt is not found
是否有包装?
$ aptitude search libxslt
结果:
v libxslt-dev
i libxslt-ruby
...
安装dev包:
$ apt-get install libxslt-dev
现在再次尝试安装,并将xslt放在路径上:
$ gem install nokogiri -- \
--with-xml2-dir=/usr/include/libxml2 \
--with-xslt-dir=/usr/include/libxslt
成功!
答案 1 :(得分:10)
&#39;安装Nokogiri&#39;是一个致力于在主要平台上安装Nokogiri的网站 - 以下是关于在Ubuntu上安装Nokogiri的摘录:
因为Nokogiri需要编译并动态链接 无论是libxml2还是libxslt,它都因此而享有盛誉 安装起来很复杂。
从Nokogiri 1.6开始,捆绑了libxml2和libxslt源代码 Nokogiri,并在gem-install-time编译。这里的说明 文档应适用于所有版本1.6.4及更高版本。
Ubuntu / Debian
使用Nokogiri在Ubuntu和Debian上安装Just Work™ vendored libxml2和libxslt:
gem install nokogiri
[...]
使用您的系统库
如果您不想使用Nokogiri的图书馆,那么您可以使用自己的图书馆 首先是系统的libxml2,libxslt和相关库 明白你可能会要求Nokogiri与不受支持的人合作 libxml2的版本。
sudo apt-get install pkg-config gem install nokogiri -- --use-system-libraries
仅供参考 - 我正在使用Nokogiri 1.6.6.2并且它没有“正常工作”。我得到了--use-system-libraries
。
该网站的建议还涵盖OS X - 这对我有用:
gem update --system
xcode-select --install
gem install nokogiri
如果您在任何平台上遇到Nokogiri问题,则应check out the website。
答案 2 :(得分:3)
在CentOS上我需要做的是:
"color"
答案 3 :(得分:1)
由于某些原因无法创建Makefile,可能缺少必要的库和/或标题。
您可能缺少-lz
标志所需的zlib标头,以便正确编译源代码。在Linux上安装:
sudo apt-get install libz-dev
如果缺少libiconv,请尝试安装包含libiconv-hook-dev
标头文件的libiconv-hook
包,例如
sudo apt-get install libiconv-hook1 libiconv-hook-dev
在OS X上,尝试通过以下方式安装开发工具:xcode-select --install
。
如果仍有问题,请查看mkmf.log
文件,了解有关错误的更多具体细节。
在Ubuntu上,尝试以下依赖项修复组合:
sudo apt-get install gcc ruby-dev libxslt-dev libxml2-dev zlib1g-dev
答案 4 :(得分:0)
&#39;无法创建Makefile&#39;您看到的错误也可能是因为您尚未同意Xcode许可(每次更新Xcode后都必须同意)。运行{}
应该为您消除此错误,然后允许您成功运行script2
。