あーかいぶすハイディフィニション

ここはもう更新しとらんのじゃ

IMPORTANT! Nokogiri builds and uses a packaged version of libxml2.

先週今週と、週末を挟んでアップデートしたらのこぎりがアップデートされて不審な動きをしていたので、Dev->Stg->Prod とアップデートしたら、Stg 環境だけエラーを吐いて bundle update 失敗しました。

bundle update nokogiri

かみなりじゃないわ、いかづちよ!という訳で kaminari を利用しているので、依存関係にある nokogiri のアップデートを検知してアップデートされたのですが、以下のように不審なメッセージが。

Building libxml2-2.8.0 for nokogiri with the following patches applied:
	- 0001-Fix-parser-local-buffers-size-problems.patch
	- 0002-Fix-entities-local-buffers-size-problems.patch
	- 0003-Fix-an-error-in-previous-commit.patch
	- 0004-Fix-potential-out-of-bound-access.patch
	- 0005-Detect-excessive-entities-expansion-upon-replacement.patch
	- 0006-Do-not-fetch-external-parsed-entities.patch
	- 0007-Enforce-XML_PARSER_EOF-state-handling-through-the-pa.patch
	- 0008-Improve-handling-of-xmlStopParser.patch
	- 0009-Fix-a-couple-of-return-without-value.patch
	- 0010-Keep-non-significant-blanks-node-in-HTML-parser.patch
	- 0011-Do-not-fetch-external-parameter-entities.patch
************************************************************************
IMPORTANT!  Nokogiri builds and uses a packaged version of libxml2.

If this is a concern for you and you want to use the system library
instead, abort this installation process and reinstall nokogiri as
follows:

    gem install nokogiri -- --use-system-libraries

If you are using Bundler, tell it to use the option:

    bundle config build.nokogiri --use-system-libraries
    bundle install

However, note that nokogiri does not necessarily support all versions
of libxml2.

For example, libxml2-2.9.0 and higher are currently known to be broken
and thus unsupported by nokogiri, due to compatibility problems and
XPath optimization bugs.
************************************************************************
以下続く

ヴェッ?!ナンデと思ったので、github の issue や Google group のトピックを見に行ったら「お前ら動かない動かないって文句ばかり言うんじゃねーよ、ライブラリのアップデートしろ!オォン?出来ない?!自分で解決しろボケ!」という作者の無言の熱いメッセージを感じました。本当に作者がそう思ってたのかはわかりませぬ。
とりあえず上記メッセージにも書いてありますが「システムワイドのライブラリと利用するなら、このプロセスを中断して再度オプションつけて実行してね」というのがこの問題(というか、ライブラリを別途用意される現象)の回避方法です

こけた

とりあえずこれこけた所のエラーメッセージ参考にする限り、therubyracer の libv8 バイナリ配布?みたいな解決方法なんかな。

Extracting libxml2-2.8.0.tar.gz into tmp/x86_64-unknown-linux-gnu/ports/libxml2/2.8.0... OK
Running patch with /var/www/dev-petitwedding.l-brain-sys.com/vendor/bundle/ruby/2.0.0/gems/nokogiri-1.6.2.1/ports/patches/libxml2/0001-Fix-parser-local-buffers-size-problems.patch...
Running 'patch' for libxml2 2.8.0... ERROR, review 'tmp/x86_64-unknown-linux-gnu/ports/libxml2/2.8.0/patch.log' to see what happened.
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration options.

libxml2-2.8.0.tar.gz を持ってきて、パッチ当てたライブラリを作成して、nokogiri はそのライブラリを参照するよ、って事だと思うんですけど、まあ僕の環境では何事も無く成功したパターンと、上記のように失敗したパターンの両方があってよくわかりません。
幸い、ミドルウェアのメンテナンスは特定のバージョンに依存したりしていなかったので、常に yum に提供されてる最新版を利用しています。なので、システムワイドの(いわゆるよく言われる「いままで利用していた」)ライブラリを参照するようにして解決しました。

解決した
[apache@localhost rails_root]$ bundle config build.nokogiri --use-system-libraries
[apache@localhost rails_root]$ bundle update

メッセージには bundle install と書いてありますが、bundle に古いバージョンがある場合は、update でダイジョブです、特に消す必要もないです。

システムワイドのライブラリじゃなくて、nokogiri がインストールするライブラリ使いたい

知らんわからん、自分の環境の失敗したログ見て試してくれ(ゲッソリ)