ruby – 为什么不使用相同的libxml2“gem”和“bundle”?

我似乎处于一种沮丧的递归循环中.我正在尝试“捆绑安装”一个项目,但结果是:

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(使用“sudo find / -name libxml2”)会显示这些目录,所有目录都至少为2.9.0或更高:

> /usr/include / libxml2
> /usr/local/Cellar / libxml2
> /usr/local/opt / libxml2

那么,是不是找不到libxml2的问题?如果是这样,我如何获得bundle install以意识到已经安装了nokogiri,或者至少能够以“gem install”的方式安装它?虽然我想为此找到解决方案,但我真的很想学习“幕后”的内容,以便我将来可以解决问题.

最佳答案 在我的Mac OS X上,我运行了这些命令,问题得到解决.

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