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

6
我创建了一个特定项目的.rvmrc文件,其中包含一个自定义的gemset(使用命令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虚拟机上使用了系统范围内的RVM安装Vagrant。但是,当我们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?
3个回答

9
问题出在我使用的简单Chef食谱没有将vagrant用户添加到rvm组中。可以通过以下方式解决此问题:
sudo usermod -a -G rvm vagrant

但我决定转而使用一个更加稳健的 RVM Chef cookbook,这个菜谱使用以下配方完美地运行:

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

1

尝试在rvm命令之前添加'sudo'ruby@registration将被系统范围内安装,但仍应在每个用户的基础上工作。


1
我相信 sudo rvm ... 可以解决问题,但那不是正确的解决方案。当我进入一个目录时,.rvmrc 文件应该自动加载并创建 gemset,而不需要使用 sudo。这里存在一个更大的问题。 - Andrew

0

对我来说,问题在于我在我的主目录(用户安装)中安装了.rvm,但不知何故已经将该目录的所有权更改为root:root。

ls -al /home/darren *drwxr-xr-x 2 root root 4096 Oct 18 16:46 .rvm*

sudo chown darren:rvm .rvm -R

sudo useradd darren rvm


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接