¿Cómo cambio mi versión de Ruby usando RVM?


111

No puedo cambiar la versión actual de Ruby:

  ~  rvm list

rvm rubies

   ruby-1.9.2-p290 [ x86_64 ]
   ruby-1.9.3-p0 [ x86_64 ]

  ~  rvm use ruby-1.9.3-p0

RVM is not a function, selecting rubies with 'rvm use ...' will not work.

¿Está seguro de haber instalado rvm correctamente? ¿Qué sistema operativo estás usando?
lesce

2
Agregue el resultado de rvm infoa su pregunta, por favor.
The Tin Man,

Tuve un problema similar al instalar rvm con apt-get en Ubuntu 11.10, tuve que eliminarlo y reinstalarlo con$ bash -s stable < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)
lesce

4
¿Tiene la función de carga RVM en el script de inicio de su shell? [[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"es el código a utilizar. Si tiene RVM instalado en su ruta, pero no lo tiene en su secuencia de comandos de inicio, puede obtener el RVM is not a functionerror.
Michelle Tilley

Esta solución funciona para mí - rvm.io/integration/gnome-terminal
gotqn

Respuestas:


122

Arreglado. Necesitaba agregar:

[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"  # This loads RVM 

a .zshrc


57

Esto me pasó a mí también. Yo tenía:

export PATH=~/.rvm/bin:$PATH

Agregado en mi .bashrc.

Todo lo que tenía que hacer era agregar otro

[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"

al mismo archivo y funcionó! Por supuesto, debes reiniciar tu terminal después de eso.


1
tenía esta misma línea (la [[-s "$ HOME / ...) en mi ~ / .bash_profile y no parecía" tomar "cuando abrí una nueva terminal ... pero cuando agregué la línea debajo de la línea PATH en ~ / .bashrc, funcionó, es decir, podría escribir rvm use 1.9.3 e inmediatamente reconocería rvm como un comando sin que yo tuviera que escribir primero source ~ / .bash_profile - i ' No soy una persona de Linux, así que esto me confunde, pero me alegro de que esto haya funcionado. Tal vez alguien pueda aclarar mi confusión.
TimDog

eso es genial, acabo de poner esta línea en ~ / .bashrc, funciona. pero tampoco sé por qué.
Jack Ma

Sí, está funcionando. Pero cada vez que reinicio mi máquina, tengo que dar los comandos mencionados anteriormente. Si no proporciono los comandos, dice que rvm no es una función.
Apurva Mayank

11

Su shell no conoce la función RVM. Después de instalarlo, le indica cómo solucionarlo. O vaya a la página de instalación en el sitio RVM y consulte la sección titulada "2. Cargue RVM en sus sesiones de shell como una función"

Ejecute esto una vez para agregar la línea que carga rvm en su ~ / .bash_profile:

$ echo '[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM function' >> ~/.bash_profile

o agréguelo manualmente usted mismo. (Tenga en cuenta que en algunos sistemas, querrá ponerlo en otros lugares, por ejemplo en mi sistema, Mac OSX Lion, lo puse en ~ / .profile)


Estoy usando OS X Snow Leopard, poner esa línea en mi .profile funcionó para mí.
Heldraug

9

(Kubuntu 11.10) El ~/.bash_profileahora se llama~/.profile

echo '[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM function' >> ~/.profile
source ~/.profile
rvm info # And now the fields display

6

Para cambiar la versión predeterminada de ruby:

En Ubuntu 11.10
, cambie la configuración de su terminal GNOME:

Vaya a Terminal y luego siga las siguientes instrucciones:

1.  Edit > Profile Preferences
2.  Open Title and Command Tab               
3.  Check Run Command as a login Shell 
4.  Restart terminal

Ejecute este comando en la terminal:

rvm --default use ruby_Version

5

Para agregar toda la funcionalidad RVM a su .bash_profile, debe usar el siguiente comando:

echo '[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM function' >> ~/.bash_profile

Después de eso, debe volver a cargar el shell actual o abrir una nueva sesión de terminal y escribir el siguiente comando para volver a cargar .bash_profile:

source .bash_profile

4

La solución anterior solo funcionará si RVM está instalado para el usuario actual. Una solución más general usaría la variable de ruta RVM:

# The following code loads RVM as user or system install:
[[ -s "$rvm_path/scripts/rvm" ]] && . "$rvm_path/scripts/rvm"

rvm_path=/home/myuser/.rvm . /home/myuser/.rvm/scripts/rvm
Jose Alban


3

En una instalación limpia de Ubuntu 12.04 encontré el mismo problema. El instalador RVM crea o agrega a un archivo llamado ~ / .bash_login el bit de código necesario para evitar el problema original:

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*

Sin embargo, esto no parece ser invocado. Agregarlo a ~ / .bashrc resolvió el problema para mí.


1

Instalación de RVM, consulte aquí http://octopress.org/docs/setup/rvm/


No utilice fuentes no autorizadas para instalar RVM. La página de instalación de RVM dice específicamente: "Tenga en cuenta que los tutoriales externos NO son compatibles, ya sea que funcionen o no. Los tutoriales son geniales, sin embargo, hemos dedicado una gran cantidad de horas de trabajo a depurar el proceso de instalación. Utilice los procesos de instalación de sólo en este sitio, ya que son los únicos tipos y métodos de instalación admitidos ".
The Tin Man

1

En mi caso en Ubuntu, la entrada en ~ / .bashrc tenía:

 [[ -s "$HOME/.rvm/scripts/rvm" ]] && ."$HOME/.rvm/scripts/rvm" # BAD

en vez de:

 [[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # WORKING

Observe el espacio que falta entre. y "$ HOME.

Además, si este es el problema, también debería notar un error en la parte superior cuando inicia su terminal.


0

Tuve una instalación global de RVM, que ejecuta /etc/profile.d/rvm.sh. Sin embargo, ese script requiere que se establezcan BASH_VERSION o ZSH_VERSION. Estaba ejecutando desde crontab, que usa "sh".

Creé un script de envoltura que usa / bin / bash para obtener /etc/profile.d/rvm.sh.


0

Debe cambiar las preferencias de su emulador de terminal para permitir el shell de inicio de sesión. A veces es necesario utilizarlo /bin/bash --logincomo comando.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.