きたももんががきたん。

Ruby の Mechanize の使い始めさん向き解説あります

2010-02-23

真・$HOMEに入れたlibxml2を使うようにgem install nokogiriする方法

真ってなんら

え〜。前回の $HOMEに入れたlibxml2を使うようにgem install nokogiriする方法 が Nokogiri 1.3.1 くらいから動作しなくなりまして、困ったなと思いつつ警告だけだから騙し騙し使ってたんですが解決策いきます。


http://wiki.github.com/tenderlove/nokogiri/what-to-do-if-libxml2-is-being-a-jerk


…です。おわり。

……URLを見るとわかるかと思いますが、作者さんのオフィシャル情報ですね。
世の中そんなもんだと思います。
細かく条件変えて何度もインストールしまくって原因追求して悩んでた途中でこれ見つけた俺の青春を返せガッデム。

gem install nokogiri -- \
  --with-xml2-include=libxml/parser.hが見つかるパス \
  --with-xml2-lib=libxml2.soが見つかるパス \
  --with-xslt-dir=libxslt/xslt.hとlibexslt/exslt.hが見つかるパス

となっております。LD がウンタラとか指定が複雑だった前回までが嘘のようです。「空っぽ」の -- は --with... オプションを始める前に必ずつけてください。これのあとに gem コマンドのオプションはつけてはいけません。
./configure --prefix=$HOME/usr/local とした場合は


gem install nokogiri -- --with-xml2-include=$HOME/usr/local/include/libxml2 --with-xml2-lib=$HOME/usr/local/lib --with-xslt-dir=$HOME/usr/local


です。XSLTの勝手インストールをしなかった場合は最後の --with-xslt-dir は書かなくても動作しそうな気がします。

libxml2 と libxslt のソースからインストール
# cd source
# libxml2 と libxslt の 最新ソースを取得
wget ftp://xmlsoft.org/libxml2/LATEST_LIBXML2
wget ftp://xmlsoft.org/libxml2/LATEST_LIBXSLT

# libxml2 からインストール
tar xzvf LATEST_LIBXML2
cd libxml2-2.7.7/
# $HOME/usr/local/lib/libxml2.so になるようにインストールしたい
./configure --prefix=$HOME/usr/local
make
make install

# libxslt(とlibexslt)をインストール
# sudo apt-get install libgcrypt-dev
tar xzvf LATEST_LIBXSLT
cd libxslt-1.1.26/
./configure --prefix=$HOME/usr/local --with-libxml-src=../libxml2-2.7.7
make
make install

libxml2 はそうでもないのですが、libxslt は

  • libxml2 (のソース)
  • 外部ライブラリ libgcrypt-dev (RedHat 系列では libgcript-devel)

が必須です。libgcrypt-dev の本体は libgcrypt11-dev かもしれません。aptitude や yum や 各種パッケージマネージャでインストールしてください。
configure の時点で libxml2 のヘッダファイル等が必要なのですが、これは手元にある libxml2 のソースディレクトリを指定することで充当できます。(システム側に libxml2-dev などがインストールされているとそちらを見てしまうので明示的に手元を指定してください)
Python のチェックもあった気がしますが気にしないことにします。configure で詰まったら適当なライブラリとか入れてください。

gem install -V nokogiri と -V オプションつきでインストールするとバイナリビルドのときの表示が省略されません。原因究明にどうぞ。

Ruby1.9.1 の場合、rubygems1.3.5 ではディレクトリ指定が無視され rubygems1.3.6 では動作しました(なんで?)。
gem だけローカルに入れてる場合は $HOME/ruby/バージョン/gems/rubygems-update-1.3.6/lib に行って sudo ruby1.9 ./setup.rb とか sudo ruby ./setup.rb とかしてください。


検索引っかかる用警告文字列
WARNING: Nokogiri was built against LibXML version 2.6.32, but has dynamically loaded 2.7.6
あと、毎回の gem update のときに自動でオプション指定できるような方法をご存知の方いればプリーズ

投稿したコメントは管理者が承認するまで公開されません。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証