我创建了一个包含自定义 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/