Windows7/10下Ruby on Rails安装报错求助:sqlite3相关问题
解决Windows下Ruby on Rails中sqlite3.h缺失及bundle install路径错误问题
我之前在Windows环境折腾Ruby on Rails时,遇到过几乎一模一样的问题。结合你用的版本(Ruby 2.3.3、Rails 5.0.1),问题核心在于sqlite3开发库未正确关联和版本兼容性不匹配,给你一步步拆解解决方案:
一、搞定sqlite3 1.4.2版本安装(不用到处找下载渠道)
你不用单独找sqlite3 1.4.2的安装包,直接通过RubyGems就能指定版本安装,不过得先准备好sqlite3的开发文件(包含sqlite3.h头文件):
- 去SQLite官方网站下载sqlite-amalgamation压缩包(这是包含所有开发头文件的包),解压到本地某个路径,比如
C:\sqlite-dev,解压后你能在里面找到sqlite3.h文件。 - 打开命令提示符,执行以下命令安装指定版本的sqlite3 gem,把路径替换成你刚才解压的路径:
(注意路径用斜杠gem install sqlite3 -v 1.4.2 --platform=ruby -- --with-sqlite3-include=C:/sqlite-dev --with-sqlite3-lib=C:/sqlite-dev/,别用反斜杠\,避免转义问题)
二、修复bundle install的「系统找不到指定路径」错误
- 先清理之前bundle的缓存残留,避免旧配置干扰:
bundle clean --force - 打开项目根目录下的
Gemfile,把sqlite3的版本明确写死:gem 'sqlite3', '1.4.2' - 配置bundle的编译参数,让它能找到sqlite3的开发文件:
bundle config build.sqlite3 --with-sqlite3-include=C:/sqlite-dev --with-sqlite3-lib=C:/sqlite-dev - 最后执行bundle install:
bundle install
三、更省心的备选方案(用预编译二进制gem)
如果上面的编译步骤还是出问题,你可以直接下载适配Windows的预编译sqlite3 gem包:
- 去RubyGems官网找到sqlite3 1.4.2的版本页面,下载对应你Ruby版本的
x86-mingw32格式的gem文件(比如sqlite3-1.4.2-x86-mingw32.gem)。 - 本地安装这个gem:
gem install --local 你下载的gem文件路径 - 再回到项目执行
bundle install即可。
为什么会出现这些问题?
- Windows环境下Ruby的gem安装默认没有内置sqlite3的开发头文件,所以编译sqlite3 gem时会找不到
sqlite3.h。 - Ruby 2.3.x属于较旧版本,对高版本的sqlite3 gem(比如你用的3.33.0对应的gem版本)兼容性不好,1.4.2是经过验证的、适配Ruby 2.3.x和Rails 5.0.x的稳定版本。
内容的提问来源于stack exchange,提问作者Todd
相关产品推荐
相关产品推荐

