Comment mettre à niveau mon ruby ​​1.9.2-p0 vers le dernier niveau de correctif à l'aide de rvm?

116

Ma version actuelle de ruby ​​est, ruby 1.9.2p0 (2010-08-18 revision 29036) [x86_64-darwin10.5.0]mais je souhaite la mettre à jour avec le dernier niveau de correctif en utilisant rvm. Comment puis-je faire ceci?

Lan
la source

Réponses:

163

Tout d'abord, mettez à jour votre installation RVM en exécutant rvm get stable.

Pour vous assurer que vous exécutez la nouvelle version RVM, vous devrez alors exécuter rvm reload(ou simplement ouvrir un nouveau terminal).

Une fois cela fait, vous pouvez demander à RVM de répertorier les versions de ruby ​​disponibles à installer en exécutant rvm list known.

Dans la sortie, vous devriez maintenant voir:

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

Les crochets autour du niveau de patch indiquent qu'il s'agit actuellement du niveau de patch par défaut de RVM pour ruby ​​1.9.2.

Enfin, pour installer la nouvelle version de ruby, lancez simplement rvm install 1.9.2- et attendez qu'elle se compile!

npad
la source
29
Pour ceux qui obtiennent ERROR: la mise à jour rvm a été supprimée. - rvm get latest/ rvm get headsont les moyens corrects de mettre à jour rvm maintenant.
jibiel
98

Mettez à niveau l'interpréteur ruby et conservez les ensembles de gemmes existants:

$ 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

À remplacer par la dernière version stable de 1.9.2. Cela évite l'encombrement.

Quelques conseils utiles supplémentaires, grâce aux commentaires (@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
la source
3
En outre, vous pouvez rvm list knownpour voir les versions de ruby ​​disponibles que vous pouvez mettre à niveau.
James Chevalier
Modification suggérée par @Mauro Nidola "La mise à niveau de $ rvm 1.9.2 1.9.2-p0 doit être remplacée par la mise à niveau de $ rvm 1.9.2-p0 1.9.2"
iDev
Je ne vois pas son commentaire @ACB, je vais changer, votre représentant me dit que je n'ai pas à vérifier. Je suis également mis à jour avec le commentaire de James
oma
@oma, je viens d'une technologie différente. Vous devrez donc peut-être vérifier cela. Il s'agissait d'une modification suggérée par quelqu'un qui a été rejetée en tant que modification non valide. Consultez ce stackoverflow.com/review/suggested-edits/1365082 . Idéalement, il aurait dû publier un commentaire, je l'ai fait en son nom.
iDev
34

Première mise à jour RVM:

rvm get stable

Ensuite, mettez à jour votre version Ruby:

rvm upgrade 2.0.0

Choisissez oui pour toutes les questions:

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 vous souhaitez mettre à jour vos gemmes avec les dernières versions, vous pouvez faire:

rvm all do gem update

EDIT: Je viens de faire cela aujourd'hui pour la dernière version de ruby ​​2.0.0 (j'ai mis à jour de ruby-2.0.0-p195 à ruby-2.0.0-p353). Après cela, j'ai eu une erreur de segmentation lorsque j'ai essayé de mettre à jour les gemmes. Cela se produit parce que les gems ont été installés pour ruby-2.0.0-p195 et certains d'entre eux sont incompatibles avec p353.

Vous pouvez maintenant essayer de trouver les gemmes incompatibles, mais la solution la plus simple était de supprimer toutes les gemmes installées et de les réinstaller. J'ai simplement supprimé le gems/ruby-2.0.0-p353répertoire qui se trouvait dans /usr/local/rvm. Cela pourrait être ailleurs pour vous.

Ensuite, j'ai couru gem install bundleret pour chacune de mes applications de rails j'ai fait bundle install.

Viktor Fonic
la source
16

comme ça:

rvm update; rvm reload
rvm install ruby-1.9.2-p136 
rvm --default ruby-1.9.2-p136
Amer
la source
3
J'aime cette réponse. Je pense que la mise à niveau de la version de ruby ​​va à l'encontre de l'objectif de l'utilisation de rvm. Installer une version séparée à côté de p0, puis déclarer la version la plus récente (ou la version par défaut) semble élégante.
Tass
2
La mise à niveau vers le dernier correctif est parfois nécessaire pour des raisons de sécurité, par exemple lorsque des vulnérabilités sont découvertes dans une version Ruby particulière.
Asad R.
2

Vous pouvez installer n'importe quel niveau de patch en suivant la page de leur wiki .

De plus, chaque ruby ​​est indépendant, donc vous ne «mettez pas à jour et gardez les gemmes», mais installez une nouvelle version de correctif puis installez les gemmes dans ce nouvel environnement ruby.

C'est peut-être là où les gemmes entrent en jeu, mais je ne les utilise pas.

N'oubliez pas de mettre à jour votre rvm aussi, juste au cas où ça fait un moment.

pjammer
la source
2

La réponse de npad expose définitivement les bases, je ne répéterai donc pas ces étapes, mais plusieurs réponses suggèrent ici d'utiliser rvm upgrade. Je sais que rvm vous donne l'option, mais c'est un peu dangereux.

OMI, la manière la plus sûre et la plus «rvm» est de commencer par rvm installla nouvelle version de ruby, puis d'utiliser la rvm gemset copycommande pour copier votre ou vos ensembles de gemmes dans la nouvelle version de ruby, par exemple rvm gemset copy 1.9.2-p0@some-gemset 1.9.2-p290@some-gemset. Ensuite, vous pouvez facilement basculer votre projet vers l'utilisation du jeu de gemmes nouvellement copié (je recommande d'utiliser un .rvmrcfichier dans le répertoire de votre projet) et voir si votre code échoue. Si c'est le cas, revenir à l'ancienne version ruby ​​est juste une question de changement de jeu de gemmes.

Mais même si vous n'utilisez pas de gemsets (bien que je suppose que vous le faites puisque vous avez marqué des rails sur cette question), l'utilisation de rvm upgradepeut entraîner des échecs inattendus. Et si votre code se casse, vous devez maintenant réinstaller l'ancienne version. Prenez juste un peu plus de temps et faites-le de manière propre.

poète
la source
1

Je suppose que c'est rvm install 1.9.2-head

Vous pouvez voir les rubis disponibles avec rvm list known

Heikki
la source
va headobtenir le dernier niveau de patch? Je pensais que c'était pour la toute dernière version, ce qui signifie que ça pourrait être quelque chose d'instable et d'expérimental.
Lan
Ahaa, c'est vrai. J'ai mixé le dernier niveau et le patch.
Heikki
1

Ce billet de blog devrait être utile: http://pogodan.com/blog/2011/09/06/ruby-1-9-3-for-development

essentiel:

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
la source
Bien que cela puisse théoriquement répondre à la question, il serait préférable d'inclure les parties essentielles de la réponse ici et de fournir le lien pour référence.
Bill the Lizard le