更新: 看看这个后续问题: 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 gems 上安装得很好,但现在我在 1.2.0 上,事情变得很糟糕。

我也尝试过这个:

gem install sqlite3-ruby --platform Win32

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

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


更新: 看看这个后续问题: Windows 上的 Gem 更新 - 它坏了吗?

有帮助吗?

解决方案

正如 Nathan 所说,这似乎与最新版本的 sqlite3-ruby 和 hpricot gems 似乎没有 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 尝试将 gems 更新到最新的、在 Windows 上有问题的版本。当更新例程遇到错误时,它会让您退出整个过程。这个问题有一个(hacky)解决方案 这里.

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

其他提示

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

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

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

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

首先来自 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 像:

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

祝你好运!

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

发布名称:1.2.4

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

希望对其他人有帮助!

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

C:> GEM安装HPRICOT成功安装了HPRICOT-0.8.2-X86-MSWIN32 1 GEM安装了HPRICOT-0.8.2-X86-MSWIN32的RI文档安装RI文档...正在安装 hpricot-0.8.2-x86-mswin32 的 RDoc 文档...

C:> GEM安装Ruby-Postgres成功安装了Ruby-Postgres-0.7.1.1.2006.04.04.04.06-x86-mswin32 1 GEM安装了Ruy-Postgres-0.7.7.7.1.2006.044.044.06-x86-x86-mswin32 ...正在安装 ruby​​-postgres-0.7.1.2006.04.06-x86-mswin32 的 RDoc 文档...

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top