Ruby 1.8.7-p374环境下无法安装Gem的问题求助
解决
Marshal.load reentered at marshal_load 安装Gem错误 嘿,这个错误我在处理老Ruby版本的时候碰到过好多次!你用的ruby-1.8.7-p374、rubygems-1.8.29和rvm-1.29.3组合里,核心问题是rubygems版本和Ruby 1.8.7的marshal序列化逻辑不兼容,给你几个能快速解决的办法:
1. 降级rubygems到完全兼容的版本
Ruby 1.8.7对高版本rubygems的支持很差,你当前的rubygems-1.8.29刚好处于一个容易触发这个错误的版本,直接降级到1.8.30就能解决:
- 先卸载当前的rubygems更新包:
gem uninstall rubygems-update -x - 安装指定兼容版本的rubygems更新包:
gem install rubygems-update -v 1.8.30 - 执行更新命令切换到这个版本:
update_rubygems --version 1.8.30
2. 清理RVM缓存并重置Gemset
有时候RVM的缓存或者已有的Gemset存在损坏文件,也会触发这个异常,清理后再试:
- 清空RVM的所有缓存文件:
rvm cleanup all - 如果你用了自定义Gemset,建议新建一个干净的Gemset并切换过去:
rvm gemset create ruby187_gems rvm gemset use ruby187_gems
3. 安装兼容版本的Bundler(或其他Gem)
注意!Ruby 1.8.7不支持Bundler 2.x及以上版本,必须安装1.x的最后兼容版:
gem install bundler -v 1.17.3
额外提醒
ruby-1.8.7和对应的旧版rubygems早在多年前就停止维护了,安全漏洞和兼容性问题会越来越多,如果你的项目允许,尽量升级到Ruby 2.x以上的稳定版本,能省不少麻烦。
内容的提问来源于stack exchange,提问作者Anusha Bhat
相关产品推荐
相关产品推荐

