[Windows+ruby1.9.2] gem install jsonがうまくいかない

rubyのライブラリのなかには、ネイティブ拡張(つまり環境ごとにコンパイル)が必要なライブラリが存在する。

そういったライブラリは、DevKitを使えるようにしておかないと、インストールすることができない。

devkitは、ここらへんのDevKitをダウンロードして適当なフォルダで展開し、カレントフォルダを展開したフォルダに移動して次のコマンドをうつ。

ruby dk.rb init
ruby dk.rb install

そしてjsonライブラリ等、ネイティブ拡張が必要なライブラリをインストールする。

そのとき何故か、私の環境ではエラーになった。

K:\home\tmp7>gem install json
Temporarily enhancing PATH to include DevKit…
Building native extensions. This could take a while…
ERROR: Error installing json:
ERROR: Failed to build gem native extension.

“C:/Program Files/ruby-1.9.3/bin/ruby.exe” extconf.rb
creating Makefile

make
Makefile:160: warning: overriding commands for target C:/Program'
Makefile:153: warning: ignoring old commands for target
C:/Program’
C:/Program Files/ruby-1.9.3/bin/ruby -e “puts ‘EXPORTS’, ‘Init_parser'” > parse
r-i386-mingw32.def
/bin/sh: C:/Program: No such file or directory
make: *** [parser-i386-mingw32.def] Error 127

Gem files will remain installed in C:/Program Files/ruby-1.9.3/lib/ruby/gems/1.9
.1/gems/json-1.7.0 for inspection.
Results logged to C:/Program Files/ruby-1.9.3/lib/ruby/gems/1.9.1/gems/json-1.7.
0/ext/json/ext/parser/gem_make.out

ちなみに、最近までruby1.9.3をインストールしていて、上述したdevkitの設定をすれば問題無くgem install json等も成功していたのが、ruby1.9.3をアンインストールして、そこにruby1.9.2をインストールしてから、何故か失敗するようになった。

(何故わざわざrubyのバージョンを1.9.3から1.9.2にしたかというと、herokuが1.9.3にまだ対応していなかったからというわけ)

 

エラー内容を見ると、どうやら、Makefileの実行で、「Program Files」のスペースをうまく処理できないっぽい。

そこで、Ruby1.9.2をいったんアンインストールしてから再度インストールした。

デフォルトのインストールパスは「C:\Program Files\Ruby1.9.3」(一度1.9.3をインストールしているから?1.9.3になってしまう)であるところを「C:\Ruby192」を指定してインストール。

再度DevKitを設定する。

ruby dk.rb init
ruby dk.rb install

そして再度jsonをインストール

gem install json

これでうまくいった。

windows環境だと、「Program Files」の半角スペースの部分が悪さをすることって結構多いため、linuxで使われているもののwindowsビルド版をインストールする場合は、半角スペースが入らないパスにインストールするべきだとあらためて認識させられたのであった。。

“[Windows+ruby1.9.2] gem install jsonがうまくいかない” への2件のフィードバック

  1. 通りすがり より:

    こちらのおかげで大変たすかりました。
    本当にありがとうございました。

  2. 管理人 より:

    コメントありがとうございます。
    こちらも記事を書く励みになります。

コメントを残す

トラックバック: http://pgnote.net/wp-trackback.php?p=147