21

更新:查看此后续问题:Windows 上的 Gem 更新 - 是否损坏?


在 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 gem 也会发生同样的事情。我似乎记得这些宝石安装在 < 1.0 的宝石上很好,但现在我在 1.2.0 上,事情变得很糟糕。

我也试过这个:

gem install sqlite3-ruby --platform Win32

不用说,这也不起作用(同样的错误)

有谁知道这里发生了什么以及如何解决这个问题?


更新:查看此后续问题:Windows 上的 Gem 更新 - 是否损坏?

4

6 回答 6

27

正如 Nathan 所暗示的,这似乎与最新版本的 sqlite3-ruby 和 hpricot gem 似乎没有 Windows 版本有关。以下是遇到这种情况时的处理方法(注意,gem 的名称会自动使用通配符,因此您只需键入sql并获取所有以sql开头的 gem 的列表):

$ 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尝试将 gem 更新到最新的、损坏的 Windows 版本。当更新例程遇到错误时,它会将您排除在整个过程之外。这个问题有一个(hacky)解决方案。

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

于 2008-09-04T14:13:02.227 回答
9

我在 Ubuntu 上遇到了同样的问题,这解决了我的问题:

http://newsgroups.derkeiler.com/Archive/Comp/comp.lang.ruby/2008-08/msg00339.html

于 2009-01-24T20:17:32.763 回答
3

首先从 sqlite.org( http://www.sqlite.org/download.html )
下载 ->
Precompiled Binaries:sqlite-dll-win32-x86-3071700.zip
和 Source Code:sqlite-autoconf-3071700.tar.gz
然后解压为:

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

最后安装 gem 像:

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

祝你好运!

于 2013-07-28T11:04:07.250 回答
2

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

也许其他人可以回答 gem 如何处理平台特定的 gem。是否为每个平台上传单独的 gem,并且 gem 软件会选择下拉哪一个?

于 2008-09-04T13:54:46.640 回答
1

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

发布名称:1.2.4

注意:此版本仅更新生成的 C 文件以反映对 SWIG 文件所做的兼容性更改。二进制版本(例如,Windows)不受影响,不需要更新。通常,除非您使用的是 1.8.6 之前的 Ruby 版本,否则您不需要此更新。(来源:1.2.4. 发行说明

希望对其他人有所帮助!

于 2008-12-14T17:22:31.863 回答
1

我在 Windows 上遇到了同样的问题,我已经安装了 MinGW http://sourceforge.net/projects/mingw/files/Automated%20MinGW%20Installer/MinGW%205.1.6/MinGW-5.1.6.exe/download 和问题走了 :-)

C:>gem install hpricot 成功安装 hpricot-0.8.2-x86-mswin32 1 个 gem 安装 正在安装 hpricot-0.8.2-x86-mswin32 的 ri 文档... 安装 hpricot-0.8.2-x86-mswin32 的 RDoc 文档。 ..

C:>gem install ruby​​-postgres 成功安装 ruby​​-postgres-0.7.1.2006.04.06-x86-mswin32 1 gem installed 安装 ruby​​-postgres-0.7.1.2006.04.06-x86-mswin32 的 ri 文档... 安装 RDoc 文档ruby-postgres-0.7.1.2006.04.06-x86-mswin32...

于 2009-12-21T15:11:06.853 回答