安装json (1.8.6) gem失败,Bundler无法继续,求解决方案
解决json 1.8.6 gem安装失败的问题
我之前也踩过json 1.8.6的安装坑,这个版本因为发布时间比较早,和新系统、高版本Ruby的兼容性确实容易出问题,给你几个亲测有效的解决方向:
1. 检查Ruby版本匹配度
json 1.8.6只适配Ruby 2.0~2.4的版本,如果你的Ruby版本是2.5及以上,大概率会安装失败。先跑ruby -v查看当前版本,要是版本不匹配,建议用rbenv或者rvm切换到2.3.x/2.4.x的稳定版本后再尝试安装。
2. 补全系统编译依赖
json 1.8.6需要编译C扩展,必须确保系统有对应的编译工具和依赖库:
- macOS用户:先安装Xcode命令行工具,执行
xcode-select --install。如果安装时还是报错,试试加上编译参数忽略隐式函数声明的错误:gem install json -v '1.8.6' -- --with-cflags="-Wno-error=implicit-function-declaration" - Linux(Ubuntu/Debian)用户:先安装必要的依赖包:
安装完成后再执行sudo apt-get install ruby-dev gcc makegem install json -v '1.8.6'。
3. 换源或手动编译安装
- 如果默认rubygems源不稳定,可以切换到国内镜像源后重试:
gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/ gem install json -v '1.8.6' - 要是换源还不行,试试手动编译:
- 下载json 1.8.6的源码包(.gem格式)
- 解压后进入源码目录,依次执行:
ruby extconf.rb make make install
bundle install。
4. 尝试升级json版本(谨慎操作)
如果项目代码没有强依赖json 1.8.6的特定功能,可以尝试把Gemfile里的版本限制放宽,比如改成gem 'json', '~> 1.8.7'或者更高的兼容版本,然后执行bundle update json。这个方法能快速避开旧版本的兼容性问题,但一定要先测试项目功能是否正常。
你可以先从检查Ruby版本和补全系统依赖开始试,这两个是最常见的解决途径。
内容的提问来源于stack exchange,提问作者FAntony
相关产品推荐
相关产品推荐

