ฉันจะอัพเกรด 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 to list rvm list knownรุ่นทับทิมที่มีการติดตั้งโดยการทำงาน

ในผลลัพธ์คุณควรเห็น:

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

วงเล็บเหลี่ยมรอบ ๆ ระดับแพตช์ระบุว่านี่คือระดับแพตช์เริ่มต้นของ RVM สำหรับ Ruby 1.9.2

ในที่สุดเพื่อติดตั้ง Ruby เวอร์ชันใหม่เพียงแค่เรียกใช้rvm install 1.9.2- และรอให้รวบรวม!


29
สำหรับผู้ที่ได้รับERROR: rvm update ถูกลบออก - rvm get latest/ rvm get headเป็นวิธีที่ถูกต้องในการอัพเกรด rvm ตอนนี้
jibiel

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ดูเวอร์ชันทับทิมที่มีให้ซึ่งคุณสามารถอัปเกรดได้
James Chevalier

แก้ไขแนะนำโดย @Mauro Nidola "$ rvm upgrade 1.9.2 1.9.2-p0 ควรเปลี่ยนเป็น $ rvm upgrade 1.9.2-p0 1.9.2"
iDev

ฉันไม่เห็นความคิดเห็นของเขา @ACB ฉันจะเปลี่ยนตัวแทนของคุณบอกฉันว่าฉันไม่ต้องตรวจสอบอีกครั้ง ฉันกำลังอัปเดตความคิดเห็นของ James ด้วย
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 bundlerbundle install


16

แบบนี้:

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

3
ฉันชอบคำตอบนี้ ฉันรู้สึกว่าการอัปเกรดเวอร์ชันของ Ruby เป็นการเอาชนะจุดประสงค์ของการใช้ rvm การติดตั้งเวอร์ชันแยกต่างหากควบคู่ไปกับ p0 จากนั้นประกาศเวอร์ชันที่ใหม่กว่า (หรือเวอร์ชันใดก็ตาม) เนื่องจากค่าเริ่มต้นดูเหมือนจะดูสง่างาม
Tass

2
การอัปเกรดเป็นแพตช์ล่าสุดบางครั้งจำเป็นด้วยเหตุผลด้านความปลอดภัยเช่นเมื่อพบช่องโหว่ใน Ruby เวอร์ชันใดเวอร์ชันหนึ่ง
Asad R

2

คุณสามารถติดตั้งแพทช์ระดับโดยทำตามหน้าในของพวกเขาวิกิพีเดีย

นอกจากนี้ทับทิมแต่ละเม็ดยังมีความเป็นอิสระดังนั้นคุณจึงไม่ได้ 'อัปเกรดและรักษาอัญมณี' แต่ติดตั้งแพทช์เวอร์ชันใหม่จากนั้นติดตั้งอัญมณีในสภาพแวดล้อมทับทิมใหม่นั้น

นี่อาจเป็นอัญมณีที่เข้ามามีบทบาท แต่ฉันไม่ได้ใช้มัน

อย่าลืมอัพเดท rvm ด้วยเผื่อว่ามันผ่านไปสักพัก


2

คำตอบ npad แน่นอนออกวางพื้นฐานดังนั้นฉันจะไม่ย้ำทำตามขั้นตอนเหล่านั้น rvm upgradeแต่มีหลายคำตอบที่นี่แนะนำการใช้ ฉันรู้ว่า rvm ให้ตัวเลือกแก่คุณ แต่มันค่อนข้างอันตราย

IMO, ปลอดภัยและอื่น ๆ "วิธี RVM" คือครั้งแรกrvm installรุ่นทับทิมใหม่แล้วใช้rvm gemset copyคำสั่งเพื่อคัดลอก gemset ของคุณ (s) rvm gemset copy 1.9.2-p0@some-gemset 1.9.2-p290@some-gemsetรุ่นทับทิมใหม่เช่น จากนั้นคุณสามารถเปลี่ยนโปรเจ็กต์ของคุณไปใช้ gemset ที่คัดลอกใหม่ได้อย่างง่ายดาย (ขอแนะนำให้ใช้.rvmrcไฟล์ในไดเร็กทอรีโปรเจ็กต์ของคุณ) และดูว่าโค้ดของคุณล้มเหลวหรือไม่ ถ้าเป็นเช่นนั้นการเปลี่ยนกลับไปใช้ทับทิมรุ่นเก่าก็เป็นเพียงแค่การเปลี่ยนอัญมณีเท่านั้น

แต่แม้ว่าคุณจะไม่ได้ใช้อัญมณี (แม้ว่าฉันจะถือว่าคุณทำตั้งแต่คุณติดแท็กรางในคำถามนี้) การใช้rvm upgradeอาจทำให้เกิดความล้มเหลวโดยไม่คาดคิด และหากโค้ดของคุณแตกตอนนี้คุณต้องติดตั้งเวอร์ชันเก่าอีกครั้ง เพียงแค่ใช้เวลาเพิ่มขึ้นเล็กน้อยและทำด้วยวิธีที่สะอาด


1

ฉันเดาว่ามัน rvm install 1.9.2-head

คุณสามารถดูทับทิมที่มีจำหน่ายด้วย rvm list known


จะheadได้รับระดับแพทช์ล่าสุด? ฉันคิดว่ามันเป็นเวอร์ชันล่าสุดซึ่งหมายความว่าอาจเป็นสิ่งที่ไม่เสถียรและเป็นการทดลอง
ลาน

อะฮ่าจริง ฉันผสมระดับล่าสุดและระดับแพทช์
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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.