ruby - RVM:在系统范围安装中从 .rvmrc 文件加载 gemset 时权限被拒绝

标签 ruby rvm vagrant

我创建了一个包含自定义 gemset 的项目特定 .rvmrc 文件(使用命令 rvm --rvmrc --create 1.9.2@registration):

# excerpt of .rvmrc...

environment_id="ruby-1.9.2@registration"

if [[ -d "${rvm_path:-$HOME/.rvm}/environments" \
  && -s "${rvm_path:-$HOME/.rvm}/environments/$environment_id" ]]
then
  \. "${rvm_path:-$HOME/.rvm}/environments/$environment_id"

  if [[ -s "${rvm_path:-$HOME/.rvm}/hooks/after_use" ]]
  then
    . "${rvm_path:-$HOME/.rvm}/hooks/after_use"
  fi
else
  # If the environment file has not yet been created, use the RVM CLI to select.
  if ! rvm --create  "$environment_id"
  then
    echo "Failed to create RVM environment '${environment_id}'."
    return 1
  fi
fi

这在我的 Mac 上本地运行,使用单用户 RVM。我们也在使用 Vagrant在我们的 Vagrant 盒子上安装系统范围的 RVM。但是,当我们 cd 进入项目目录并接受 .rvmrc 文件时,会产生以下消息(是的,有很多重复的错误消息):

mkdir: cannot create directory `/usr/local/rvm/gems/ruby-1.9.2-p318@registration': Permission denied
-bash: /usr/local/rvm/environments/ruby-1.9.2-p318@registration: Permission denied
-bash: /usr/local/rvm/environments/ruby-1.9.2-p318@registration: Permission denied
-bash: /usr/local/rvm/environments/ruby-1.9.2-p318@registration: Permission denied
-bash: /usr/local/rvm/environments/ruby-1.9.2-p318@registration: Permission denied
-bash: /usr/local/rvm/environments/ruby-1.9.2-p318@registration: Permission denied
-bash: /usr/local/rvm/environments/ruby-1.9.2-p318@registration: Permission denied
-bash: /usr/local/rvm/environments/ruby-1.9.2-p318@registration: Permission denied
-bash: /usr/local/rvm/environments/ruby-1.9.2-p318@registration: Permission denied
-bash: /usr/local/rvm/environments/ruby-1.9.2-p318@registration: Permission denied
-bash: /usr/local/rvm/environments/ruby-1.9.2-p318@registration: Permission denied
-bash: /usr/local/rvm/environments/ruby-1.9.2-p318@registration: Permission denied
-bash: /usr/local/rvm/environments/ruby-1.9.2-p318@registration: Permission denied
mkdir: cannot create directory `/usr/local/rvm/wrappers/ruby-1.9.2-p318@registration': Permission denied

尝试手动创建 gemset 提到同样的错误,但也提到它是成功的:

$ rvm use 1.9.2
Using /usr/local/rvm/gems/ruby-1.9.2-p318
$ rvm gemset create registration
mkdir: cannot create directory `/usr/local/rvm/gems/ruby-1.9.2-p318@registration': Permission denied
'registration' gemset created (/usr/local/rvm/gems/ruby-1.9.2-p318@registration).

我是否配置不正确?如何解决此问题,以便我可以使用 .rvmrc 文件中的自定义 gemset?

最佳答案

问题原来是我使用的简单 Chef 食谱没有将 vagrant 用户添加到 rvm 组。这可以通过这样做来完成:

sudo usermod -a -G rvm vagrant

但我决定改用更多 robust RVM Chef cookbook使用这些食谱效果很好:

include_recipe "rvm::system"
include_recipe "rvm::vagrant"

关于ruby - RVM:在系统范围安装中从 .rvmrc 文件加载 gemset 时权限被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9724766/

相关文章:

ruby - RVM 安装问题 - 无法执行端口 (autoconf)

docker - Vagrant 和 Docker 与微服务

amazon-web-services - 封隔器 EC2_HOME : Neither of EC2_AMITOOL_HOME or EC2_HOME environment variables are set

ruby - 为什么我不能得到 rake db :migrate to work for ruby. railstutorial.org

ruby-on-rails - Rails Cookie 问题

ruby - 无法为此处文档创建临时文件,使用 rvm 安装 ruby​​ 1.9.2

ruby-on-rails - rvm gem 安装错误?

ubuntu - 在 Ubuntu 上的 VirtualBox 上的 Vagrant

ruby - 使用 ruby​​ 创建符号链接(symbolic link)

ruby - 将字符串拆分为 N 个字符的子字符串