Win32な環境でnokogiriを動かすのに手間取ったのでメモ
「ふぁぼられったー for Mac」をWindowsでも動かしてみるため、Windowsな環境にnokogiriをインストールしようとしたら、盛大にハマってしまった。
以下そのメモ
nokogiriのインストール
gem install nokogiri -r
でインストール。
一度、libxsltが無いと言われて cyg-apt で libxslt-devel をインストールしたが、うまくいかず、結局手作業でインストールしたらインストールできた。このあたりの手順は省略。別エントリとして起こすつもり。
<追記>
Cygwinでは、cyg-apt でのlixml2-develとlibxslt-develパッケージをインストールしておく必要があった。
$ cyg-apt install libxml2-devel $ cyg-apt install libxslt-devel
追記>
インストールされたのはこのときの最新、1.3.2がインストールされた。
で、irbで確認しようとしたら以下のようなエラー
>require 'rubugems' >require 'nokogiri' Gem::LoadError: Could not find RubyGem racc (>= 0) from C:/PROGRA~1/ruby-1.8/lib/ruby/vendor_ruby/1.8/rubygems.rb:578:in `report_activate_error' from C:/PROGRA~1/ruby-1.8/lib/ruby/vendor_ruby/1.8/rubygems.rb:134:in `activate' from C:/PROGRA~1/ruby-1.8/lib/ruby/vendor_ruby/1.8/rubygems.rb:158:in `activate' from C:/PROGRA~1/ruby-1.8/lib/ruby/vendor_ruby/1.8/rubygems.rb:157:in `each' from C:/PROGRA~1/ruby-1.8/lib/ruby/vendor_ruby/1.8/rubygems.rb:157:in `activate' from C:/PROGRA~1/ruby-1.8/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb:31:in `require' from (irb):3
raccのgemがインストールされていないっぽいのでraccをインストールすることにした
raccのインストール
raccのインストールでもエラー発生
どうも extconf.rbの中でプラットフォームを判断するために使用している`uname -p`というコマンドがWindowsに無いということで、例外が発生しているみたい。
raccのgemをローカルで修正/インストール
まず、以下のコマンドで racc のgemを取得する
gem fetch racc -r
次に、取得したgemを展開
gem unpack racc
カレントにracc-1.4.6というディレクトリが作成され、その中にraccのソースが展開される。
次に、racc-1.4.6 のディレクトリに降りて、以下のコマンドで gemspec を取得する。
gem spec racc -r > racc.gemspec
gemspecはextconf.rbを修正したのち、gemを再度生成するために必要。
extconf.rbの修正
ext/racc/cparse/extconf.rb をエディタで開き以下のように修正
# $Id$ #ENV["ARCHFLAGS"] = "-arch #{`uname -p` =~ /powerpc/ ? 'ppc' : 'i386'}" ENV["ARCHFLAGS"] = "-arch i386}" require 'mkmf' create_makefile 'racc/cparse/cparse'
とりあえず、自分は'i386'な環境にインストールするとわかっているので、上記のように修正した。
ほんとは、例外とかひろって適切なプラットフォームを選択してくれる関数にしてあげたほうがいいんだろうなー。みんなどうやってるんだろ?
自家修正版gemの作成
extconf.rbを修正したら、それを元に修正版のgemファイルを生成する。
gem build racc.gemspec
すると、racc-1.4.6.gem が生成される。
ローカルのgemからインストール
gem install racc -l
でローカルのgemファイルからインストールされる。
そのたnokogiriが依存するgemのインストール
raccがインストールできればオKと思ってたがどうも他にも足りないgemがあるらしい。以下のコマンドで依存するgemを調べる。
gem dependency nokogiri Gem nokogiri-1.3.2-x86-mswin32 racc (>= 0, development) rexical (>= 0, development) rake-compiler (>= 0, development) hoe (>= 2.2.0, development)
ほんとはこのあと、hoeのインストールでまた問題があったんだけど、
...メモが途中で切れてしまった。orz あとで追記する。