如何在 Windows 上为 Ruby 安装 sqlite3?
Posted
技术标签:
【中文标题】如何在 Windows 上为 Ruby 安装 sqlite3?【英文标题】:How do I install sqlite3 for Ruby on Windows? 【发布时间】:2013-03-06 23:59:11 【问题描述】:对 Ruby/Rails 非常陌生,在本周末尝试自己解决问题后,我正在尝试在这里寻求建议。
我在 FreeBSD 上完成了完整的 Ruby/Apache/Passenger 设置,我正在尝试完成将 Windows 用作 Ruby 开发环境的任务。
到目前为止:
Ruby 已安装,v2.0.0p0 (2013-02-24) [x64-ming32] Rails 已安装,v.3.2.12 我已安装并注册了 Ruby 开发工具包。 我已将 sqlite3 dll/exe 复制到 Ruby“bin”文件夹(使用“使用 Ruby 启动命令提示符”控制台也在我的路径中。) 我可以成功启动 Rails 服务器,并继续学习 http://guides.rubyonrails.org/getting_started.html 教程到 3.3。">rake db:create" 告诉我:
请安装 sqlite3 适配器:gem install activerecord-sqlite3-adapter
(
sqlite3 不是捆绑包的一部分。将其添加到 Gemfile。)
我没有“理解”。尝试安装 activerecord-sqlite3-adapter 给我一个“找不到有效的 gem...”
">gem install sqlite3" 返回:
Building native extensions. This could take a while...
ERROR: Error installing sqlite3:
ERROR: Failed to build gem native extension.
D:/Development/Ruby200-x64/bin/ruby.exe extconf.rb
checking for sqlite3.h... *** extconf.rb failed ***
现在,我什至不知道我的 Ruby on Windows 安装处于什么状态。我正在尝试遵循主要的 Rails 教程,但它没有指定任何这些问题(可能是因为 Windows 上的 Ruby 似乎对很多人来说是一种天生的痛苦。)
我错过了什么?!?我只是想在 Windows 上为 Ruby 安装 sqlite3,看起来很简单吧?
如果我执行">rais db"
,则会显示 SQLite shell:
SQLite version 3.7.15.2 2013-01-09 11:53:05
无法解决我的问题的步骤的类似问题: Installing SQLite 3.6 On Windows 7
【问题讨论】:
“未回答的问题”实际上有一个可接受的答案。您是否尝试将 sqlite.dll 放入您的 ruby/bin 目录? 您使用的是 x64 ruby,.dll 可能是 32 位的,无法使用。您可以尝试提到here 的.dll 的x64 版本。 我不知道 SO 的礼仪是什么,但我将 Ruby 的一个版本删除到 1.9.x,并且">gem install sqlite3" 没有问题。 我相信我听从了您的提示,并特别确保我下载了 Ruby 的 32 位版本。虽然我明白我可以提交自己的答案,但问题是,这不是“答案”。目前版本要求对我来说不是离散的,但降级似乎是一个“肮脏”的解决方案。 您不需要降级 - 您可以安装 ruby 2.0 的 32 位版本或使用 .dll 的 64 位版本。 RE: json gem,你看到了什么错误? 【参考方案1】:即使问题已得到解答,我仍想发布我的研究以帮助他人。我在网上找到了很多信息,但是作为一个 Ruby 新手,我很难跟上所有这些。基本答案来自以下帖子https://github.com/luislavena/sqlite3-ruby/issues/82,并附有“paulwis”关于如何正确安装sqlite3 for ruby 2.0.0-p0 和https://github.com/rails/rails/issues/10150 上的一些cmets 的说明。所以这里是:
-
为您的设置安装 Ruby Devkit(DevKit-mingw64-64-4.7.2-20130224-1432-sfx.exe 适合我,因为我使用的是 x64 机器)
从 Sqlite.org 下载并解压 autoconf 包
运行 msys.bat(它位于 ruby devkit 根文件夹中)
cd 到您下载 sqlite 源的路径(例如:如果您是 MSYS/MINGW32 的新手,则路径“c:\dev\sqlite3”的路径为“cd /c/dev/sqlite3”)
运行“./configure”
运行“make”
运行“make install”
再次获取 sqlite3 gem,这次指定平台和新编译的二进制文件的路径:
gem install sqlite3 --platform=ruby -- --with-sqlite3-include=[path\to\sqlite3.h] --with-sqlite3-lib=[path\to\sqlite3.o]
例如:
gem install sqlite3 --platform=ruby -- --with-sqlite3-include=/c:/dev/sqlite3/ --with-sqlite3-lib=/c:/dev/sqlite3/.libs/
(从步骤 4 中给出的路径)
检查您的 rails 应用程序的 Gemfile.lock 并确保它指向正确的 sqlite3 版本。我的是“sqlite3(1.3.7-x86-mingw32)”并手动将其更改为“sqlite3(1.3.7-x64-mingw32)”。删除平台也可以:“sqlite3 (1.3.7)”。希望这对某人有所帮助。
【讨论】:
非常感谢!不幸的是,第 8 步对我来说失败了:C:/Ruby200-x64/bin/ruby.exe extconf.rb --with-sqlite3-include=c:\sqlite-auto conf-3071602\sqlite3.h --with-sqlite3- lib=c:\sqlite-autoconf-3071602\.libs\sqlit e3.o 检查 sqlite3.h... *** extconf.rb 失败 *** 由于某种原因无法创建 Makefile,可能缺少必要的库和/或标题。检查 mkmf.log 文件以获取更多详细信息。您可能需要配置选项。 终于安装好了,问题是我必须在 MINGW32 终端中运行gem install
命令。现在启动 Rails 服务器时出现此错误: c:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/sqlite3-1.3.7/lib/sqlite3.rb:6:in `require': cannot加载此类文件 -- sqlite3/sqlite3_native (LoadError)
在第 8 步之前一切正常。找不到标题。我刚决定使用 virtualbox(大学项目)。
如果其他人有同样的问题,我在第 8 步遇到了麻烦,直到我意识到我在 MINGW32 窗口中使用的是 \ 而不是 /。切换到正斜杠使其工作。
对于第 8 步,我从 MINGW32 窗口运行命令并将命令更改为:gem install sqlite3 -- --with-sqlite3-include=/c/sqlite-autoconf-3071700/ --with-sqlite3-lib=/c/sqlite-autoconf-3071700/
(我在我的机器上将源代码提取到 C:\sqlite-autoconf-3071700) 【参考方案2】:
我能够使用以下命令在 win XP32 上安装带有 ruby2.0.0 的 sqlite3:
c:\>gem install sqlite3 --platform=ruby -- --with-sqlite3-dir=C:/distr/sqlite --with-sqlite3-include=C:/distr/sqlite
文件夹C:/distr/sqlite
包含以下文件
所以,基本上我已经将sqlite-amalgamation-3071602.zip
和sqlite-dll-win32-x86-3071602.zip
提取到C:/distr/sqlite
。
注意
您仍然需要将 sqlite3.dll
和 sqlite3.def
的副本放在 PATH 的某个位置。恕我直言,最好将 sqlite3 二进制文件保存在 ruby 的 bin 文件夹中。
【讨论】:
@Lucky,你从这里安装了 DevKit rubyinstaller.org/downloads 吗? @denis-bu 是的,我已经安装了它。因为这对我不起作用,所以我使用了 RailsFTW(一个单独的包 rails 安装程序文件,它为 windows 预捆绑了 ruby、rails 和 sqlite)和这对我有用.. 我还必须添加 --with-sqlite3-lib=C:/distr/sqlite。【参考方案3】:这是一个旧线程,但仍然相关。
对我们来说,这就像编辑 Gemfile
并为 sqlite 添加特定版本一样简单。
gem 'sqlite3', '~> 1.3.13'
【讨论】:
在所有冗长的解决方案中。这是一个为我工作的。谢谢!【参考方案4】:#!/usr/bin/env sh
mkdir c:/sqlite3x86
wget -P c:/sqlite3x86 http://packages.openknapsack.org/sqlite/sqlite-3.7.15.2-x86-windows.tar.lzma
cd c:/sqlite3x86
bsdtar --lzma -xf c:/sqlite3x86/sqlite-3.7.15.2-x86-windows.tar.lzma
gem install sqlite3 --platform=ruby -- --with-opt-dir=c:/sqlite3x86
cd c:/
rm -rf c:/sqlite3x86
【讨论】:
【参考方案5】:对于窗户,
去C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/sqlite3-1.3.13-x64-mingw32/lib/sqlite3.rb
并确保
require "sqlite3"
而不是原生
【讨论】:
谢谢。它在一个简单的gem install sqlite3
(Ruby 2.5.1,Rails 5.2)之后有所帮助。它现在引发另一个错误(文件重命名权限失败)。我的问题是:“它安全吗?即,有没有我需要使用 sqlite3 本机的情况?”我想触摸一个库定义...
奇怪的是,我卸载了 sqlite3 gem 并重新安装了它。 windows 10 ming-gw 64 不再需要编译选项
你的意思是这样的:? ` # 支持多个 ruby 版本(windows 下的胖二进制文件) begin RUBY_VERSION =~ /(\d+\.\d+)/ require "sqlite3" # require "sqlite3/#$1/sqlite3_native" rescue LoadError require "sqlite3" # require 'sqlite3/sqlite3_native' 结束`【参考方案6】:
从这里获取胖二进制文件
https://ci.appveyor.com/project/MSP-Greg/sqlite3-ruby/build/3/job/hhk6ie8gdo545svr/artifacts
和
gem install c:\path\to\downloaded_gem.gem
【讨论】:
【参考方案7】:我想我会给出一个答案——为了后代,来自 cmets。问题似乎是我使用了一个新版本的 Ruby/Rails(适用于 Windows),它“还”与 SQLite3 不兼容。
我降级到 1.9.x 并且能够运行。
【讨论】:
我使用的是 Ruby 2.0.0,它与 sqlite3 兼容 @jonathanrz 谢谢,我正在努力让 2.0.0 编译 sqilte3,很高兴听到你的工作正常。你介意权衡一下你遵循了哪些指令来编译它吗? @TylerGannon 我遵循 williams answer 的路径,但在第 8 步我使用了 denis-bu 答案并在 sqlite3 目录中添加了 libs 目录和 .libs 目录。 在经历了很多头痛和沮丧之后,@jonathanrz 说出了真相。按照威廉姆斯的回答,然后将 path/to/sqlite3/.lib 复制到一个目录,然后运行 denis-bu 的调用。组队! @jonathanrz 和 @phyatt,感谢您的帮助。这些指令成功地编译了没有错误的东西。现在,当我尝试从 ruby 实际使用 sqlite3 时,我收到此错误:126: The specified module could not be found. - c:/Ruby200/lib/ruby/gems/2.0.0/gems/sqlite3-1.3.7/lib/sqlite3/sqlite3_native.so
【参考方案8】:
在 Windows 机器上设置 Ruby on Rails 的最简单方法是使用 RailsInstaller,它会自动为您安装和配置 sqlite3。一步到位。
http://railsinstaller.org/en
【讨论】:
这就是我安装 ruby 的方式,但我在这里【参考方案9】:您应该遵循以下程序:
gem install bundler
(添加 Gem 文件_)
gem 'sqlite3', ' < 1.4'
(添加Gem文件_)
然后运行:
install bundler
【讨论】:
以上是关于如何在 Windows 上为 Ruby 安装 sqlite3?的主要内容,如果未能解决你的问题,请参考以下文章
在 Windows 上为 jekyll 安装 rouge 代码荧光笔
使用 Elastic Beanstalk 在 Amazon AWS 上为非 Rails ruby 脚本安装 Gems
在 Ubuntu 上为 Ruby on Rails 安装 PostgreSQL