Rubyが好きなプログラマーの日記。日々の生活、開発に関するメモとか考えとか。
Nokogiriのv1.6.0をインストールしようとしたところ、下記のようなエラーが出てしまい、インストールできなかったので、 色々と調べて、なんとかインストールできた。
$ gem install nokogiri
Building native extensions. This could take a while...
ERROR: Error installing nokogiri:
ERROR: Failed to build gem native extension.
/usr/local/var/rbenv/versions/2.0.0-p0/bin/ruby extconf.rb
Extracting libxml2-2.8.0.tar.gz into tmp/x86_64-apple-darwin12.5.0/ports/libxml2/2.8.0... OK
Running 'configure' for libxml2 2.8.0... OK
Running 'compile' for libxml2 2.8.0... OK
Running 'install' for libxml2 2.8.0... OK
Activating libxml2 2.8.0 (from /usr/local/var/rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/gems/nokogiri-1.6.0/ports/x86_64-apple-darwin12.5.0/libxml2/2.8.0)...
Extracting libxslt-1.1.26.tar.gz into tmp/x86_64-apple-darwin12.5.0/ports/libxslt/1.1.26... OK
Running 'configure' for libxslt 1.1.26... ERROR, review 'tmp/x86_64-apple-darwin12.5.0/ports/libxslt/1.1.26/configure.log' to see what happened.
上のエラー出力をよくみるとnokogiriが依存しているライブラリlibxml2とlibxsltを展開しようとしている。自分の環境ではhomebrewで2.9.1をインストールしているのだが、それを無視してnokogiriのインストール時に実行されるextconf.rb
が勝手に2.8.0を入れようとしている。libxsltも同様だ。
で、そのソースを読んでみると、NOKOGIRI_USE_SYSTEM_LIBRARIES
という環境変数が定義されていると、依存ライブラリがシステムに既にインストールされているものとして、nokogiriのインストールが実行される。
ということで、homebrewを使ってライブラリを管理している皆さんは、
$ brew install libxml2 libxslt libiconv
$ brew link libxml2 libxslt libiconv
$ NOKOGIRI_USE_SYSTEM_LIBRARIES=yes gem install nokogiri -v '1.6.0'
でインストールしましょう。