2008-09-04 148 views
19

更新:看看这个跟进的问题:Gem Update on Windows - is it broken?sqlite3的,红宝石的宝石:无法建立宝石原生扩展


在Windows上,当我这样做:

gem install sqlite3-ruby 

我得到以下错误:

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

c:/ruby/bin/ruby.exe extconf.rb install sqlite3-ruby --platform Win32 
checking for fdatasync() in rt.lib... no 
checking for sqlite3.h... no 

nmake 
'nmake' is not recognized as an internal or external command, 
operable program or batch file. 


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 

同样的事情发生在hpricot宝石。我似乎记得这些宝石在< 1.0宝石上安装得很好,但现在我在1.2.0上,事情变得棘手。

我也试过这样:

gem install sqlite3-ruby --platform Win32 

不用说,这并不工作,要么(同样的错误)

有谁知道是怎么回事,如何解决这一问题?


更新:看看这个跟进的问题:Gem Update on Windows - is it broken?

回答

26

正如Nathan所言,这看起来似乎与最新版本的sqlite3-ruby和hpricot gem似乎没有Windows版本有关。面对这种情况(注意,宝石的名称是自动通配的,所以你可以只输入SQL并得到所有宝石的列表,SQL)开始:

$ gem list --remote --all sqlite 

*** REMOTE GEMS *** 

sqlite (2.0.1, 2.0.0, 1.3.1, 1.3.0, 1.2.9.1, 1.2.0, 1.1.3, 1.1.2, 1.1.1, 1.1) 
sqlite-ruby (2.2.3, 2.2.2, 2.2.1, 2.2.0, 2.1.0, 2.0.3, 2.0.2) 
sqlite3-ruby (1.2.4, 1.2.3, 1.2.2, 1.2.1, 1.2.0, 1.1.0, 1.0.1, 1.0.0, 0.9.0, 0.6.0, 0.5.0) 

然后你可以选择的版本,你想安装:

gem install sqlite3-ruby -v 1.2.3 

要成功安装角度来说,Hpricot,我这样做:

gem install hpricot -v 0.6 

烦人,做一个gem update尝试将宝石更新为其最新的Windows打包版本。当更新例程遇到错误时,它会将您排除在整个过程之外。有一个(哈克)解决这个问题here

那么,这个问题是一个宝石错误?宝石是否应该自动检测平台并安装最新的兼容版本?

+0

我怀疑这个问题可能是宝石中的一个bug,而不是宝石系统的整体。如果宝石没有指定它是平台特定的,那么宝石系统可能会认为它是平台不可知的宝石,并尝试安装它。 – 2008-09-04 15:08:02

2

有没有可能是最新的版本还没有被移植到Win32的了吗?由于这个特定的gem确实具有绑定到编译的代码,所以它需要一个特定于平台的gem。如果我强制安装版本1.2.3而不是当前的1.2.4,平台特定的版本确实会安装,但是当我允许gem尝试安装当前版本时,我会得到通用的1.2.4版本(在宝石中库文件夹中,它缺少其他sqlite3-ruby文件夹中名称为-x86-mswin32的后缀。

也许别人可以回答gem如何处理特定于平台的gem。是否为每个平台和gem软件上传单独的gems?选择哪一个拉下去?

1

我也遇到了这个问题。值得注意的是,1.2.3和1.2.4之间的差异并不显着。这里是1.2.4。发布说明:

Release Name: 1.2.4

Notes: This release only updates the generated C file to reflect the compatibility changes that were made to the SWIG file. Binary builds (e.g., Windows) are not affected, and need no update. In general, you will not need this update unless you are using a version of Ruby prior to 1.8.6. (source: 1.2.4. release notes)

希望能帮助别人!

1

我有同样的问题在Windows和我有installe MinGW的 http://sourceforge.net/projects/mingw/files/Automated%20MinGW%20Installer/MinGW%205.1.6/MinGW-5.1.6.exe/download ,问题已经: - )

C:>宝石安装角度来说,Hpricot 成功安装角度来说,Hpricot-0.8.2 86 mswin32 1宝石安装 为角度来说,Hpricot-0.8.2 86 mswin32安装里文档.. 。 安装RDoc文档的角度来说,Hpricot-0.8.2-x86的mswin32 ...

C:>宝石安装红宝石的Postgres 成功安装红宝石postgres相关0.7.1.2006.04.06 86 mswin32 1安装宝石 安装了红宝石的Postgres-0.7.1.2006.04.06 86 mswin32 ... 对红宝石的Postgres-0.7.1.2006.04.06 86 mswin32安装RDoc文档里的文件...

2

首先从sqlite的。 org(http://www.sqlite.org/download.html
下载 - >
预编译二进制文件:sqlite-dll-win32-x86-3071700.zip
和源代码:sqlite-autoconf-3071700.tar.gz
然后提取为:

-include 
    --sqlite3.h 
    --sqlite3ext.h 
-lib 
    --shell.c 
    --sqlite3.c 
    --sqlite3.def 
    --sqlite3.dll 

最后安装的宝石,如:

gem install sqlite3 --platform=ruby -- --with-sqlite3-include=path\to\include 
--with-sqlite3-lib=path\to\lib --no-ri --no-rdoc 

祝你好运!