Cómo configurar Ruby GEM_HOME y GEM_PATH

10

Soy un usuario NOVICE de Linux y uso Linux mint 17.1

He reinstalado Linux Mint 20 veces en los últimos 3 días para ese problema, pero no pude solucionarlo

Estoy tratando de instalar ruby ​​on rails usando rvm lo que sucedió es que si inicio una nueva instalación de Linux e intento instalar gemas y ruby ​​y otras cosas en una sesión de terminal, se instaló con éxito tan pronto como cierro la sesión de terminal no puedo obtener esas gemas .

Al reinstalarlo más de 20 veces en los últimos 3 días, también busqué en la web. Me han dicho que coloque la variable de entorno en la /etc/environmentruta de eco en esa sesión y la pegué en el /etc/environmentarchivo.

incluso ahora no obtengo mis gemas instaladas

cuando escribí rvm -vrecibo los siguientes errores

Warning: PATH set to RVM ruby but GEM_HOME and/or GEM_PATH not set, see:
    https://github.com/wayneeseguin/rvm/issues/3212

Warning! PATH is not properly set up, $GEM_HOME is not set,
         usually this is caused by shell initialization files - check them for 'PATH=...' entries,
         it might also help to re-add RVM to your dotfiles: 'rvm get stable --auto-dotfiles',
         to fix temporarily in this shell session run: 'rvm use ruby-2.2.2'.
rvm 1.26.11 (latest) by Wayne E. Seguin <[email protected]>, Michal Papis <[email protected]> [https://rvm.io/]

Soy una persona muy novata cuando se trata de trabajar con terminal. Puedo ejecutar algunos comandos básicos para trabajar con ruby.

Me gustaría saber

  1. Cómo configurar la RUTA
  2. Cómo configurar GEM_HOME
  3. Cómo configurar GEM_PATH

Debajo está mi camino completo

echo $PATH
/home/sharif/.rvm/gems/ruby-2.2.2/bin:/home/sharif/.rvm/gems/ruby-2.2.2@global/bin:/home/sharif/.rvm/rubies/ruby-2.2.2/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/sharif/.rvm/bin
Amjad
fuente
mr @mohsen pahlevanzades se puede saber cuál es el punto de borrar esas dos líneas, si no te importa que me dice, respecto
Amjad
Si no recuerdo
mal
1
Con respecto a la edición: ¿Deberían eliminarse 'Hola', 'gracias', lemas y saludos de las publicaciones?
Gilles 'SO- deja de ser malvado'

Respuestas:

18

Parece que quiere el comando exportpara configurar variables de entorno:

export PATH=$PATH':/path/to/add'
export GEM_HOME=$HOME/.gem
export GEM_PATH=$HOME/.gem

Sin embargo, eso solo tendrá efecto para la sesión actual. Para hacerlos más permanentes, agregue esas líneas a su ~/.bashrc.

Jonathan
fuente
3

Por lo general, esto significa que rvm no está configurado correctamente. El error habitual es que no modificó .bashrccorrectamente (o similar) o no recargó su terminal.

No debe configurar GEM_HOME o GEM_PATH manualmente cuando use rvm.

Puedes probar source ~/.rvm/scripts/rvmy ver si eso funciona.

También podría ser que aún no hayas creado un conjunto de gemas. No use rvm y sudo. Rvm funciona mejor cuando está instalado en su cuenta y no en todo el sistema.

coteyr
fuente
También puede agregar source ~/.rvm/scripts/rvma su ~/.bashrcpara asegurarse de que se carga cada vez que inicia un nuevo shell.
Niel de Wet
2

Esto es lo que aprendí y cómo resolví este problema aparentemente común de las variables de entorno GEM_HOME y GEM_PATH que no establecen error.


Antecedentes

Se supone que la instalación de RVM crea los entornos GEM_HOME y GEM_PATH para cada RVM que se configura y lo hace. Pero aparentemente hay un error tal que, en algunos casos, los entornos solo se configuran temporalmente, y para configurarlos nuevamente, debe configurarlos con la línea de comando. Encontré una solución para hacer que los entornos persistan para un RVM.

Solución alterna

  1. Encuentre su versión de Ruby activa (en el RVM): en su servidor de producción, vaya al directorio de su aplicación y escriba $rvm list. Esto dará como resultado una lista de las versiones de Ruby instaladas y cuál está activa para el RVM. Ejemplo de la respuesta:

    rvm rubies ruby-1.9.3-p547 [ x86_64 ] => ruby-1.9.3-p551 [ x86_64 ]

Entonces, sé que el RVM actualmente está utilizando la versión ruby-1.9.3-p551. Necesita esta información para el siguiente paso.

  1. Obtenga las rutas para GEM_PATH y GEM_HOME : Para ello, ejecute desde la línea de comandos $rvm use ruby-1.9.3-p551. Luego, aún desde la línea de comando, muestra todas las configuraciones del entorno usando el comando env. Busque GEM_PATH y GEM_HOME y cópielos en su totalidad en un espacio de trabajo.

    GEM_PATH=/usr/local/rvm/gems/ruby-1.9.3-p551:/usr/local/rvm/gems/ruby-1.9.3-p551@global GEM_HOME=/usr/local/rvm/gems/ruby-1.9.3-p551

  2. Establezca las variables de entorno GEM_HOME y GEM_PATH: ahora configure estas variables de entorno en uno de los muchos archivos de perfil. Quería mantener la estructura de aislamiento de la versión RVM, así que actualicé el /profile.d/appspecific.sh con estas dos líneas:

    export GEM_PATH=/usr/local/rvm/gems/ruby-1.9.3-p551:/usr/local/rvm/gems/ruby-1.9.3-p551@global export GEM_HOME=/usr/local/rvm/gems/ruby-1.9.3-p551

Va As
fuente
aparentemente GEM_HOME y GEM_PATH no son específicos de RVM?
barlop
2

Descubrí que .profile se carga en último lugar y que coloca ~ / .local / bin y ~ / bin en el frente del camino. Moví /etc/profile.d/rvm.sh a ~ / .rvm y al final de .profile agregué "source ~ / .rvm / rvm.sh" y el error desapareció. Estoy en Linux Mint 18.3. Tengo pyenv, rvm y sdkman instalados y todos quieren ser los últimos. Todos están trabajando bien ahora. :)

Si se trata de un sistema compartido, simplemente mueva rvm.sh a algún lugar fuera de la ruta y cualquier otro usuario puede obtenerlo, como por ejemplo /opt/rvm/rvm.sh.

RandyB
fuente
1

Como mencionó @coteyr, no debe configurar manualmente GEM_HOME y GEM_PATH cuando lo use rvm. Si verifica su variable de entorno PATH, ejecutando $ echo $PATHy $ HOME / .rvm / bin es parte de ella, entonces debe asegurarse de que su terminal ejecute comandos como un shell de inicio de sesión. Por ejemplo, si está en una máquina Ubuntu, abre su terminal y luego va a: menú> Editar> Preferencias de perfil> Comando y luego selecciona "Ejecutar comando como un shell de inicio de sesión"

Esto parece ser un problema antiguo con el rvmque supongo que no es trivial de solucionar, ya que ha existido por un tiempo.

Lym
fuente
1

Para completar $GEM_PATHcon mi sistema (Manjaro / Arch) gemsagregué a mi .bashrc:

for _entry in /usr/lib/ruby/gems/*; do
  if [[ -d $_entry ]]; then
    # TODO: Add only if not there already
    export GEM_PATH=$_entry:$GEM_PATH
  fi
done
unset _entry
Tom Hale
fuente