Ruby Windows 下 Ruby 2.0 下,SQLite 3 的 gem 加载失败。

sailorhero · 2013年03月02日 · 最后由 iwetuan 回复于 2018年03月24日 · 12476 次阅读

Windows 下 Ruby2.0 安装 Sqlite3 的 gem 包,使用 Devkit 编译 Native 通过,但启动 rails consolerails server时出错,找不到 native_sqlite

退回 Ruby1.9.3,编译 Native 没有问题;检查了下 1.9.3 下编译通过的 sqlite 包,sqlite3-1.3.7-x86-mingw32 的\lib\sqlite3目录下,有针对 1.8 和 1.9 的目录,目录下是“sqlite3_native.so”;对照检查 Ruby2 下的 sqlite 对应目录结构,下面也只有 1.8/1.9 的目录;

推断,应该是 sqlite3 目前只支持 Ruby1.9,还未支持 Ruby2.0。待确认.....

        D:/ruby/Ruby200/lib/ruby/gems/2.0.0/gems/sqlite3-1.3.7-x86-mingw32/lib/sqlite3.r
b:6:in `require': cannot load such file -- sqlite3/sqlite3_native (LoadError)
        from D:/ruby/Ruby200/lib/ruby/gems/2.0.0/gems/sqlite3-1.3.7-x86-mingw32/
lib/sqlite3.rb:6:in `rescue in <top (required)>'
        from D:/ruby/Ruby200/lib/ruby/gems/2.0.0/gems/sqlite3-1.3.7-x86-mingw32/
lib/sqlite3.rb:2:in `<top (required)>'
        from D:/ruby/Ruby200/lib/ruby/gems/2.0.0/gems/bundler-1.3.0/lib/bundler/
runtime.rb:72:in `require'
        from D:/ruby/Ruby200/lib/ruby/gems/2.0.0/gems/bundler-1.3.0/lib/bundler/
runtime.rb:72:in `block (2 levels) in require'
        from D:/ruby/Ruby200/lib/ruby/gems/2.0.0/gems/bundler-1.3.0/lib/bundler/
runtime.rb:70:in `each'
        from D:/ruby/Ruby200/lib/ruby/gems/2.0.0/gems/bundler-1.3.0/lib/bundler/
runtime.rb:70:in `block in require'
        from D:/ruby/Ruby200/lib/ruby/gems/2.0.0/gems/bundler-1.3.0/lib/bundler/
runtime.rb:59:in `each'
        from D:/ruby/Ruby200/lib/ruby/gems/2.0.0/gems/bundler-1.3.0/lib/bundler/
runtime.rb:59:in `require'
        from D:/ruby/Ruby200/lib/ruby/gems/2.0.0/gems/bundler-1.3.0/lib/bundler.
rb:132:in `require'  

我这里也是,win8 环境 ruby2.0+rails+sqlite3 sqlite3 安装不了。 等 railsinstaller 更新咯,不过貌似 railsinstaller 应该要等 rails 4 正式版出来吧。

对 Rails 来说 Ubuntu 下都是二等公民,Win 下就更是了。哎,没办法。

别折腾了,就算解决了这个问题还会有下一个问题的。老老实实换 Linux 或者 Mac 吧,最初我在 win 下尝试的时候也走了不少弯路

昨天才用 2.0 跑 sqlite,没问题。换个系统吧

@sailorhero 问题解决了没?我这也有同样的问题,一直在找解决办法

#5 楼 @evil850209 在等 sqlite3 的更新;将 ruby2.0 回退回 1.9.3 啦。

@sailorhero 晕 看到 github 有这个帖子,https://github.com/luislavena/sqlite3-ruby/issues/82 不知道那位牛人能提供一下怎么解决。

按照https://github.com/luislavena/sqlite3-ruby/issues/82这个帖子,我安装成功了。

首先去 sqlite 的网站上下载要用的文件,按如下的文件夹放好

D:\sqlite3\include
  sqlite3.h
  sqlite3.exth

D:\sqlite3\liby
  shell.c
  sqlite3.c

C:\Windows\System32
  sqlite3.def
  sqlite3.dll

然后运行

gem install sqlite3 --platform=ruby -- --with-sqlite3-include=D:\sqlite3\include --with-sqlite3-lib=D:\sqlite3\liby --with-sqlite3-dir=D:\sqlite3

大家可以试试。不过好像 sqlite3 安装成功后,又有新的问题出现了,http://ruby-china.org/topics/9733。期待大家一起解决。

Win7 下得要等等更健康。

同样,安装完毕后,跟随 rails 实战学习,当 rake db:create 的时候,出现 java runtime 错误,按照坛子里面安装所需的 gem,结果又提示找不到什么路径,晕乎。看来 win 下很麻烦,这对于一个菜鸟来说,更是摸不着头脑。

虛擬機裝 ubuntu 很困難麼

已经有很多新手教程开头就提首先到尽量不要再 win 上折腾,如果实在不行虚拟机个 Linux 也行。

在虚拟机下装个 linux,一切问题迎刃而解

今天升级 ruby 2.0.0-p195,同样在 windows 下遇坑,破解方法如下:(假设已经安装 DevKit)

  1. run C:\DevKit\devkitvars.bat
  2. mkdir c:\temp
  3. download http://packages.openknapsack.org/sqlite/sqlite-3.7.15.2-x86-windows.tar.lzma to c:\temp
  4. c:\Temp>bsdtar --lzma -xf sqlite-3.7.15.2-x86-windows.tar.lzma
  5. c:\Temp>gem install sqlite3 --platform=ruby -- --with-opt-dir=C:/Temp

其实 windows 下 ruby 还行,rubyinstaller 的作者 Luis Lavena 很给力。

@ericguo 现在是报这个错,是啥问题呢?是我的 devKit 没安装对吗?

C:\temp>gem install sqlite3 --platform=ruby -- --with-opt-dir=C:/Temp
Building native extensions with: '--with-opt-dir=C:/Temp'
This could take a while...
ERROR:  Error installing sqlite3:
        ERROR: Failed to build gem native extension.

    D:/Ruby200/bin/ruby.exe extconf.rb --with-opt-dir=C:/Temp
checking for sqlite3.h... yes
checking for sqlite3_libversion_number() in -lsqlite3... no
sqlite3 is missing. Install SQLite3 from http://www.sqlite.org/ first.
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration options.

#15 楼 @evil850209 http://ruby-china.org/topics/11080 上直接安装包吧。。现在这个 213 兆的压缩包已经包括了 rails 4, rails 3.2.13 以及 devkit http://115.com/lb/5lbffhsm#Ruby200.rar 首先安装 32 位 Rubyinstaller 2.0.0-p247,然后把这个压缩包直接解压缩到 C:\根目录

我最后用 https://github.com/luislavena/sqlite3-ruby/issues/82#issuecomment-18595074 这个方式安装成功的。

但当启动 rails s 时又报错了:

D:/Ruby200/lib/ruby/gems/2.0.0/gems/sqlite3-1.3.7-x86-mingw32/lib/sqlite3.rb:6:in `require': cannot load such file -- sqlite3/sqlite3_native (LoadError)

最后卸载了以前安装错误的版本,就是将所有 sqlite3 的 gem 都卸载了,重新按照https://github.com/luislavena/sqlite3-ruby/issues/82#issuecomment-18595074来了一遍,就可以了。

这个绝对牛逼,直接修改~\RailsInstaller\Ruby1.9.3\lib\ruby\gems\1.9.1\specifications\sqlite3-1.3.13-x86-mingw32.gemspec

s.require_paths=["lib"] 改成 s.require_paths= ["lib/sqlite3_native"]

验证成功!

需要 登录 后方可回复, 如果你还没有账号请 注册新账号