Ubuntu 22.04下Rails项目bundle install权限错误修复问询
解决Ubuntu 22.04下Bundler::PermissionError的方案
你的问题根源是系统级Ruby安装在/usr/local目录下,普通用户没有写入权限,而Rails禁止用sudo执行bundle install是为了避免权限混乱和安全风险。下面是两种可行的解决方法:
方案一:用rbenv管理Ruby版本(推荐)
rbenv是轻量的Ruby版本管理工具,会把Ruby安装在用户专属目录下,彻底规避系统权限问题。
- 安装依赖包
打开终端,运行:
sudo apt update sudo apt install git curl libssl-dev libreadline-dev zlib1g-dev autoconf bison build-essential libyaml-dev libreadline-dev libncurses5-dev libffi-dev libgdbm-dev
- 安装rbenv
执行:
curl -fsSL https://github.com/rbenv/rbenv-installer/raw/HEAD/bin/rbenv-installer | bash
- 配置shell环境
根据你使用的shell(bash或zsh),把rbenv添加到启动文件:
- 如果你用bash:
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc echo 'eval "$(rbenv init -)"' >> ~/.bashrc source ~/.bashrc
- 如果你用zsh:
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.zshrc echo 'eval "$(rbenv init -)"' >> ~/.zshrc source ~/.zshrc
- 安装Ruby 3.2.2
运行:
rbenv install 3.2.2
设置全局默认Ruby版本:
rbenv global 3.2.2
验证安装成功:
ruby -v
输出应该显示ruby 3.2.2p53(或类似版本号)。
- 安装Rails 7.1.2
执行:
gem install rails -v 7.1.2
然后运行rbenv rehash让系统识别新安装的rails命令。
- 重新安装项目依赖
回到你的blog项目目录,执行:
bundle install
此时gem会被安装在用户目录下的~/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0路径,不会再出现权限错误。
方案二:临时指定gem安装路径(应急用)
如果不想用版本管理器,可以临时把gem安装到用户有权限的路径:
- 配置gem用户目录
运行:
echo 'export GEM_HOME="$HOME/.gem"' >> ~/.bashrc echo 'export PATH="$HOME/.gem/bin:$PATH"' >> ~/.bashrc source ~/.bashrc
- 重新安装Rails(若需要)
gem install rails -v 7.1.2
- 安装项目依赖
回到项目目录,执行:
bundle install --path vendor/bundle
这样gem会被安装在项目目录下的vendor/bundle文件夹里,不需要系统级权限。
内容的提问来源于stack exchange,提问作者Mohammadamin Alizadeh
相关产品推荐
相关产品推荐

