Dec 072008
 

sqlite3-rubyのgem updateを実行してみたらnmakeがないと言われて失敗してしまう。

C:\ruby\bin>gem update sqlite3-ruby
Updating installed gems
Updating sqlite3-ruby
Building native extensions.  This could take a while...
ERROR:  While executing gem ... (Gem::Installer::ExtensionBuildError)
    ERROR: Failed to build gem native extension.

C:/ruby/bin/ruby.exe extconf.rb update sqlite3-ruby
checking for fdatasync() in rt.lib... no
checking for sqlite3.h... no

nmake
'nmake' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。


Gem files will remain installed in C:/ruby/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.2.4 for inspection.
Results logged to C:/ruby/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.2.4/ext/sqlite3_api/gem_make.out

Visual Studio 2008 Expressは入れてあるのだがnmakeにパスを通しただけではうまくいかない。

C:\ruby\bin>"C:\Program Files\Microsoft Visual Studio 9.0\VC\vcvarsall.bat"
Setting environment for using Microsoft Visual Studio 2008 x86 tools.

C:\ruby\bin>gem update sqlite3-ruby
Updating installed gems
Updating sqlite3-ruby
Building native extensions.  This could take a while...
ERROR:  While executing gem ... (Gem::Installer::ExtensionBuildError)
    ERROR: Failed to build gem native extension.

C:/ruby/bin/ruby.exe extconf.rb update sqlite3-ruby
checking for fdatasync() in rt.lib... no
checking for sqlite3.h... no

nmake

Microsoft(R) Program Maintenance Utility Version 9.00.30729.01
Copyright (C) Microsoft Corporation.  All rights reserved.

NMAKE : fatal error U1073: 'ruby.h' のビルド方法が指定されていません。
Stop.


Gem files will remain installed in C:/ruby/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.2.4 for inspection.
Results logged to C:/ruby/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.2.4/ext/sqlite3_api/gem_make.out

どうやらsqlite自体のヘッダーファイルなど、ビルド環境を整えないといけないらしいが、そこまでやるのも大変だ。
で、いろいろ調べてみるとバイナリが提供されているバージョン番号を指定すればうまくいくことがわかった。

C:\ruby\bin>gem install sqlite3-ruby --version=1.2.3
Successfully installed sqlite3-ruby-1.2.3-x86-mswin32
1 gem installed
Installing ri documentation for sqlite3-ruby-1.2.3-x86-mswin32...
Installing RDoc documentation for sqlite3-ruby-1.2.3-x86-mswin32...

C:\ruby\bin>

ビルドされたバイナリが提供されているかどうかは、RubyForge: SQLite-Ruby: ファイルリストで、*-mswin32.gemなファイルがあるか否かでわかる(のだと思う)。

Sorry, the comment form is closed at this time.