Как мне обновить мой 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 перечислить версии ruby, доступные для установки, запустив rvm list known.

На выходе вы должны увидеть:

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

Квадратные скобки вокруг уровня патча указывают, что в настоящее время это уровень патча RVM по умолчанию для ruby ​​1.9.2.

Наконец, чтобы установить новую версию Ruby, просто запустите rvm install 1.9.2- и подождите, пока она скомпилируется!


29
Для тех, у кого ОШИБКА: удалено обновление rvm. - rvm get latest/ rvm get head- это правильные способы обновить rvm сейчас.
jibiel

98

Обновите интерпретатор Ruby и сохраните существующие гемсеты:

$ 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увидеть доступные версии Ruby, до которых вы можете перейти.
Джеймс Шевалье,

Правка, предложенная @Mauro Nidola «$ rvm upgrade 1.9.2 1.9.2-p0 следует заменить на $ rvm upgrade 1.9.2-p0 1.9.2»
iDev

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

@oma, я из другой техники. Так что вам, возможно, придется дважды проверить это. Это изменение было предложено кем-то, но оно было отклонено как недействительное. Проверьте это stackoverflow.com/review/suggested-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

РЕДАКТИРОВАТЬ: я сделал это сегодня для последней версии 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и сделал для каждого из своих приложений rails 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 copyRuby , а затем использовать команду для копирования вашего набора (ов) в новую версию Ruby, например rvm gemset copy 1.9.2-p0@some-gemset 1.9.2-p290@some-gemset. Затем вы можете легко переключить свой проект на использование только что скопированного гемсета (я рекомендую использовать .rvmrcфайл в каталоге вашего проекта) и посмотреть, не работает ли ваш код. Если это так, возврат к старой версии Ruby - это просто вопрос переключения гемсета.

Но даже если вы не используете гемсеты (хотя я предполагаю, что вы это делаете, поскольку вы отметили рельсы в этом вопросе), использование rvm upgradeможет привести к неожиданным сбоям. И если ваш код сломается, вам придется снова переустановить старую версию. Просто потратьте немного больше времени и сделайте это чисто.


1

Я думаю это rvm install 1.9.2-head

Вы можете увидеть доступные рубины с помощью rvm list known


будет headполучить последний уровень патча? Я думал, что это самая последняя версия, а это значит, что это может быть что-то нестабильное и экспериментальное.
Lan

Ага, правда. Я смешал последнюю версию и патч уровня.
Heikki

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

Хотя теоретически это может дать ответ на вопрос, было бы предпочтительнее включить сюда основные части ответа и предоставить ссылку для справки.
Bill the Lizard,
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.