【问题标题】:sqlite3-ruby gem: Failed to build gem native extensionsqlite3-ruby gem:无法构建 gem 原生扩展
【发布时间】:2010-09-07 19:27:56
【问题描述】:

更新:查看此后续问题:Gem Update on Windows - is it broken?


在 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 也会发生同样的情况。我似乎记得这些 gem 在

我也试过这个:

gem install sqlite3-ruby --platform Win32

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

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


更新:查看此后续问题:Gem Update on Windows - is it broken?

【问题讨论】:

    标签: windows ruby gem


    【解决方案1】:

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

    祝你好运!

    【讨论】:

      【解决方案2】:

      我在 Windows 上遇到了同样的问题,我已经安装了 MinGW http://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 个宝石 正在安装 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 个宝石 为 ruby​​-postgres-0.7.1.2006.04.06-x86-mswin32 安装 ri 文档... 为 ruby​​-postgres-0.7.1.2006.04.06-x86-mswin32 安装 RDoc 文档...

      【讨论】:

        【解决方案3】:

        正如 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)解决方案here

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

        【讨论】:

        • 我怀疑问题可能是 gem 中的错误,而不是整个 gem 系统。如果 gem 没有指定它是特定于平台的,gem 系统可能会假定它是一个与平台无关的 gem 并尝试安装它。
        【解决方案4】:

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

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

        【讨论】:

        • 我(也)似乎需要 libsqlite0-dev(在 libsqlite3-dev 之上)才能在 Ubuntu 10.04.1 LTS 上安装 gem。我还安装了一个 libsqlite3-ruby,但我不知道这是否有什么不同
        【解决方案5】:

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

        版本名称:1.2.4

        注意:此版本仅更新 生成的 C 文件以反映 所做的兼容性更改 到 SWIG 文件。二进制构建(例如, Windows)不受影响,不需要 更新。一般来说,您不需要 此更新除非您使用的是 1.8.6 之前的 Ruby 版本。 (来源:1.2.4. release notes

        希望对其他人有所帮助!

        【讨论】:

          【解决方案6】:

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

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-05-27
            • 1970-01-01
            • 1970-01-01
            • 2015-07-20
            • 2015-06-18
            • 1970-01-01
            • 2021-04-19
            相关资源
            最近更新 更多