如何安装引入nokogiri红宝石宝石与mkmf.log说libiconv的没有发现?(How to

2019-06-28 02:00发布

我安装了Ruby引入nokogiri宝石,并找到下面的错误。

如何诊断这个问题和解决呢?

# 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'
...

Answer 1:

要诊断和解决问题,以下是我工作。

要找出失败了,去你的红宝石宝石目录。

例如:

$ 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

成功!



Answer 2:

安装引入nokogiri网站

“安装引入nokogiri”是一个致力于在各大平台上安装引入nokogiri网站 - 这是关于Ubuntu的安装引入nokogiri的摘录:

由于引入nokogiri需要编译和动态对阵双方libxml2和链接的libxslt,它已经赢得了声誉被安装复杂。

作为引入nokogiri 1.6,libxml2和源的libxslt代码捆绑引入nokogiri,并在宝石安装时编译。 本文档中的说明应适用于所有版本1.6.4及更高版本。

Ubuntu的/ Debian的

安装应该只是工作™在Ubuntu和Debian使用引入nokogiri的vendored libxml2和的libxslt:

 gem install nokogiri 

[...]

使用系统库

如果,而不是引入nokogiri的vendored库,你想使用你的系统的libxml2,和的libxslt相关库,请首先明白,你可能会问引入nokogiri与libxml2的不受支持的版本工作。

 sudo apt-get install pkg-config gem install nokogiri -- --use-system-libraries 

仅供参考 - 我使用的引入nokogiri 1.6.6.2,并没有“只是工作”。 我得到了它与去--use-system-libraries


的Mac OS X

该网站的建议还包括OS X - 这个工作对我来说:
gem update --system xcode-select --install gem install nokogiri


结论

如果您有任何平台上引入nokogiri问题,你应该检查出的网站 。



Answer 3:

在CentOS这里是我需要做的:

gem update --system
yum install libxml2-devel libxslt-devel ruby-devel
gem install nokogiri -- --use-system-libraries


Answer 4:

无法创建Makefile文件由于某些原因,可能是缺乏必要的库和/或头

你可能会丢失其所需的zlib的头-lz标志,以便正确编译源代码。 在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


Answer 5:

该“无法创建的Makefile”你看到的也可能是因为你还没有同意的Xcode许可证错误(你在每次更新Xcode的时间后,同意的话)。 运行sudo xcodebuild -license accept应消除这个错误给你,让你再运行gem install nokogiri成功。



文章来源: How to install Nokogiri Ruby gem with mkmf.log saying libiconv not found?