Windows下Ruby执行bundle操作时openssl安装失败求助
解决Windows 10下Ruby 2.6.6安装openssl 3.1.0失败的问题
1. 指定兼容Ruby 2.6.6的openssl版本
Ruby 2.6.6与openssl 3.x版本兼容性较差,直接在Gemfile中锁定兼容的2.x分支版本:
gem 'openssl', '~> 2.2.0'
执行bundle update openssl,让Bundler拉取适配版本,避免自动尝试安装3.1.0。
2. 修复mingw依赖源问题
Windows环境下Ruby的mingw包源可能失效,手动配置可靠的源:
bundle config set mirror.mingw https://gems.ruby-china.com/mingw bundle config set mirror.mingw32 https://gems.ruby-china.com/mingw32
配置完成后重新执行bundle install,让Bundler从新源拉取mingw相关依赖。
3. 手动配置openssl原生依赖环境
若仍出现原生扩展编译失败,手动绑定DevKit并设置环境变量:
- 下载对应Ruby 2.6.x版本的DevKit-mingw64-64(64位系统),解压后运行:
ruby dk.rb init ruby dk.rb install
- 设置环境变量指向Ruby自带的openssl库:
set OPENSSL_INCLUDE_DIR=C:\Ruby26-x64\include\openssl set OPENSSL_LIB_DIR=C:\Ruby26-x64\lib
再执行bundle install。
4. 直接使用Heroku环境生成锁文件
如果本地环境问题无法快速解决,绕开本地编译:
- 通过Heroku CLI进入远程应用shell:
heroku run bash -a 你的应用名 - 在远程shell中执行
bundle install生成Gemfile.lock - 用
heroku run cat Gemfile.lock输出内容,复制替换本地的Gemfile.lock文件 - 直接推送代码到Heroku即可。
内容的提问来源于stack exchange,提问作者bseido
相关产品推荐
相关产品推荐

