Windows环境下运行bundle install失败,bindex原生扩展构建出错求助
Windows下bundle install遇bindex原生扩展构建失败的解决办法
我之前在Windows环境用RailsInstaller的Ruby 2.3.3做项目时,也碰到过和你完全一样的问题——执行bundle install到bindex 0.8.1的时候直接卡壳,报出Makefile多目标模式的错误,折腾了好一会儿才搞定,给你几个亲测有效的解决思路:
你碰到的具体报错(和我当时一模一样)
Gem::Ext::BuildError: ERROR: 无法构建gem原生扩展。 当前目录: D:/installation data/RailsInstaller/Ruby2.3.3/lib/ruby/gems/2.3.0/gems/bindex-0.8.1/ext/skiptrace "D:/installation data/RailsInstaller/Ruby2.3.3/bin/ruby.exe" -r ./siteconf20200429-5116-m9ymp2.rb extconf.rb 正在创建Makefile 当前目录: D:/installation data/RailsInstaller/Ruby2.3.3/lib/ruby/gems/2.3.0/gems/bindex-0.8.1/ext/skiptrace make "DESTDIR=" clean Makefile:264: *** 多个目标模式。停止。 当前目录: D:/installation data/RailsInstaller/Ruby2.3.3/lib/ruby/gems/2.3.0/gems/bindex-0.8.1/ext/skiptrace make "DESTDIR=" Makefile:264: *** 多个目标模式。停止。 make执行失败,退出码2 Gem文件将保留在D:/installation data/RailsInstaller/Ruby2.3.3/lib/ruby/gems/2.3.0/gems/bindex-0.8.1供检查。 结果记录到D:/installation data/RailsInstaller/Ruby2.3.3/lib/ruby/gems/2.3.0/extensions/x86-mingw32/2.3.0/bindex-0.8.1/gem_make.out
系统提示得先搞定gem install bindex -v '0.8.1'才能继续bundle,下面是解决方法:
方法一:换个兼容的bindex版本
bindex 0.8.1在Windows+Ruby 2.3.x的组合下确实有兼容性bug,最简单的办法就是直接锁定兼容版本:
- 打开你的Gemfile,添加一行
gem 'bindex', '0.8.0'(这个版本在Windows下构建完全没问题) - 或者如果是web-console依赖的bindex,也可以锁定web-console的版本:
gem 'web-console', '3.6.2',这个版本依赖的bindex版本更稳定 - 然后重新执行
bundle install就行
方法二:解决Ruby安装路径的空格问题
看你的Ruby安装路径是D:/installation data/RailsInstaller/Ruby2.3.3,路径里的空格是Windows下构建Ruby原生扩展的大坑!Makefile很容易因为空格解析错误出现多目标模式的问题:
- 把Ruby整个迁移到没有空格的路径,比如
D:/RailsInstaller/Ruby2.3.3 - 然后打开命令行,先执行
gem install bindex -v '0.8.1',成功后再跑bundle install
方法三:确认DevKit配置正确
RailsInstaller自带的DevKit是构建原生扩展必须的工具,要是没配置好也会出问题:
- 找到DevKit的安装目录,打开命令行进入该目录
- 依次执行以下命令:
ruby dk.rb init ruby dk.rb install
- 配置完成后再尝试安装bindex或者执行bundle install
内容的提问来源于stack exchange,提问作者Devil
相关产品推荐
相关产品推荐

