RVM: Отказано в доступе при загрузке набора гемов из файла .rvmrc при общесистемной установке - PullRequest
6 голосов
/ 15 марта 2012

Я создал файл .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 с общесистемной установкой RVM на нашей Vagrant box.Однако, когда мы 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?

Ответы [ 3 ]

9 голосов
/ 16 марта 2012

Проблема оказалась в том, что простой рецепт шеф-повара, который я использовал, не добавлял бродячего пользователя в группу rvm. Это можно сделать, выполнив это:

sudo usermod -a -G rvm vagrant

Но я решил перейти на более надежную поваренную книгу RVM Chef , которая прекрасно работала по следующим рецептам:

include_recipe "rvm::system"
include_recipe "rvm::vagrant"
1 голос
/ 15 марта 2012

Попробуйте добавить 'sudo' перед вашим rvm commands. ruby@registration будет установлено во всей системе, но все равно будет работать для каждого пользователя.

0 голосов
/ 26 октября 2012

Для меня проблема заключалась в том, что у меня был установлен .rvm в моем домашнем каталоге (пользовательская установка), но каким-то образом ему удалось прервать каталог с помощью root: root.

ls -al /home / darren * drwxr-xr-x 2 root root 4096 18 октября 16:46 .rvm *

sudo chown darren:rvm .rvm -R

sudo useradd darren rvm

...