Windowsにlibxml-rubyインストール

前回のつづきで、

 libxml-rubyをインストールしようと思います。環境は、Windows XP Home SP3です。

インストール

gem install libxml-ruby -v 0.9.7

 あれ。エラーになった。

Building native extensions.  This could take a while...
ERROR:  Error installing libxml-ruby:
        ERROR: Failed to build gem native extension.

c:/ruby/lib/ruby/gems/1.8/gems/rake-0.8.4/bin/rake RUBYARCHDIR=c:/ruby/lib/ruby/
gems/1.8/gems/libxml-ruby-0.9.7-x86-mswin32-60/lib RUBYLIBDIR=c:/ruby/lib/ruby/g
ems/1.8/gems/libxml-ruby-0.9.7-x86-mswin32-60/lib
'c:/ruby/lib/ruby/gems/1.8/gems/rake-0.8.4/bin/rake' は、内部コマンドまたは外部
コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。


Gem files will remain installed in c:/ruby/lib/ruby/gems/1.8/gems/libxml-ruby-0.
9.7-x86-mswin32-60 for inspection.
Results logged to c:/ruby/lib/ruby/gems/1.8/gems/libxml-ruby-0.9.7-x86-mswin32-6
0/ext/mingw/gem_make.out

 gem_make.outを見てみると、

c:/ruby/lib/ruby/gems/1.8/gems/rake-0.8.4/bin/rake RUBYARCHDIR=c:/ruby/lib/ruby/gems/1.8/gems/libxml-ruby-0.9.7-x86-mswin32-60/lib RUBYLIBDIR=c:/ruby/lib/ruby/gems/1.8/gems/libxml-ruby-0.9.7-x86-mswin32-60/lib
'c:/ruby/lib/ruby/gems/1.8/gems/rake-0.8.4/bin/rake' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

調査

 原因がわからないので、とりあえず、「内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません。」でぐぐってみました。すると、こんなサイトがありました。
 原因として挙げられていたのが、以下の2つ。

  • コマンドのパスが通っていない
  • 環境変数PATHEXTにコマンドの拡張子が含まれていない

 1つ目については、rakeがフルパスで指定されていて、実際にそのファイルも存在するので、それが原因ではなさそう。
 2つ目については、そもそも実行ファイル名rakeに拡張子がない。なんか、あやしい。PATHEXTを見てみた。

PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.RB;.RBW

拡張子がない場合ってどうなるんだろう。とりあえず、拡張子がないですよ的な感じで以下のように設定を変更。

PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.RB;.RBW;;

だめでした。じゃあ、これはどうだろ。

PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.RB;.RBW;.

今までとちょっと挙動が違う。「ファイルを開くプログラムの選択」ウィンドウが現れた。とりあえず、キャンセルにすると、以下のようなメッセージ。

Building native extensions.  This could take a while...
Successfully installed libxml-ruby-0.9.7-x86-mswin32-60
1 gem installed
Installing ri documentation for libxml-ruby-0.9.7-x86-mswin32-60...

Enclosing class/module 'cXMLParser' for class Context not known

Enclosing class/module 'mXPath' for class Context not known

Enclosing class/module 'mXPath' for class Expression not known

Enclosing class/module 'mXPath' for class Object not known
Installing RDoc documentation for libxml-ruby-0.9.7-x86-mswin32-60...

Enclosing class/module 'cXMLParser' for class Context not known

Enclosing class/module 'mXPath' for class Context not known

Enclosing class/module 'mXPath' for class Expression not known

Enclosing class/module 'mXPath' for class Object not known

インストールされたようです。riとRDocの方はエラーが出ているようですが、ドキュメントなのでよしとしよう。gem searchで、ローカルにインストールされていることも確認できました。

まとめ

 結果的は、環境変数PATHEXTに"."を追加することで解決しました。