実はhokkai7go

hatenablogに移行しまんた

mechanize install記録

こんにちは、hokkai7goです。
Ruby1.8系でmechanizeをgemからインストールしようとしたのですが、
うまく入らなくて、最近まで放置していました。
しかし、ようやくgemの吐くインストール時のエラーと戦う気になったので、
インストールを成功させてみました。今回のエントリはそのlogみたいなものです。


まずは、インストール時に出てくる情報をなんとなくですが全て追ってみました。
以下に気になった点の抜粋を示そうと思います。

ERROR : Failed to build gem native extension

ああ、gemさんに何か怒られています・・・。


もっと読み進めるとこんな一文が。

Could not create Makefile due to some reason. probably lack of necessary libraries and/or headers.

あんた何かのライブラリ(もしくはヘッダーファイル)足りないわよ?と言っています。
ずらずらと、ヘッダーファイルがあるかどうかを確認して、検索してるをディレクトリをうざったく表示してくれています。
ちょっとここの部分が長すぎて見づらいと思っていた。

/usr/bin/ruby1.8 extconf.rb install mechanize
checking for iconv.h in /opt/local/include/,/opt/local/include/libxml2,/opt/local/include,/opt/local/include,/opt/local/include/libxml2,/usr/local/include,/usr/local/include/libxml2,/usr/include,/usr/include/libxml2,/usr/include,/usr/include/libxml2... yes
checking for libxml/parser.h in /opt/local/include/,/opt/local/include/libxml2,/opt/local/include,/opt/local/include,/opt/local/include/libxml2,/usr/local/include,/usr/local/include/libxml2,/usr/include,/usr/include/libxml2,/usr/include,/usr/include/libxml2... yes
checking for libxslt/xslt.h in /opt/local/include/,/opt/local/include/libxml2,/opt/local/include,/opt/local/include,/opt/local/include/libxml2,/usr/local/include,/usr/local/include/libxml2,/usr/include,/usr/include/libxml2,/usr/include,/usr/include/libxml2... no

以上の通りです。


しかし、よく見てみると次の行にこんな一文が・・・。

libxslt is missing.  try 'port install libxslt' or 'yum install libxslt-devel'

明らかにここで足りないもの指摘してくれています。/(^o^)\ナンテコッタイ

Ubuntu9.04を使っている自分はここで、

apt-get install libxslt-dev

などと入力すればいい訳です。後述しますが、
心配だったので、libxslt-rubyも一緒に入れておきました。


結局うまくいくまでにしたことリスト
1.面倒だったので、sudo apt-get install ruby-full(これでは解決しません)
2.sudo apt-get install libxml2-ruby
3.sudo apt-get install libxslt-dev libxslt-ruby


この後に、

sudo gem install mechanize

とするとうまくできたよ!
やったね、たえちゃん!mechanizeが使えるよ!


オチというか今回のまとめ
gemさんのインストールエラーは見づらいと思う。


理由:コケたところと理由の表示が大半を占めていて、結局何をすればいいか提案してくれているのに文字の海に紛れ込んでしまっているから。
注)Ruby1.9系のgemでは解決されているかもしれませんが、自分は1.9系をそこまで使ったことがないのでよくわかりません。