Jak zaktualizować Ruby 1.9.2-p0 do najnowszego poziomu poprawek przy użyciu rvm?


116

Moja aktualna wersja Rubiego to, ruby 1.9.2p0 (2010-08-18 revision 29036) [x86_64-darwin10.5.0]ale chcę ją zaktualizować do najnowszego poziomu poprawek przy użyciu rvm. W jaki sposób mogę to zrobić?

Odpowiedzi:


163

Przede wszystkim zaktualizuj instalację RVM, uruchamiając rvm get stable.

Aby upewnić się, że korzystasz z nowej wersji RVM, musisz uruchomić rvm reload(lub po prostu otworzyć nowy terminal).

Gdy to zrobisz, możesz poprosić RVM o wyświetlenie wersji Ruby dostępnych do zainstalowania przez uruchomienie rvm list known.

Na wyjściu powinieneś teraz zobaczyć:

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

Nawiasy kwadratowe wokół poziomu poprawki wskazują, że jest to obecnie domyślny poziom poprawek RVM dla Ruby 1.9.2.

Wreszcie, aby zainstalować nową wersję ruby, po prostu uruchom rvm install 1.9.2- i poczekaj, aż się skompiluje!


29
Dla tych, którzy otrzymują ERROR: aktualizacja rvm została usunięta. - rvm get latest/ rvm get headsą poprawnymi sposobami aktualizacji rvm teraz.
jibiel

98

Ulepsz interpreter ruby i zachowaj istniejące zestawy klejnotów:

$ 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

Aby zastąpić najnowszą stabilną wersją 1.9.2. Pozwala to uniknąć bałaganu.

Dodatkowe pomocne wskazówki dzięki komentarzom (@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
Możesz także rvm list knownzobaczyć dostępne wersje Ruby, do których możesz zaktualizować.
James Chevalier

Edycja sugerowana przez @Mauro Nidola "$ rvm upgrade 1.9.2 1.9.2-p0 należy zmienić na $ rvm upgrade 1.9.2-p0 1.9.2"
iDev

Nie widzę jego komentarza @ACB, zmienię się, twój przedstawiciel mówi mi, że nie muszę podwójnie sprawdzać. Aktualizuję również komentarzem Jamesa
oma

@oma, pochodzę z innej technologii. Więc być może będziesz musiał dwukrotnie to sprawdzić. To była zmiana zasugerowana przez kogoś, która została odrzucona jako nieprawidłowa zmiana. Sprawdź ten stackoverflow.com/review/suggested-edits/1365082 . Idealnie, powinien był opublikować jako komentarz, zamiast tego zrobiłem w jego imieniu.
iDev

34

Pierwsza aktualizacja RVM:

rvm get stable

Następnie zaktualizuj swoją wersję Ruby:

rvm upgrade 2.0.0

Wybierz tak dla wszystkich pytań:

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

Jeśli chcesz zaktualizować swoje klejnoty do najnowszych wersji, możesz:

rvm all do gem update

EDYCJA: Właśnie zrobiłem to dzisiaj dla najnowszej wersji Ruby 2.0.0 (zaktualizowałem z ruby-2.0.0-p195 do ruby-2.0.0-p353). Potem otrzymywałem błąd segmentacji, gdy próbowałem zaktualizować klejnoty. Dzieje się tak, ponieważ klejnoty zostały zainstalowane dla ruby-2.0.0-p195, a niektóre z nich są niekompatybilne z p353.

Teraz możesz iść i spróbować znaleźć klejnoty, które są niekompatybilne, ale najłatwiejszym rozwiązaniem było usunięcie wszystkich zainstalowanych klejnotów i zainstalowanie ich ponownie. Po prostu usunąłem gems/ruby-2.0.0-p353katalog, który się znajdował w /usr/local/rvm. To może być dla ciebie gdzie indziej.

Następnie uruchomiłem gem install bundleri dla każdej z moich aplikacji railsowych, które zrobiłem bundle install.


16

lubię to:

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

3
Podoba mi się ta odpowiedź. Uważam, że aktualizacja wersji ruby ​​w pewnym sensie podważa cel używania rvm. Instalowanie oddzielnej wersji obok p0, a następnie zadeklarowanie nowszej (lub dowolnej) wersji jako domyślnej wydaje się eleganckie.
Tass

2
Aktualizacja do najnowszej poprawki jest czasami konieczna ze względów bezpieczeństwa - na przykład w przypadku wykrycia luk w określonej wersji Rubiego.
Asad R.

2

Możesz zainstalować poprawki na dowolnym poziomie, podążając za stroną w ich wiki .

Ponadto każdy rubin jest niezależny, więc tak naprawdę nie `` ulepszasz i zachowujesz klejnoty '', ale instalujesz nową wersję łatki, a następnie instalujesz klejnoty w nowym środowisku rubinowym.

Może to być miejsce, w którym w grę wchodzą klejnoty, ale ja ich nie używam.

Nie zapomnij również zaktualizować swojego rvm, na wypadek gdyby minęło trochę czasu.


2

Odpowiedź npad zdecydowanie przedstawia podstawy, więc nie będę powtarzać tych kroków, ale jest tutaj kilka odpowiedzi sugerujących użycie rvm upgrade. Wiem, że rvm daje ci opcję, ale jest to trochę niebezpieczne.

IMO, bezpieczniejszym i bardziej "rvm" jest najpierw rvm installnowa wersja ruby, a następnie użycie rvm gemset copypolecenia do skopiowania zestawu (ów) gemset (ów) do nowej wersji ruby, np rvm gemset copy 1.9.2-p0@some-gemset 1.9.2-p290@some-gemset. Następnie możesz łatwo przełączyć swój projekt na używanie nowo skopiowanego gemset (polecam użycie .rvmrcpliku w katalogu projektu) i sprawdzić, czy twój kod się nie powiedzie. Jeśli tak, zmiana z powrotem na starą wersję rubinową jest tylko kwestią zmiany zestawu klejnotów.

Ale nawet jeśli nie używasz gemsetów (chociaż zakładam, że robisz to, ponieważ oznaczyłeś szyny w tym pytaniu), użycie rvm upgrademoże prowadzić do nieoczekiwanych awarii. A jeśli twój kod się zepsuje, teraz musisz ponownie zainstalować starą wersję. Poświęć trochę więcej czasu i zrób to w czysty sposób.


1

Myślę, że to rvm install 1.9.2-head

Możesz zobaczyć dostępne rubiny z rvm list known


będzie headuzyskać najnowszy poziom poprawki? Myślałem, że to najnowsza wersja, co oznacza, że ​​może to być coś niestabilnego i eksperymentalnego.
Lan

Ahaa, prawda. Zmieszałem najnowszy i poprawiony poziom.
Heikki

1

Ten post na blogu powinien być pomocny: http://pogodan.com/blog/2011/09/06/ruby-1-9-3-for-development

niezbędniki:

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

Chociaż może to teoretycznie odpowiedzieć na pytanie, lepiej byłoby zawrzeć tutaj zasadnicze części odpowiedzi i podać link do odniesienia.
Bill the Lizard,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.