Rubyのライブラリをインストールするのに使う、「gem」についての質問です。
ちなみに、Windows 7の64bitを使っています。
ウェブブラウザエミュ系のライブラリを使いたく、
gemでMechanizeをインストールしようとしたのですが失敗します・・・。
gem install Mechanize をしようとすると、以下のようになります。
お助けを・・・。
C:\windows\system32>gem install Mechanize
ERROR: Could not find a valid gem 'Mechanize' (>= 0) in any repository
ERROR: Possible alternatives: mechanize
C:\windows\system32>gem install mechanize
Building native extensions. This could take a while...
ERROR: Error installing mechanize:
ERROR: Failed to build gem native extension.
C:/Ruby200-x64/bin/ruby.exe -r ./siteconf20140719-13616-a69xok.rb extconf.rb
checking for main() in -lstdc++... *** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers. Check the mkmf.log file for more details. You may
need configuration options.
Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=C:/Ruby200-x64/bin/ruby
--with-stdc++lib
--without-stdc++lib
C:/Ruby200-x64/lib/ruby/2.0.0/mkmf.rb:434:in `try_do': The compiler failed to ge
nerate an executable file. (RuntimeError)
You have to install development tools first.
from C:/Ruby200-x64/lib/ruby/2.0.0/mkmf.rb:519:in `try_link0'
from C:/Ruby200-x64/lib/ruby/2.0.0/mkmf.rb:534:in `try_link'
from C:/Ruby200-x64/lib/ruby/2.0.0/mkmf.rb:720:in `try_func'
from C:/Ruby200-x64/lib/ruby/2.0.0/mkmf.rb:950:in `block in have_library
'
from C:/Ruby200-x64/lib/ruby/2.0.0/mkmf.rb:895:in `block in checking_for
'
from C:/Ruby200-x64/lib/ruby/2.0.0/mkmf.rb:340:in `block (2 levels) in p
ostpone'
from C:/Ruby200-x64/lib/ruby/2.0.0/mkmf.rb:310:in `open'
from C:/Ruby200-x64/lib/ruby/2.0.0/mkmf.rb:340:in `block in postpone'
from C:/Ruby200-x64/lib/ruby/2.0.0/mkmf.rb:310:in `open'
from C:/Ruby200-x64/lib/ruby/2.0.0/mkmf.rb:336:in `postpone'
from C:/Ruby200-x64/lib/ruby/2.0.0/mkmf.rb:894:in `checking_for'
from C:/Ruby200-x64/lib/ruby/2.0.0/mkmf.rb:945:in `have_library'
from extconf.rb:2:in `<main>'
extconf failed, exit code 1
Gem files will remain installed in C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/unf_e
xt-0.0.6 for inspection.
Results logged to C:/Ruby200-x64/lib/ruby/gems/2.0.0/extensions/x64-mingw32/2.0.
0/unf_ext-0.0.6/gem_make.out
RubyInstallerを使ったんですかね。最初のは大文字小文字の間違い。
>Building native extensions. This could take a while...
まず、解決方法から先に書くと、
案1:32bit用Rubyを使う。Windowsが64bitであっても、特に理由がない限りこちらがおすすめです。それだけで解決。
案2:Devkitをインストールする。方法は、ダウンロードページの下の方にある、
For use with Ruby 2.0 (x64 – 64bits only)
をダウンロードして、どこかのフォルダに解凍(解凍した後も使うので、それなりのフォルダ名に)。
コマンドプロンプトでそのフォルダに移動し、dk.rb init と dk.rb install を実行する。
なぜダメだったというと、gemはすべてRubyで書かれているわけじゃなくて、ものによってCで書かれている部分もあります。メジャーな物はWindows用バイナリがgemリポジトリに入っているのでそれがインストールされますが、Windows用バイナリが用意されていないgemについては自分でCからコンパイルしないといけません。それをするツールがDevkitです。
最近は、多くのgemでWindows32bit用バイナリが用意されていることが増えたので、Devkitをインストールしなくても大抵はそのままインストールできます。今回は、Mechanizeで使うgemの中に、Windows64bit用バイナリが用意されていなかったというのが原因です。
ということで、当面は32bitRubyを使うのがおすすめです。
・すべてRubyで書かれているgem・・・・・そのままでインストール可能
・Ruby+Windows用バイナリのgem・・・・そのままでインストール可能
・Ruby+Cソースのgem・・・・Devkitが必要