「gem」と「bundle」が同じ 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
大丈夫です!ただし、「bundle install」を実行すると、最初に「gem install nokogiri -v ‘1.6.6.2’」を取得してインストールする必要があると再度表示されます。ああああ。
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 以降であるようです。
ということは、libxml2が見つからないことが問題なのでしょうか?もしそうなら、nokogiri がすでにインストールされていることを認識するには、または少なくとも「gem install」と同じ方法でインストールできるように、bundle install を取得するにはどうすればよいでしょうか?この解決策を見つけたいと思っていますが、将来トラブルシューティングできるように、「水面下」で何が起こっているのかを知りたいと思っています。
解決策
Mac OS X でこれらのコマンドを実行したところ、問題は解決されました。
brew unlink gcc-4.2 # you might not need this step
gem uninstall nokogiri
xcode-select --install
gem install nokogiri