Як оновити свій ruby ​​1.9.2-p0 до останнього рівня патчу за допомогою rvm?


116

Моя поточна версія ruby ​​є, ruby 1.9.2p0 (2010-08-18 revision 29036) [x86_64-darwin10.5.0]але я хочу оновити її до останнього рівня патча за допомогою rvm. Як я можу це зробити?

Відповіді:


163

Перш за все, оновіть установку RVM, запустивши rvm get stable.

Щоб переконатися, що ви працюєте з новою версією RVM, вам потрібно буде запустити rvm reload(або просто відкрити новий термінал).

Після цього ви можете попросити RVM перерахувати доступні для встановлення рубінові версії rvm list known.

На виході ви повинні побачити:

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

Квадратні дужки навколо рівня патчу вказують, що це в даний час рівень патчу RVM за замовчуванням для рубіна 1.9.2.

Нарешті, щоб встановити нову версію рубіну, просто запустіть rvm install 1.9.2- і дочекайтеся її складання!


29
Для тих, хто отримує ПОМИЛКУ: оновлення rvm було видалено. - rvm get latest/ rvm get head- це правильні способи оновлення rvm зараз.
Джібіель

98

Оновіть рубіновий перекладач і збережіть наявні гемсети:

$ 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

Замінити на останню стабільну версію 1.9.2. Це дозволяє уникнути захаращення.

Деякі додаткові корисні поради, завдяки коментарям (@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
Також ви можете rvm list known, щоб побачити доступні рубінові версії, до яких можна оновити.
Джеймс Шевальє

Редагувати запропоновано @Mauro Nidola "$ rvm upgrade 1.9.2 1.9.2-p0 слід змінити на $ rvm upgrade 1.9.2-p0 1.9.2"
iDev

Я не бачу його коментаря @ACB, я зміню, ваш реп. Каже мені, що я не повинен перевіряти повторно. Я також оновлююся коментарем Джеймса
ома

@oma, я з іншої технології. Тож вам, можливо, доведеться ще раз перевірити це. Це була редакція, запропонована людиною, яку відхилено як недійсну редакцію. Перевірте це stackoverflow.com/review/sugges-edits/1365082 . В ідеалі він повинен був розмістити коментар, замість цього я зробив від його імені.
iDev

34

Перше оновлення RVM:

rvm get stable

Потім оновіть свою версію Ruby:

rvm upgrade 2.0.0

Виберіть так для всіх питань:

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

Якщо ви хочете оновити дорогоцінні камені до останніх версій, ви можете зробити:

rvm all do gem update

EDIT: Я щойно зробив це для останньої версії ruby ​​2.0.0 (я оновив з ruby-2.0.0-p195 до ruby-2.0.0-p353). Після цього я отримав помилку в сегментації, коли намагався оновити дорогоцінні камені. Це відбувається тому, що дорогоцінні камені були встановлені для ruby-2.0.0-p195, а деякі з них несумісні з p353.

Тепер ви можете піти і спробувати знайти дорогоцінні камені, несумісні, але найпростішим рішенням було видалити всі встановлені дорогоцінні камені та встановити їх заново. Я просто видалив gems/ruby-2.0.0-p353каталог, який знаходився в /usr/local/rvm. Це може бути десь ще для вас.

Потім я побіг gem install bundlerі для кожного з моїх рейок я зробив bundle install.


16

подобається це:

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

3
Мені подобається ця відповідь. Я відчуваю, що оновлення версії сорту ruby ​​перемагає мету використання rvm. Встановлення окремої версії поряд з p0, а потім декларування нової (або будь-якої) версії за замовчуванням здається елегантною.
Тасс

2
Оновлення до останнього патча іноді необхідне з міркувань безпеки - наприклад, коли виявлено вразливості у певній версії Ruby.
Асад Р.

2

Ви можете встановити будь-який рівень патчу, дотримуючись сторінки у їхній вікі .

Крім того, кожен рубін є незалежним, тому ви насправді не "оновлюєте та зберігаєте дорогоцінні камені", але встановлюєте нову версію патча та встановлюєте дорогоцінні камені в новому середовищі рубіну.

Це може бути, якщо гемсети вступають у гру, проте я їх не використовую.

Не забудьте також оновити rvm, про всяк випадок, якщо він пройшов деякий час.


2

Відповідь npad безумовно викладає основи, тому я не повторюю ці кроки, але тут є кілька відповідей, які пропонують використовувати rvm upgrade. Я знаю, що rvm дає вам можливість, але це трохи небезпечно.

IMO, більш безпечний і "rvm шлях" - це спочатку rvm installнову версію рубіну, потім скористайтеся rvm gemset copyкомандою, щоб скопіювати ваш набір (и) дорогоцінних каменів у нову версію ruby, наприклад rvm gemset copy 1.9.2-p0@some-gemset 1.9.2-p290@some-gemset. Тоді ви можете легко переключити свій проект на використання нещодавно скопійованого набору (я рекомендую використовувати .rvmrcфайл у каталозі вашого проекту) і побачити, чи не виходить ваш код. Якщо це станеться, повернення до старої рубінової версії - це лише питання переключення набору.

Але навіть якщо ви не використовуєте gemsets (хоча я вважаю, що ви це робите, оскільки ви помітили рейки в цьому питанні), використання rvm upgradeможе призвести до несподіваних збоїв. І якщо ваш код зламається, тепер вам доведеться знову встановити стару версію. Просто займіть трохи більше часу і зробіть це чисто.


1

Я здогадуюсь свого rvm install 1.9.2-head

Ви можете побачити доступні рубіни з rvm list known


буде headотримати останній рівень патча? Я думав, що це найновіша версія, тобто це може бути щось нестабільне та експериментальне.
Лан

Ахаа, правда. Я змішав останній рівень та патч.
Хейкі

1

Ця публікація в блозі має бути корисною: http://pogodan.com/blog/2011/09/06/ruby-1-9-3-for-development

необхідний:

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

Хоча це теоретично може відповісти на питання, бажано було б сюди включити істотні частини відповіді та надати посилання для довідки.
Білл Ящірка
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.