¿Cómo actualizo mi ruby ​​1.9.2-p0 al último nivel de parche usando rvm?

116

Mi versión actual de ruby ​​es ruby 1.9.2p0 (2010-08-18 revision 29036) [x86_64-darwin10.5.0]pero quiero actualizarla al último nivel de parche usando rvm. ¿Cómo puedo hacer esto?

Lan
fuente

Respuestas:

163

En primer lugar, actualice su instalación RVM ejecutando rvm get stable.

Para asegurarse de que está ejecutando la nueva versión de RVM, deberá ejecutar rvm reload(o simplemente abrir una nueva terminal).

Una vez hecho esto, puede pedirle a RVM que enumere las versiones de ruby ​​disponibles para instalar ejecutando rvm list known .

En la salida ahora debería ver:

# MRI Rubies
...
[ruby-]1.9.2[-p320]
...

Los corchetes alrededor del nivel de parche indican que este es actualmente el nivel de parche predeterminado de RVM para ruby ​​1.9.2.

Por último, para instalar la nueva versión de ruby, simplemente ejecute rvm install 1.9.2y espere a que se compile.

npad
fuente
29
Para aquellos que reciben ERROR: se ha eliminado la actualización de rvm. - rvm get latest/ rvm get headson las formas correctas de actualizar rvm ahora.
jibiel
98

Actualice el intérprete de ruby y mantenga los conjuntos de gemas existentes:

$ rvm upgrade 1.9.2-p0 1.9.2
Are you sure you wish to upgrade from ruby-1.9.2-p0 to ruby-1.9.2-p136? (Y/n): Y

Para reemplazar con la última versión estable de 1.9.2. Esto evita el desorden.

Algunos consejos útiles adicionales, gracias a los comentarios (@Mauro, @James, @ACB)

$ rvm list known
# NOTE: you probably want to upgrade your rvm first, as the list of known rubies seems to be coupled to the rvm version.
$ rvm get stable
$ rvm list known #pick your ruby
oma
fuente
3
Además, puede rvm list knownpara ver las versiones de ruby ​​disponibles a las que puede actualizar.
James Chevalier
Edición sugerida por @Mauro Nidola "$ rvm upgrade 1.9.2 1.9.2-p0 debe cambiarse a $ rvm upgrade 1.9.2-p0 1.9.2"
iDev
No puedo ver su comentario @ACB, cambiaré, su representante me dice que no tengo que verificarlo. También estoy actualizando con el comentario de James
oma
@oma, soy de una tecnología diferente. Así que es posible que tengas que comprobarlo dos veces. Esa fue una edición sugerida por alguien que fue rechazada por no ser válida. Consulte este stackoverflow.com/review/suggested-edits/1365082 . Idealmente, debería haber publicado un comentario, en cambio, lo hice en su nombre.
iDev
34

Primera actualización RVM:

rvm get stable

Luego actualice su versión de Ruby:

rvm upgrade 2.0.0

Elija sí para todas las preguntas:

Are you sure you wish to upgrade from ruby-2.0.0-p195 to ruby-2.0.0-p247? (Y/n): Y
Are you sure you wish to MOVE gems from ruby-2.0.0-p195 to ruby-2.0.0-p247?
This will overwrite existing gems in ruby-2.0.0-p247 and remove them from ruby-2.0.0-p195 (Y/n): Y
Do you wish to move over aliases? (Y/n): Y
Do you wish to move over wrappers? (Y/n): Y
Do you also wish to completely remove ruby-2.0.0-p195 (inc. archive)? (Y/n): Y

Si desea actualizar sus gemas a las últimas versiones, puede hacer lo siguiente:

rvm all do gem update

EDITAR: Acabo de hacer esto hoy para la última versión de ruby ​​2.0.0 (actualicé de ruby-2.0.0-p195 a ruby-2.0.0-p353). Después de eso, estaba obteniendo un error de segmentación cuando intenté actualizar gemas. Esto sucede porque las gemas se instalaron para ruby-2.0.0-p195 y algunas de ellas son incompatibles con p353.

Ahora puede ir e intentar encontrar las gemas que son incompatibles, pero la solución más fácil fue eliminar todas las gemas instaladas e instalarlas nuevamente. Simplemente eliminé el gems/ruby-2.0.0-p353directorio que estaba ubicado en /usr/local/rvm. Podría estar en otro lugar para ti.

Luego corrí gem install bundlery para cada una de mis aplicaciones de rieles lo hice bundle install.

Viktor Fonic
fuente
16

Me gusta esto:

rvm update; rvm reload
rvm install ruby-1.9.2-p136 
rvm --default ruby-1.9.2-p136
Amer
fuente
3
Me gusta esta respuesta. Siento que actualizar la versión de ruby ​​frustra el propósito de usar rvm. Instalar una versión separada junto con p0 y luego declarar la versión más nueva (o la que sea) como predeterminada parece elegante.
Tass
2
La actualización al último parche a veces es necesaria por razones de seguridad, como cuando se descubren vulnerabilidades en una versión particular de Ruby.
Asad R.
2

Puede instalar cualquier nivel de parche siguiendo la página de su wiki .

Además, cada rubí es independiente, por lo que no está realmente 'actualizando y conservando las gemas', sino instalando una nueva versión de parche y luego instalando las gemas en ese nuevo entorno de rubí.

Esto puede ser donde entran en juego los conjuntos de gemas, sin embargo, no los uso.

No olvide actualizar también su rvm, por si ha pasado un tiempo.

pjammer
fuente
2

La respuesta de npad definitivamente establece los conceptos básicos, por lo que no reiteraré esos pasos, pero hay varias respuestas aquí que sugieren usar rvm upgrade. Sé que rvm te da la opción, pero es un poco peligrosa.

En mi opinión, la forma más segura y más "rvm" es primero rvm installla nueva versión de ruby, luego use el rvm gemset copycomando para copiar su (s) conjunto (s) de gemas a la nueva versión de ruby, por ejemplo rvm gemset copy 1.9.2-p0@some-gemset 1.9.2-p290@some-gemset. Luego, puede cambiar fácilmente su proyecto para usar el conjunto de gemas recién copiado (recomiendo usar un .rvmrcarchivo en el directorio de su proyecto) y ver si su código falla. Si lo hace, volver a la versión anterior de rubí es solo cuestión de cambiar el conjunto de gemas.

Pero incluso si no usa conjuntos de gemas (aunque supongo que sí, ya que etiquetó rieles en esta pregunta), el uso de rvm upgradepuede provocar fallas inesperadas. Y si su código se rompe, ahora debe reinstalar la versión anterior nuevamente. Solo tómate un poco más de tiempo y hazlo de manera limpia.

poeta montaña
fuente
1

Supongo que es rvm install 1.9.2-head

Puedes ver los rubíes disponibles con rvm list known

Heikki
fuente
será headconseguir el último nivel de parches? Pensé que era para la última versión, lo que significa que podría ser algo inestable y experimental.
Lan
Ajá, cierto. Mezclé el nivel más reciente y de parche.
Heikki
1

Esta publicación de blog debería ser útil: http://pogodan.com/blog/2011/09/06/ruby-1-9-3-for-development

esenciales:

rvm get head
rvm reload

wget https://gist.github.com/raw/1008945/4edd1e1dcc1f0db52d4816843a9d1e6b60661122/ruby-1.9.2p290.patch
rvm install ruby-1.9.2-p290 --patch ruby-1.9.2p290.patch -n patched
Dawid Woźniak
fuente
Si bien esto puede responder teóricamente a la pregunta, sería preferible incluir aquí las partes esenciales de la respuesta y proporcionar el enlace como referencia.
Bill the Lizard