Hpricotのインストール

Windows環境で作っている Webサービスをそろそろ Ubuntu の方で動かそうかなと思って、subversionリポジトリから最新をチェックアウトして、とりあえず WEBrick で動かしてみようとすると、「Hpricot がない」というエラーを吐くので、Hpricot をインストールすることにします。

インストール手順

正しいインストール手順はこちら(↓)です。ちなみに、s は sudo です。(なんでも略すのは悪い癖ですね)

$ s apt-get install libc6-dev
$ s apt-get install make gcc
$ s gem install ruby1.8-dev
$ s gem install hpricot

だらだらとしたインストール手順

以下はエラーメッセージでググってくる人のためのだらだらとしたインストール時の記録です。

$ s apt-get install hpricot
E: パッケージ hpricot が見つかりません

apt-get ではインストールできないようです。

$ s gem install hpricot
Select which gem to install for your platform (i486-linux)
 1. hpricot 0.6 (jruby)
 2. hpricot 0.6 (mswin32)
 3. hpricot 0.6 (ruby)
 4. hpricot 0.5 (ruby)
 5. hpricot 0.5 (mswin32)
 6. Skip this gem
 7. Cancel installation
    
ERROR: While executing gem ... (Gem::Installer::ExtensionBuildError) ERROR: Failed to build gem native extension. ruby extconf.rb install hpricot extconf.rb:1:in `require': no such file to load -- mkmf (LoadError) from extconf.rb:1
gem でインストールできるようですが、mkmf がないよと怒られています。extconf.rb というと Ruby でライブラリを作るためのファイルなので、Cのコンパイル環境がいりそうな嫌な予感ですが、とりあえず、目先 mkmf は ruby1.8-dev に入っているようなので、こちらをインストールします。

$ s gem install ruby1.8-dev
以下のパッケージが新たにインストールされます:
  ruby1.8-dev
取得:1 http://security.ubuntu.com gutsy-security/main ruby1.8-dev 1.8.6.36-1ubuntu3.1 [741kB]
ruby1.8-dev (1.8.6.36-1ubuntu3.1) を設定しています ...
ruby1.8-dev のインストールは無事完了です。では、気を取り直して Hpricot のインストールに再チャレンジです。

$ s gem install hpricot
Select which gem to install for your platform (i486-linux)
 3. hpricot 0.6 (ruby)
    
ERROR: While executing gem ... (Gem::Installer::ExtensionBuildError) ERROR: Failed to build gem native extension. ruby extconf.rb install hpricot checking for main() in -lc... no creating Makefile make sh: make: not found
やっぱり「make がない」なんて言ってますので、make と gcc を入れることにします。別に Cのコンパイル環境を入れたくなかったわけじゃないんですけど、ソースからビルドは最後の手段にして、基本、apt-get でとってこれるものを使おうと思っていただけなんです。ま、そんなことはおいといて。

$ s apt-get install make gcc
以下の特別パッケージがインストールされます:
  binutils cpp cpp-4.1 gcc-4.1 gcc-4.1-base
提案パッケージ:
  binutils-doc cpp-doc gcc-4.1-locales gcc-multilib manpages-dev autoconf automake1.9 libtool flex
  bison gdb gcc-doc gcc-4.1-multilib gcc-4.1-doc make-doc
推奨パッケージ:
  libc6-dev libc-dev libmudflap0-dev
以下のパッケージが新たにインストールされます:
  binutils cpp cpp-4.1 gcc gcc-4.1 gcc-4.1-base make
取得:1 http://jp.archive.ubuntu.com gutsy/main binutils 2.18-0ubuntu3 [1461kB]
取得:2 http://jp.archive.ubuntu.com gutsy/main gcc-4.1-base 4.1.2-16ubuntu2 [206kB]
取得:3 http://jp.archive.ubuntu.com gutsy/main cpp-4.1 4.1.2-16ubuntu2 [2330kB]
取得:4 http://jp.archive.ubuntu.com gutsy/main cpp 4:4.1.2-9ubuntu2 [34.0kB]
取得:5 http://jp.archive.ubuntu.com gutsy/main gcc-4.1 4.1.2-16ubuntu2 [580kB]
取得:6 http://jp.archive.ubuntu.com gutsy/main gcc 4:4.1.2-9ubuntu2 [5116B]
取得:7 http://jp.archive.ubuntu.com gutsy/main make 3.81-3build1 [153kB]
binutils (2.18-0ubuntu3) を設定しています ...
gcc-4.1-base (4.1.2-16ubuntu2) を設定しています ...
cpp-4.1 (4.1.2-16ubuntu2) を設定しています ...
cpp (4:4.1.2-9ubuntu2) を設定しています ...
gcc-4.1 (4.1.2-16ubuntu2) を設定しています ...
gcc (4:4.1.2-9ubuntu2) を設定しています ...
make (3.81-3build1) を設定しています ...
Cのコンパイル環境は無事入ったので、今度こそ大丈夫でしょう。Hpricot をインストールしてみます。

$ s gem install hpricot
Select which gem to install for your platform (i486-linux)
 3. hpricot 0.6 (ruby)
    
make cc -I. -I. -I/usr/lib/ruby/1.8/i486-linux -I. -fPIC -fno-strict-aliasing -g -O2 -fPIC -c hpricot_scan.c In file included from ext/hpricot_scan/hpricot_scan.rl:9: /usr/lib/ruby/1.8/i486-linux/ruby.h:40:21: error: stdlib.h: No such file or directory
まだ、ダメですか。orz...。がないって言ってるので、ライブラリ関係をインストールします。しかし、なんて、Cでプログラムを書くんだったら絶対必要なはずなんだけど、なんで gcc のインストールで一緒に入れてくれないんだろうか、ぶつぶつ。

$ s apt-get install libc6-dev
以下の特別パッケージがインストールされます:
  linux-libc-dev
提案パッケージ:
  glibc-doc manpages-dev
以下のパッケージが新たにインストールされます:
  libc6-dev linux-libc-dev
取得:1 http://jp.archive.ubuntu.com gutsy-updates/main linux-libc-dev 2.6.22-14.52 [653kB]
取得:2 http://jp.archive.ubuntu.com gutsy-updates/main libc6-dev 2.6.1-1ubuntu10 [3287kB]
linux-libc-dev (2.6.22-14.52) を設定しています ...
libc6-dev (2.6.1-1ubuntu10) を設定しています ...
いいようです。もうこうなると、ちゃんとインストールされる方がびっくりしますね。さて、気を取り直して再度 Hpricot に挑戦です。

$ s gem install hpricot
Select which gem to install for your platform (i486-linux)
 3. hpricot 0.6 (ruby)
    
Building native extensions. This could take a while... Successfully installed hpricot-0.6 Installing ri documentation for hpricot-0.6... Installing RDoc documentation for hpricot-0.6...
やっとインストールできました。