2012-03-15 2 views
5

ho creato uno specifico file di progetto .rvmrc che include un GemSET personalizzato (utilizzando il comando rvm --rvmrc --create [email protected]):RVM: Autorizzazione negata durante il caricamento GemSET da file .rvmrc a livello di sistema-install

# 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 

Questo funziona localmente sul il mio Mac, utilizzando RVM per utente singolo. Stiamo anche utilizzando Vagrant con un'installazione RVM a livello di sistema sulla nostra scatola Vagrant. Tuttavia, quando abbiamo cd nella directory del progetto e accettare il file .rvmrc, il risultato è il seguente messaggio (sì, ci sono un sacco di messaggi di errore duplicati):

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 

Cercando di creare il GemSET menzioni manualmente lo stesso errore, ma menziona anche che era successo:

$ 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]). 

ho qualcosa configurato in modo errato? Come posso risolvere questo problema in modo da poter utilizzare un gemset personalizzato da un file .rvmrc?

risposta

8

Il problema si è rivelato che la semplice ricetta Chef che stavo usando non aggiungeva l'utente vagabondo al gruppo rvm. Ciò potrebbe essere realizzato in questo modo:

sudo usermod -a -G rvm vagrant 

Ma ho deciso di passare a un altro robust RVM Chef cookbook che ha funzionato perfettamente con queste ricette:

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

Prova ad aggiungere "sudo" prima dei comandi di rvm. la registrazione di ruby ​​@ verrà installata a livello di sistema, ma dovrebbe comunque funzionare su base utente.

+0

Sono sicuro che 'sudo rvm ...' funzionerà, ma non è la soluzione giusta. Quando "cd" in una directory, il file '.rvmrc' dovrebbe caricarsi automaticamente e creare il gemset senza richiedere sudo. C'è un problema più grande in corso qui. – Andrew

0

Per me, il problema era che avevo installato .rvm nella mia directory home (installazione utente) ma in qualche modo sono riuscito a far sì che la directory fosse rintracciata da root: root.

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

sudo chown darren:rvm .rvm -R

sudo useradd darren rvm