我创建了一个项目特定的.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在我们的Vagrant盒子上安装了系统范围的RVM.但是,当我们进入项目目录并接受.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).
解决方法
问题是我使用的简单Chef配方没有将vagrant用户添加到rvm组.这可以通过这样做来实现:
- sudo usermod -a -G rvm vagrant
但是我决定改用更多的robust RVM Chef cookbook,使用这些食谱完美地工作:
- include_recipe "rvm::system"
- include_recipe "rvm::vagrant"