- 更新日: 2015年6月4日
- Ruby
Nokogiriインストールでlibxml2関連のエラー再発
またしても Rails プロジェクトでの bundle install 時に、Nokogiri のインストールでエラーが発生しました。もう何度目だろう…というくらい毎度 Nokogiri のインストールでこけてます。以下のエントリーも参考。
nokogiri インストール時のエラー Running ‘patch’ for libxml2 2.8.0… ERROR | EasyRamble
今回はちょっと上エントリーとは違う方法で解決しました。
— 環境 —
Mac OS X Yosemite 10.10.3
homebrew 0.9.5($ brew –version)
bundle install の nokogiri インストールでエラー
bundle install しようとしたところ、nokogiri の箇所でこけた。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
$ bundle install --without production --path vendor/bundle ... with native extensions Gem::Ext::BuildError: ERROR: Failed to build gem native extension. ... ************************************************************************ IMPORTANT NOTICE: Buidling Nokogiri with a packaged version of libxml2-2.9.2 with the following patches applied: - 0001-Revert-Missing-initialization-for-the-catalog-module.patch - 0002-Fix-missing-entities-after-CVE-2014-3660-fix.patch Team Nokogiri will keep on doing their best to provide security updates in a timely manner, but if this is a concern for you and want to use the system library instead; abort this installation process and reinstall nokogiri as follows: gem install nokogiri -- --use-system-libraries [--with-xml2-config=/path/to/xml2-config] [--with-xslt-config=/path/to/xslt-config] If you are using Bundler, tell it to use the option: bundle config build.nokogiri --use-system-libraries bundle install Note, however, that nokogiri is not fully compatible with arbitrary versions of libxml2 provided by OS/package vendors. |
ということで、またもや libxml2 絡みの Nokogiri インストール時のエラーです。エラーメッセージを頼りに、アドバイスに従って以下を実行。
1 2 3 4 |
$ bundle config build.nokogiri --use-system-libraries $ bundle install --without production --path vendor/bundle |
これでも駄目でした、またもエラー。
$ brew link libxml2 で解決!
検索しまくって、以下のエントリーを見つけて本当に助かった。ありがとうございました。
OSX – Mac OS X Mavericksで”gem i nokogiri”失敗の解決方法 – Qiita
libxml2, libxslt, libiconv が入ってなかったら、homebrew でインストール。
1 2 3 |
$ brew install libxml2 libxslt libiconv |
続いて、brew link でリンクを作成します。
1 2 3 4 |
$ brew link --force libxml2 $ brew link --force libxslt |
そういえば、先日 brew update したのですけど、その影響でリンクがなくなったのかな…。詳細不明。
そして、brew –prefix ○○ を以下のように指定してインストールします。まずは gem install nokogiri を試しました。
1 2 3 |
$ gem install nokogiri -- --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" |
今度はインストールに成功しました!
1 2 3 4 5 6 7 |
Fetching: nokogiri-1.6.6.2.gem (100%) 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.6.6.2 1 gem installed |
gem list を確認すると nokogori が入っています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
$ gem list *** LOCAL GEMS *** bigdecimal (1.2.4) bundler (1.10.2) io-console (0.4.2) json (1.8.1) mini_portile (0.6.2) minitest (4.7.5) nokogiri (1.6.6.2) psych (2.0.5) rake (10.4.2, 10.1.0) rdoc (4.1.0) test-unit (2.1.3.0) |
bundle install コマンドで入れる場合は以下の通り。
1 2 3 4 |
$ bundle config build.nokogiri --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" $ bundle install --without production --path vendor/bundle |
これで無事に nokogiri のインストールが成功しました。
- Ruby の関連記事
- Gemの作り方(Ruby Gem)
- ローカル開発中のgemをGemfileに書いてインストール
- 熊本地震の余震が夜に多いのは本当か?Rubyプログラムで検証してみた
- El Capitanでgemのnative extensionビルド失敗に対応
- Rubyで親クラスから子クラスの定数を参照
- MacabをRubyで使う
- rbenv/ruby-buildでRuby最新バージョンをインストール
- Rubyでクラスインスタンス変数にインスタンスメソッドからアクセス
- 距離1kmあたりの緯度・経度の度数を計算(日本・北緯35度)
- Google Maps Geocoding APIで住所から緯度・経度を取得するRubyコード
Leave Your Message!