Bagaimana cara mengupgrade ruby ​​1.9.2-p0 saya ke level patch terbaru menggunakan rvm?


116

Versi ruby ​​saya saat ini adalah ruby 1.9.2p0 (2010-08-18 revision 29036) [x86_64-darwin10.5.0]tetapi saya ingin memperbaruinya ke level patch terbaru menggunakan rvm. Bagaimana saya bisa melakukan ini?

Jawaban:


163

Pertama-tama, perbarui instalasi RVM Anda dengan menjalankan rvm get stable.

Untuk memastikan Anda menjalankan versi RVM yang baru, Anda harus menjalankannya rvm reload(atau cukup buka terminal baru).

Setelah selesai, Anda dapat meminta RVM untuk membuat daftar versi ruby ​​yang tersedia untuk diinstal dengan menjalankan rvm list known.

Dalam output Anda sekarang harus melihat:

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

Tanda kurung siku di sekitar tingkat tambalan menunjukkan bahwa saat ini tingkat tambalan default RVM untuk ruby ​​1.9.2.

Terakhir, untuk menginstal versi ruby ​​baru, jalankan saja rvm install 1.9.2- dan tunggu hingga versi tersebut dikompilasi!


29
Bagi mereka yang mendapatkan ERROR: pembaruan rvm telah dihapus. - rvm get latest/ rvm get headadalah cara yang benar untuk meningkatkan rvm sekarang.
jibiel

98

Tingkatkan penerjemah ruby dan pertahankan gemet yang ada:

$ 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

Untuk mengganti dengan rilis stabil terbaru 1.9.2. Ini untuk menghindari kekacauan.

Beberapa tip bermanfaat tambahan, terima kasih untuk komentar (@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
Juga, Anda dapat rvm list knownuntuk melihat versi ruby ​​yang tersedia yang dapat Anda tingkatkan.
James Chevalier

Edit yang disarankan oleh @Mauro Nidola "$ rvm upgrade 1.9.2 1.9.2-p0 harus diubah menjadi $ rvm upgrade 1.9.2-p0 1.9.2"
iDev

Saya tidak bisa melihat komentarnya @ACB, saya akan berubah, perwakilan Anda memberi tahu saya bahwa saya tidak perlu memeriksa ulang. Saya juga memperbarui dengan komentar James
oma

@oma, saya dari teknologi yang berbeda. Jadi, Anda mungkin harus memeriksa ulang itu. Itu adalah suntingan yang disarankan oleh seseorang yang ditolak sebagai suntingan yang tidak valid. Periksa stackoverflow.com/review/suggested-edits/1365082 ini . Idealnya dia harus memposting sebagai komentar, alih-alih saya lakukan atas namanya.
iDev

34

Pembaruan pertama RVM:

rvm get stable

Kemudian perbarui versi Ruby Anda:

rvm upgrade 2.0.0

Pilih ya untuk semua pertanyaan:

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

Jika Anda ingin memperbarui permata Anda ke versi terbaru, Anda dapat melakukan:

rvm all do gem update

EDIT: Saya baru saja melakukan ini hari ini untuk versi terbaru ruby ​​2.0.0 (Saya memperbarui dari ruby-2.0.0-p195 ke ruby-2.0.0-p353). Setelah itu, saya mendapatkan kesalahan segmentasi ketika saya mencoba memperbarui permata. Ini terjadi karena permata dipasang untuk ruby-2.0.0-p195 dan beberapa di antaranya tidak kompatibel dengan p353.

Sekarang Anda dapat pergi dan mencoba menemukan permata yang tidak kompatibel, tetapi solusi termudah adalah menghapus semua permata yang terpasang dan menginstalnya lagi. Saya hanya menghapus gems/ruby-2.0.0-p353direktori yang terletak di /usr/local/rvm. Mungkin ada tempat lain untuk Anda.

Kemudian saya berlari gem install bundlerdan untuk setiap aplikasi rel saya, saya lakukan bundle install.


16

seperti ini:

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

3
Saya suka jawaban ini. Saya merasa bahwa mengupgrade versi ruby ​​seperti mengalahkan tujuan penggunaan rvm. Menginstal versi terpisah bersama p0 dan kemudian mendeklarasikan versi yang lebih baru (atau yang mana saja) sebagai default tampak elegan.
Tass

2
Mengupgrade ke tambalan terbaru terkadang diperlukan untuk alasan keamanan - seperti ketika kerentanan ditemukan di versi Ruby tertentu.
Asad R.

2

Anda dapat menginstal level patch apapun dengan mengikuti halaman di wiki mereka .

Selain itu, setiap ruby ​​bersifat independen, jadi Anda tidak benar-benar 'memutakhirkan dan menyimpan permata' tetapi memasang versi tambalan baru dan kemudian memasang permata di lingkungan ruby ​​baru itu.

Ini mungkin adalah gemsets ikut bermain, tetapi saya tidak menggunakannya.

Jangan lupa untuk mengupdate rvm Anda juga, untuk berjaga-jaga jika sudah lama.


2

Jawaban npad jelas menjabarkan dasar-dasarnya jadi saya tidak akan mengulangi langkah-langkah itu, tetapi ada beberapa jawaban di sini yang menyarankan penggunaan rvm upgrade. Saya tahu bahwa rvm memberi Anda pilihan, tapi ini agak berbahaya.

IMO, cara yang lebih aman dan lebih "rvm" adalah dengan rvm installversi ruby ​​baru terlebih dahulu , kemudian gunakan rvm gemset copyperintah untuk menyalin gemset Anda ke versi ruby ​​baru, misalnya rvm gemset copy 1.9.2-p0@some-gemset 1.9.2-p290@some-gemset. Kemudian Anda dapat dengan mudah mengalihkan proyek Anda ke menggunakan gemset yang baru disalin (saya sarankan menggunakan .rvmrcfile di direktori proyek Anda) dan melihat apakah kode Anda gagal. Jika ya, mengubah kembali ke versi ruby ​​lama hanya masalah mengganti gemet.

Tetapi bahkan jika Anda tidak menggunakan gemsets (meskipun saya berasumsi Anda melakukannya karena Anda menandai rel pada pertanyaan ini), penggunaan dari rvm upgradedapat menyebabkan kegagalan yang tidak terduga. Dan jika kode Anda rusak, sekarang Anda harus menginstal ulang versi lama lagi. Luangkan lebih banyak waktu dan lakukan dengan cara yang bersih.


1

Saya kira itu rvm install 1.9.2-head

Anda dapat melihat batu rubi yang tersedia dengan rvm list known


akan headmendapatkan level patch terbaru? saya pikir itu untuk versi terbaru, artinya itu bisa menjadi sesuatu yang tidak stabil dan eksperimental.
Lan

Ahaa, benar. Saya mencampur level terbaru dan patch.
Heikki

1

Entri blog ini akan membantu: http://pogodan.com/blog/2011/09/06/ruby-1-9-3-for-development

penting:

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

Meskipun ini secara teoritis dapat menjawab pertanyaan tersebut, akan lebih baik jika menyertakan bagian penting dari jawaban di sini, dan menyediakan tautan untuk referensi.
Bill the Lizard
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.