brewで必要なライブラリを入れてそれらを使ってnokogiriをインストールする。
gem install nokogiriでハマったのでメモ。
バージョン
OS X Yosemite 10.10.2
ruby 2.0.0p481
gem 2.4.6
Bundler version 1.7.6
Homebrew 0.9.5
xcode-select version 2339
必要なツール類をインストール
x-codeのcliインストール
xcode-select --install
homebrewで必要なライブラリをインストール
インストール後にlinkを再作成。
$ sudo brew tap homebrew/dupes
$ sudo brew install libxml2 libxslt libiconv
$ sudo brew unlink --force libxml2 && sudo brew link --force libxml2
$ sudo brew unlink --force libxslt && sudo brew link --force libxslt
$ sudo brew unlink --force libiconv && sudo brew link --force libiconv
gemでnokogiriをインストール
ARCHFLAGSを指定して内部ライブラリを使ってnokogiriをインストールすると無事成功。
現在最新の1.6.6.2は入らなかったので1.5.11を使う。
$ sudo ARCHFLAGS="-arch x86_64" gem install nokogiri -v 1.5.11 -- --use-system-libraries --with-iconv-dir="$(brew --prefix libiconv)" --with-xml2-config="$(brew --prefix libxml2)/bin/xml2-config" --with-xslt-config="$(brew --prefix libxslt)/bin/xslt-config"
Building native extensions with: '--use-system-libraries --with-iconv-dir=/usr/local/opt/libiconv --with-xml2-config=/usr/local/opt/libxml2/bin/xml2-config --with-xslt-config=/usr/local/opt/libxslt/bin/xslt-config'
This could take a while...
Successfully installed nokogiri-1.5.11
1 gem installed
エラーの例
libxml2が読み込めない。他にもiconvが読み込めない場合もある。
sudo gem install nokogiri -- --use-system-libraries --with-iconv-dir="$(brew --prefix libiconv)" --with-xml2-config="$(brew --prefix libxml
2)/bin/xml2-config" --with-xslt-config="$(brew --prefix libxslt)/bin/xslt-config"
Building native extensions with: '--use-system-libraries --with-iconv-dir=/usr/local/opt/libiconv --with-xml2-config=/usr/local/opt/libxml2/bin/xml2-config --with-xslt-
config=/usr/local/opt/libxslt/bin/xslt-config'
This could take a while...
ERROR: Error installing nokogiri:
ERROR: Failed to build gem native extension.
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby -r ./siteconf20150308-3032-wc2kc7.rb extconf.rb --use-system-libraries --with-iconv-dir=/usr/loc
al/opt/libiconv --with-xml2-config=/usr/local/opt/libxml2/bin/xml2-config --with-xslt-config=/usr/local/opt/libxslt/bin/xslt-config
checking if the C compiler accepts ... yes
checking if the C compiler accepts -Wno-error=unused-command-line-argument-hard-error-in-future... no
Building nokogiri using system libraries.
libxml2 version 2.6.21 or later is required!
補足
ちょっと古そうだけどbundlerの設定を書き換えるスクリプトを見つけた。
Mac fix - Install Nokogiri gem on OS X 10.9 Mavericks
読み込んでおけば上の--use-system-libraries
以降のオプションは不要。
$ curl -k https://gist.githubusercontent.com/SteveBenner/de51738222e92d606487/raw/7cd7c552894b86895189189bd340bdc6e7f68ddb/macfix1-install-nokogiri.rb|sudo ruby
またNOKOGIRI_USE_SYSTEM_LIBRARIES=1
をセットしてgem installをしているドキュメントもあるのでもし動かなければお試しください。