2012-03-15 28 views
5

He creado un archivo de proyecto específico .rvmrc que incluye un gemset personalizado (con el comando rvm --rvmrc --create [email protected]):RVM: Permiso denegado durante la carga del archivo gemset .rvmrc en todo el sistema de instalación

# 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 

Esto funciona de forma local en mi Mac, usando RVM de usuario único. También estamos usando Vagrant con una instalación de RVM en todo el sistema en nuestra caja Vagrant. Sin embargo, cuando cd en el directorio del proyecto y aceptamos el archivo .rvmrc, que da como resultado el siguiente mensaje (sí, hay una gran cantidad de mensajes de error duplicados):

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 

Tratando de crear la gemset menciones manualmente la misma error, pero también menciona que fue exitoso:

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

¿Tengo algo configurado incorrectamente? ¿Cómo puedo resolver este problema para poder usar un gemset personalizado desde un archivo .rvmrc?

Respuesta

8

El problema resultó ser que la simple receta de Chef que estaba usando no agregaba el usuario vagabundo al grupo rvm. Esto podría lograrse al hacer esto:

sudo usermod -a -G rvm vagrant 

Pero decidió cambiar a una forma más robust RVM Chef cookbook que funcionaba perfectamente el uso de estas recetas:

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

Intenta agregar 'sudo' antes de los comandos de rvm. El registro de ruby ​​@ se instalará en todo el sistema y aún así debería funcionar por usuario.

+0

Estoy seguro de que 'sudo rvm ...' funcionará, pero esa no es la solución correcta. Cuando 'cd' en un directorio, el archivo '.rvmrc' debe cargarse automáticamente y crear el gemset sin requerir sudo. Hay un problema más grande pasando aquí. – Andrew

0

Para mí, el problema era que yo había instalado .rvm en mi directorio de inicio (instalación de usuario), pero de alguna manera se las arregló para tener el directorio secundado por root: root.

ls -al/home/Darren * raíz drwxr-xr-x 2 Oct 4096 18 de raíz 16:46 .rvm *

sudo chown darren:rvm .rvm -R

sudo useradd darren rvm

Cuestiones relacionadas