Come aggiorno il mio ruby ​​1.9.2-p0 all'ultimo livello di patch usando rvm?


116

La mia attuale versione di ruby ​​è ruby 1.9.2p0 (2010-08-18 revision 29036) [x86_64-darwin10.5.0]ma voglio aggiornarla all'ultimo livello di patch usando rvm. Come posso fare questo?

Risposte:


163

Prima di tutto, aggiorna la tua installazione RVM eseguendo rvm get stable.

Per assicurarti di eseguire la nuova versione RVM, dovrai quindi eseguire rvm reload(o semplicemente aprire un nuovo terminale).

Una volta fatto, puoi chiedere a RVM di elencare le versioni di ruby ​​disponibili per l'installazione eseguendo rvm list known.

Nell'output ora dovresti vedere:

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

Le parentesi quadre intorno al livello di patch indicano che questo è attualmente il livello di patch predefinito di RVM per ruby ​​1.9.2.

Infine, per installare la nuova versione di ruby, esegui rvm install 1.9.2e aspetta che si compili!


29
Per coloro che ricevono ERRORE: l'aggiornamento rvm è stato rimosso. - rvm get latest/ rvm get headsono i modi corretti per aggiornare rvm adesso.
jibiel

98

Aggiorna l'interprete di rubino e mantieni le gemme esistenti:

$ 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

Da sostituire con l'ultima versione stabile della 1.9.2. Questo evita il disordine.

Alcuni suggerimenti utili aggiuntivi, grazie ai commenti (@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
Inoltre, puoi rvm list knownvedere le versioni di ruby ​​disponibili a cui puoi eseguire l'aggiornamento.
James Chevalier

Modifica suggerita da @Mauro Nidola "$ rvm upgrade 1.9.2 1.9.2-p0 dovrebbe essere cambiato in $ rvm upgrade 1.9.2-p0 1.9.2"
iDev

Non riesco a vedere il suo commento @ACB, cambierò, il tuo rappresentante mi dice che non devo ricontrollare. Mi sto anche aggiornando con il commento di James
oma

@oma, provengo da una tecnologia diversa. Quindi potresti dover ricontrollare questo. Era una modifica suggerita da qualcuno che è stata rifiutata come modifica non valida. Controlla questo stackoverflow.com/review/suggested-edits/1365082 . Idealmente avrebbe dovuto postare come commento, invece l'ho fatto per suo conto.
iDev

34

Primo aggiornamento RVM:

rvm get stable

Quindi aggiorna la tua versione di Ruby:

rvm upgrade 2.0.0

Scegli sì per tutte le domande:

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 desideri aggiornare le tue gemme alle ultime versioni, puoi fare:

rvm all do gem update

EDIT: l'ho appena fatto oggi per l'ultima versione di ruby ​​2.0.0 (ho aggiornato da ruby-2.0.0-p195 a ruby-2.0.0-p353). Successivamente, stavo ricevendo un errore di segmentazione quando ho provato ad aggiornare le gemme. Ciò accade perché le gemme sono state installate per ruby-2.0.0-p195 e alcune di esse sono incompatibili con p353.

Ora puoi andare e provare a trovare le gemme incompatibili, ma la soluzione più semplice era rimuovere tutte le gemme installate e installarle di nuovo. Ho semplicemente rimosso la gems/ruby-2.0.0-p353directory che si trovava in /usr/local/rvm. Potrebbe essere da qualche altra parte per te.

Poi ho corso gem install bundlere per ciascuna delle mie app rails ho fatto bundle install.


16

come questo:

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

3
Mi piace questa risposta. Credo che l'aggiornamento della versione di ruby ​​vanifichi lo scopo dell'uso di rvm. Installare una versione separata accanto a p0 e quindi dichiarare la versione più recente (o qualsiasi altra) come predefinita sembra elegante.
Tass

2
L'aggiornamento alla patch più recente è talvolta necessario per motivi di sicurezza, ad esempio quando vengono scoperte vulnerabilità in una particolare versione di Ruby.
Asad R.

2

Puoi installare qualsiasi livello di patch seguendo la pagina nel loro wiki .

Inoltre, ogni rubino è indipendente, quindi non stai realmente "aggiornando e mantenendo le gemme" ma installando una nuova versione di patch e quindi installando le gemme in quel nuovo ambiente rubino.

Questo potrebbe essere il momento in cui le gemme entrano in gioco, ma non le uso.

Non dimenticare di aggiornare anche il tuo rvm, nel caso sia passato un po 'di tempo.


2

La risposta di npad delinea sicuramente le basi, quindi non ripeterò questi passaggi, ma ci sono diverse risposte qui che suggeriscono l'utilizzo rvm upgrade. So che rvm ti dà l'opzione, ma è un po 'pericolosa.

IMO, il modo più sicuro e più "rvm" è prima rvm installla nuova versione di ruby, quindi utilizzare il rvm gemset copycomando per copiare i tuoi gemset nella nuova versione di ruby, ad es rvm gemset copy 1.9.2-p0@some-gemset 1.9.2-p290@some-gemset. Quindi puoi facilmente cambiare il tuo progetto usando il gemset appena copiato (ti consiglio di usare un .rvmrcfile nella directory del tuo progetto) e vedere se il tuo codice fallisce. In tal caso, tornare alla vecchia versione di ruby ​​è solo questione di cambiare gemset.

Ma anche se non usi i set di gemme (anche se presumo che tu lo faccia poiché hai taggato i binari su questa domanda), l'uso di rvm upgradepuò portare a fallimenti imprevisti. E se il tuo codice si rompe, ora devi reinstallare di nuovo la vecchia versione. Prenditi un po 'più di tempo e fallo in modo pulito.


1

Immagino sia rvm install 1.9.2-head

Puoi vedere i rubini disponibili con rvm list known


sarà headottenere il livello di patch più recente? Ho pensato che fosse per l'ultima versione, il che significa che potrebbe essere qualcosa di instabile e sperimentale.
Lan

Ahaa, vero. Ho mescolato l'ultimo e il livello di patch.
Heikki

1

Questo post del blog dovrebbe essere utile: http://pogodan.com/blog/2011/09/06/ruby-1-9-3-for-development

elementi essenziali:

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

Sebbene questo possa teoricamente rispondere alla domanda, sarebbe preferibile includere qui le parti essenziali della risposta e fornire il collegamento per riferimento.
Bill the Lizard
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.