Wie aktualisiere ich meinen Ruby 1.9.2-p0 mit rvm auf den neuesten Patch-Level?

116

Meine aktuelle Version von Ruby ist, ruby 1.9.2p0 (2010-08-18 revision 29036) [x86_64-darwin10.5.0]aber ich möchte sie mit rvm auf den neuesten Patch-Level aktualisieren. Wie kann ich das machen?

Lan
quelle

Antworten:

163

Aktualisieren Sie zunächst Ihre RVM-Installation, indem Sie ausführen rvm get stable.

Um sicherzustellen, dass Sie die neue RVM-Version ausführen, müssen Sie sie ausführen rvm reload(oder einfach ein neues Terminal öffnen).

Sobald dies erledigt ist, können Sie RVM bitten, die Ruby-Versionen aufzulisten, die durch Ausführen installiert werden können rvm list known.

In der Ausgabe sollten Sie nun sehen:

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

Die eckigen Klammern um die Patch-Ebene zeigen an, dass dies derzeit die Standard-Patch-Ebene von RVM für Ruby 1.9.2 ist.

Um die neue Ruby-Version zu installieren, führen Sie sie einfach aus rvm install 1.9.2- und warten Sie, bis sie kompiliert ist!

npad
quelle
29
Für diejenigen, die ERROR: rvm Update erhalten wurde entfernt. - rvm get latest/ rvm get headsind die richtigen Möglichkeiten, um rvm jetzt zu aktualisieren.
Jibiel
98

Aktualisieren Sie den Ruby-Interpreter und behalten Sie vorhandene Edelsteine ​​bei:

$ 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

Zum Ersetzen durch die neueste stabile Version von 1.9.2. Dies vermeidet Unordnung.

Einige zusätzliche hilfreiche Tipps dank Kommentaren (@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
quelle
3
Sie können auch rvm list knowndie verfügbaren Ruby-Versionen anzeigen, auf die Sie aktualisieren können.
James Chevalier
Von @Mauro Nidola vorgeschlagene Änderung "$ rvm Upgrade 1.9.2 1.9.2-p0 sollte in $ rvm Upgrade 1.9.2-p0 1.9.2 geändert werden"
iDev
Ich kann seinen Kommentar @ACB nicht sehen. Ich werde mich ändern. Ihr Mitarbeiter sagt mir, dass ich nicht noch einmal nachsehen muss. Ich aktualisiere auch mit James Kommentar
oma
@oma, ich komme aus einer anderen Technologie. Möglicherweise müssen Sie dies überprüfen. Dies war eine Änderung, die von jemandem vorgeschlagen wurde, der als ungültige Änderung abgelehnt wurde. Überprüfen Sie diese stackoverflow.com/review/suggested-edits/1365082 . Idealerweise hätte er als Kommentar posten sollen, stattdessen habe ich es in seinem Namen getan.
iDev
34

Erstes Update RVM:

rvm get stable

Aktualisieren Sie dann Ihre Ruby-Version:

rvm upgrade 2.0.0

Wählen Sie für alle Fragen Ja:

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

Wenn Sie Ihre Edelsteine ​​auf die neuesten Versionen aktualisieren möchten, haben Sie folgende Möglichkeiten:

rvm all do gem update

BEARBEITEN: Ich habe dies heute für die neueste Version von Ruby 2.0.0 getan (ich habe von Ruby-2.0.0-p195 auf Ruby-2.0.0-p353 aktualisiert). Danach bekam ich einen Segmentierungsfehler, als ich versuchte, Edelsteine ​​zu aktualisieren. Dies geschieht, weil die Edelsteine ​​für Ruby-2.0.0-p195 installiert wurden und einige von ihnen nicht mit p353 kompatibel sind.

Jetzt können Sie versuchen, die nicht kompatiblen Edelsteine ​​zu finden. Die einfachste Lösung bestand jedoch darin, alle installierten Edelsteine ​​zu entfernen und erneut zu installieren. Ich habe einfach das gems/ruby-2.0.0-p353Verzeichnis entfernt , in dem sich das Verzeichnis befand /usr/local/rvm. Es könnte woanders für dich sein.

Dann lief ich gem install bundlerund für jede meiner Rails-Apps tat ich bundle install.

Viktor Fonic
quelle
16

so was:

rvm update; rvm reload
rvm install ruby-1.9.2-p136 
rvm --default ruby-1.9.2-p136
Amer
quelle
3
Ich mag diese Antwort. Ich bin der Meinung, dass ein Upgrade der Version von Ruby den Zweck der Verwendung von rvm zunichte macht. Das Installieren einer separaten Version neben p0 und das Deklarieren der neueren (oder einer beliebigen) Version als Standardversion erscheint elegant.
Tass
2
Ein Upgrade auf den neuesten Patch ist manchmal aus Sicherheitsgründen erforderlich, z. B. wenn in einer bestimmten Ruby-Version Schwachstellen entdeckt werden.
Asad R.
2

Sie können jedes Patch-Level installieren, indem Sie der Seite in ihrem Wiki folgen .

Außerdem ist jeder Rubin unabhängig, sodass Sie die Edelsteine ​​nicht wirklich aktualisieren und behalten, sondern eine neue Patch-Version installieren und die Edelsteine ​​dann in dieser neuen Rubin-Umgebung installieren.

Dies kann sein, wenn Edelsteine ​​ins Spiel kommen, aber ich benutze sie nicht.

Vergessen Sie nicht, auch Ihr RVM zu aktualisieren, nur für den Fall, dass es eine Weile her ist.

pjammer
quelle
2

Die Antwort von npad enthält definitiv die Grundlagen, sodass ich diese Schritte nicht wiederholen werde, aber es gibt hier mehrere Antworten, die die Verwendung vorschlagen rvm upgrade. Ich weiß, dass rvm Ihnen die Option gibt, aber es ist ein bisschen gefährlich.

IMO, der sicherere und "rvm-Weg" besteht darin, zuerst rvm installdie neue Ruby-Version zu verwenden und dann mit dem rvm gemset copyBefehl Ihre Gemset (s) in die neue Ruby-Version zu kopieren, z rvm gemset copy 1.9.2-p0@some-gemset 1.9.2-p290@some-gemset. Dann können Sie Ihr Projekt ganz einfach auf das neu kopierte Gemset umstellen (ich empfehle die Verwendung einer .rvmrcDatei in Ihrem Projektverzeichnis) und prüfen, ob Ihr Code fehlschlägt. Wenn dies der Fall ist, müssen Sie nur das Gemset wechseln, um zur alten Ruby-Version zurückzukehren.

Aber selbst wenn Sie keine Edelsteine ​​verwenden (obwohl ich davon ausgehe, dass Sie dies tun, da Sie Schienen in dieser Frage markiert haben), kann die Verwendung von rvm upgradezu unerwarteten Fehlern führen. Und wenn Ihr Code kaputt geht, müssen Sie jetzt die alte Version erneut installieren. Nehmen Sie sich einfach etwas mehr Zeit und machen Sie es sauber.

Dichterberg
quelle
1

Ich denke es ist rvm install 1.9.2-head

Sie können verfügbare Rubine mit sehen rvm list known

Heikki
quelle
wird headdas neueste Patch-Level bekommen? Ich dachte, es wäre für die neueste Version, was bedeutet, dass es etwas Instabiles und Experimentelles sein könnte.
Lan
Ahaa, stimmt. Ich habe das neueste und das Patch-Level gemischt.
Heikki
1

Dieser Blog-Beitrag sollte hilfreich sein: http://pogodan.com/blog/2011/09/06/ruby-1-9-3-for-development

Wesentliches:

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
quelle
Während dies theoretisch die Frage beantworten kann, wäre es vorzuziehen , die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz bereitzustellen.
Bill the Lizard