2012-03-15 8 views
5

Stworzyłem konkretny .rvmrc plik projektu, który zawiera niestandardowy gemset (używając polecenia rvm --rvmrc --create [email protected]):RVM: Permission denied podczas wczytywania gemset z .rvmrc pliku w całym systemie zainstalować

# excerpt of .rvmrc... 

environment_id="[email protected]" 

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 

to działa lokalnie na mój Mac, używając RVM pojedynczego użytkownika. Używamy również Vagrant z instalacją RVM obejmującą cały system w naszym pudełku Vagrant. Jednak, kiedy cd do katalogu projektu i zaakceptować plik .rvmrc, skutkuje następującym komunikatem (tak, istnieje wiele zduplikowanych komunikatów o błędach):

mkdir: cannot create directory `/usr/local/rvm/gems/[email protected]': Permission denied 
-bash: /usr/local/rvm/environments/[email protected]: Permission denied 
-bash: /usr/local/rvm/environments/[email protected]: Permission denied 
-bash: /usr/local/rvm/environments/[email protected]: Permission denied 
-bash: /usr/local/rvm/environments/[email protected]: Permission denied 
-bash: /usr/local/rvm/environments/[email protected]: Permission denied 
-bash: /usr/local/rvm/environments/[email protected]: Permission denied 
-bash: /usr/local/rvm/environments/[email protected]: Permission denied 
-bash: /usr/local/rvm/environments/[email protected]: Permission denied 
-bash: /usr/local/rvm/environments/[email protected]: Permission denied 
-bash: /usr/local/rvm/environments/[email protected]: Permission denied 
-bash: /usr/local/rvm/environments/[email protected]: Permission denied 
-bash: /usr/local/rvm/environments/[email protected]: Permission denied 
mkdir: cannot create directory `/usr/local/rvm/wrappers/[email protected]': Permission denied 

Próbując stworzyć gemset ręcznie wymienia takie same błąd, ale także wspomina, że ​​się udało:

$ 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/[email protected]': Permission denied 
'registration' gemset created (/usr/local/rvm/gems/[email protected]). 

Czy mam coś skonfigurowanego niepoprawnie? Jak mogę rozwiązać ten problem, aby móc użyć niestandardowego zestawu gemsetów z pliku .rvmrc?

Odpowiedz

8

Problem polegał na tym, że prosty przepis na szefa kuchni, którego używałem, nie powodował dodawania użytkownika z sieci do grupy rvm. Cel ten można osiągnąć w ten sposób:

sudo usermod -a -G rvm vagrant 

ale zdecydowałem się przejść do bardziej robust RVM Chef cookbook który pracował idealnie korzystania z tych receptur:

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

Spróbuj dodać "sudo" przed komendami rvm. Rejestracja ruby ​​@ zostanie zainstalowana w systemie, ale powinna nadal działać dla każdego użytkownika.

+0

Jestem pewien, że 'sudo rvm ...' będzie działać, ale to nie jest właściwe rozwiązanie. Kiedy 'cd' do katalogu, plik' .rvmrc' powinien załadować się automatycznie i utworzyć gemset bez konieczności sudo. Tutaj dzieje się większy problem. – Andrew

0

dla mnie problemem było to, że miałem .rvm zainstalowany w moim katalogu domowym (instalacja użytkownika), ale jakoś udało się, aby katalog został przekręcony przez root: root.

ls -al/home/Darren * korzeń drwxr-xr-x 2 korzeń 18 października 4096 16:46 .rvm *

sudo chown darren:rvm .rvm -R

sudo useradd darren rvm