gpt4 book ai didi

ruby - 如何使用 mkmf.log 提示找不到 libiconv 安装 Nokogiri Ruby gem?

转载 作者:数据小太阳 更新时间:2023-10-29 06:27:03 24 4
gpt4 key购买 nike

我正在安装 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'
...

最佳答案

为了诊断和解决问题,以下是对我有用的方法。

要找出失败的原因,请转到您的 ruby​​ gems 目录。

例如:

$ cd <MY RUBY DIRECTORY>/lib/ruby/gems/2.0.0/gems

如果你不知道你的 gem 目录,试试这个:

$ 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 原生 gem 通常需要 *-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
...

安装开发包:

$ apt-get install libxslt-dev

现在再次尝试安装,并将 xslt 放在路径上:

$ gem install nokogiri -- \
--with-xml2-dir=/usr/include/libxml2 \
--with-xslt-dir=/usr/include/libxslt

成功!

关于ruby - 如何使用 mkmf.log 提示找不到 libiconv 安装 Nokogiri Ruby gem?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12336160/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com