Como faço para atualizar meu ruby ​​1.9.2-p0 para o nível de patch mais recente usando o rvm?

116

Minha versão atual do ruby ​​é, ruby 1.9.2p0 (2010-08-18 revision 29036) [x86_64-darwin10.5.0]mas eu quero atualizá-lo para o nível de patch mais recente usando o rvm. Como posso fazer isso?

Lan
fonte

Respostas:

163

Em primeiro lugar, atualize a instalação do RVM executando rvm get stable.

Para ter certeza de que está executando a nova versão do RVM, você precisará executar rvm reload(ou apenas abrir um novo terminal).

Uma vez feito isso, você pode pedir ao RVM para listar as versões de ruby ​​disponíveis para instalar executando rvm list known.

Na saída você deve ver agora:

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

Os colchetes ao redor do nível de patch indicam que este é atualmente o nível de patch padrão do RVM para ruby ​​1.9.2.

Finalmente, para instalar a nova versão do ruby, apenas execute rvm install 1.9.2- e espere a compilação!

npad
fonte
29
Para aqueles que estão recebendo ERROR: a atualização do rvm foi removida. - rvm get latest/ rvm get headsão as maneiras corretas de atualizar o rvm agora.
jibiel,
98

Atualize o interpretador Ruby e mantenha os conjuntos de joias existentes:

$ 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

Para substituir pela versão estável mais recente de 1.9.2. Isso evita desordem.

Algumas dicas úteis adicionais, graças aos comentários (@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
fonte
3
Além disso, você pode rvm list knownver as versões disponíveis do Ruby para as quais é possível atualizar.
James Chevalier de
Edição sugerida por @Mauro Nidola "$ rvm upgrade 1.9.2 1.9.2-p0 deve ser alterado para $ rvm upgrade 1.9.2-p0 1.9.2"
iDev
Não consigo ver o comentário dele @ACB, vou trocar, seu representante me disse que não preciso verificar novamente. Também estou atualizando com o comentário de James
oma
@oma, sou de uma tecnologia diferente. Então você pode ter que verificar isso. Essa foi uma edição sugerida por alguém que foi rejeitada como uma edição inválida. Verifique stackoverflow.com/review/suggested-edits/1365082 . Idealmente, ele deveria ter postado como um comentário, em vez disso, eu fiz em seu nome.
iDev
34

Primeira atualização RVM:

rvm get stable

Em seguida, atualize sua versão Ruby:

rvm upgrade 2.0.0

Escolha sim para todas as perguntas:

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

Se quiser atualizar suas joias para as versões mais recentes, você pode fazer:

rvm all do gem update

EDIT: Acabei de fazer isso hoje para a versão mais recente do ruby ​​2.0.0 (atualizei de ruby-2.0.0-p195 para ruby-2.0.0-p353). Depois disso, eu estava recebendo falha de segmentação quando tentei atualizar as gemas. Isso acontece porque as gemas foram instaladas para ruby-2.0.0-p195 e algumas delas são incompatíveis com p353.

Agora você pode tentar encontrar as gemas incompatíveis, mas a solução mais fácil era remover todas as gemas instaladas e instalá-las novamente. Eu simplesmente removi o gems/ruby-2.0.0-p353diretório que estava localizado em /usr/local/rvm. Pode ser em outro lugar para você.

Então eu executei gem install bundlere para cada um dos meus aplicativos Rails eu fiz bundle install.

Viktor Fonic
fonte
16

como isso:

rvm update; rvm reload
rvm install ruby-1.9.2-p136 
rvm --default ruby-1.9.2-p136
Amer
fonte
3
Eu gosto dessa resposta. Acho que atualizar a versão do ruby ​​meio que anula o propósito de usar o rvm. Instalar uma versão separada junto com p0 e então declarar a versão mais recente (ou qualquer outra) como padrão parece elegante.
Tass
2
Atualizar para o patch mais recente às vezes é necessário por razões de segurança - como quando vulnerabilidades são descobertas em uma versão particular do Ruby.
Asad R.
2

Você pode instalar qualquer nível de patch seguindo a página em seu wiki .

Além disso, cada ruby ​​é independente, então você não está realmente 'atualizando e mantendo as joias', mas instalando uma nova versão de patch e então instalando as joias naquele novo ambiente de ruby.

Este pode ser o lugar onde os gemsets entram em jogo, mas eu não os uso.

Não se esqueça de atualizar seu rvm também, caso já faça algum tempo.

pjammer
fonte
2

A resposta do npad definitivamente apresenta o básico, então não vou repetir essas etapas, mas há várias respostas aqui sugerindo o uso rvm upgrade. Eu sei que o rvm dá a você essa opção, mas é um pouco perigosa.

IMO, a maneira mais segura e "rvm" é primeiro rvm installa nova versão do ruby, depois use o rvm gemset copycomando para copiar o (s) conjunto (s) de joias para a nova versão do ruby, por exemplo rvm gemset copy 1.9.2-p0@some-gemset 1.9.2-p290@some-gemset. Então, você pode facilmente mudar seu projeto para usar o gemset recém-copiado (eu recomendo usar um .rvmrcarquivo no diretório do projeto) e ver se o código falha. Se isso acontecer, mudar de volta para a versão antiga do ruby ​​é apenas uma questão de trocar o conjunto de joias.

Mas mesmo que você não use conjuntos de gemas (embora eu presuma que sim, já que marcou os trilhos nesta questão), o uso de rvm upgradepode levar a falhas inesperadas. E se o seu código quebrar, agora você tem que reinstalar a versão antiga novamente. Basta demorar um pouco mais e fazer da maneira limpa.

poeta montanha
fonte
1

Eu acho que é rvm install 1.9.2-head

Você pode ver os rubis disponíveis com rvm list known

Heikki
fonte
irá headobter o nível de patch mais recente? pensei que fosse para a versão mais recente, o que significa que pode ser algo instável e experimental.
Lan de
Ahaa, é verdade. Eu mixei o nível mais recente e o do patch.
Heikki
1

Esta postagem do blog deve ser útil: http://pogodan.com/blog/2011/09/06/ruby-1-9-3-for-development

Essenciais:

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
fonte
Embora isso possa teoricamente responder à pergunta, seria preferível incluir as partes essenciais da resposta aqui e fornecer o link para referência.
Bill the Lizard,