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?

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!


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

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.


16

comme ça:

rvm update; rvm reload
rvm install ruby-1.9.2-p136 
rvm --default ruby-1.9.2-p136

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.


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.


1

Je suppose que c'est rvm install 1.9.2-head

Vous pouvez voir les rubis disponibles avec rvm list known


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

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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.