为什么没有"宝石"和"捆绑"使用相同的libxml2?

时间:2015-09-08 20:23:27

标签: ruby gem bundler libxml2

我似乎处于一种沮丧的递归循环中。我试图"捆绑安装"一个项目,但结果是:

An error occurred while installing nokogiri (1.6.6.2), and Bundler cannot continue.
Make sure that `gem install nokogiri -v '1.6.6.2'` succeeds before bundling.

所以我试试:

$ gem install nokogiri -v '1.6.6.2'
Building native extensions.  This could take a while...
Successfully installed nokogiri-1.6.6.2
Parsing documentation for nokogiri-1.6.6.2
Done installing documentation for nokogiri after 2 seconds
1 gem installed

一切都好!除了当我运行"捆绑安装"时,我再次被告知我需要获得" gem install nokogiri -v' 1.6.6.2'"先安装。 AHHHHH。

mkmf.log文件表明这是libxml2的问题(惊喜)。

conftest.c:3:10: fatal error: 'libxml/xmlversion.h' file not found
#include <libxml/xmlversion.h>
         ^
1 error generated.
checked program was:
/* begin */
1: #include "ruby.h"
2: 
3: #include <libxml/xmlversion.h>
4: 
5: #if LIBXML_VERSION < 20621
6: #error libxml2 is way too old
7: #endif
/* end */

因此,搜索libxml2(使用&#34; sudo find / -name libxml2&#34;)会显示这些目录,所有目录都至少为2.9.0或更高:

  • / usr / include / libxml2
  • / usr / local / Cellar / libxml2
  • 的/ usr /本地的/ opt / libxml2的

那么,是不是找不到libxml2的问题?如果是这样,我如何获得bundle install以意识到已经安装了nokogiri,或者至少能够以相同的方式安装它&#34; gem install&#34;呢?虽然我想为此找到解决方案,但我真的很有兴趣了解正在发生的事情&#34;在封面下#34;所以我将来可以排除故障。

1 个答案:

答案 0 :(得分:2)

在我的Mac OS X上,我运行了这些命令,问题已解决。

brew unlink gcc-4.2      # you might not need this step
gem uninstall nokogiri
xcode-select --install
gem install nokogiri