Ubuntu18.04运行rails console报需Bundler2及以上版本错误如何解决
报错根因说明
Bundler::LockfileError:项目Gemfile.lock文件生成时使用的Bundler大版本,和你当前终端调用的Bundler版本不匹配,你本地安装的高版本Bundler未被环境优先识别。- 执行
sudo gem update --system报错:Ubuntu 18.04自带的Ruby属于系统级组件,受apt包管理工具管控,手动修改系统RubyGems版本会触发兼容冲突,导致组件初始化失败。
解决方案
方案一:临时修复现有环境(适合快速恢复开发)
- 先卸载已安装的损坏的rubygems-update包,恢复系统RubyGems的默认状态:
sudo gem uninstall rubygems-update -x
- 进入你的Rails项目根目录,查看
Gemfile.lock要求的Bundler版本:
grep -A 1 "BUNDLED WITH" Gemfile.lock
- 根据输出的版本号安装对应Bundler,示例中输出版本为
2.2.32则执行:
sudo gem install bundler -v 2.2.32
- 完成后在项目目录执行
bundle install,再运行rails console即可正常启动。 - 开头的
/mnt/c权限警告不影响功能,如需消除可执行:
sudo chmod o-w /mnt/c
方案二:使用Ruby版本管理器(推荐,彻底解决版本/权限冲突)
Ubuntu 18.04自带的Ruby仅为系统组件运行设计,用于开发会频繁遇到权限、版本不兼容问题,建议用rbenv管理独立的开发用Ruby环境:
- 先安装依赖组件:
sudo apt update sudo apt install git libssl-dev libreadline-dev zlib1g-dev autoconf bison build-essential libyaml-dev libncurses5-dev libffi-dev libgdbm-dev rbenv ruby-build
- 将rbenv加入终端环境变量:
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc echo 'eval "$(rbenv init -)"' >> ~/.bashrc source ~/.bashrc
- 安装适配Rails 6.1的Ruby版本(推荐2.7.x系列):
rbenv install 2.7.6 rbenv global 2.7.6
- 后续安装Bundler、Rails等gem无需加
sudo,直接执行即可:
gem install bundler rails
- 进入你的项目目录重新执行
bundle install,后续所有Ruby相关开发都不会再出现系统级权限、版本冲突问题。
内容的提问来源于stack exchange,提问作者HakemHa
相关产品推荐
相关产品推荐

