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に"."を追加することで解決しました。