Làm cách nào để nâng cấp ruby ​​1.9.2-p0 của tôi lên cấp bản vá mới nhất bằng rvm?


116

Phiên bản ruby ​​hiện tại của tôi là ruby 1.9.2p0 (2010-08-18 revision 29036) [x86_64-darwin10.5.0]vậy nhưng tôi muốn cập nhật nó lên cấp bản vá mới nhất bằng rvm. Tôi có thể làm cái này như thế nào?

Câu trả lời:


163

Trước hết, hãy cập nhật cài đặt RVM của bạn bằng cách chạy rvm get stable.

Để đảm bảo rằng bạn đang chạy phiên bản RVM mới, sau đó bạn sẽ cần chạy rvm reload(hoặc chỉ cần mở một thiết bị đầu cuối mới).

Sau khi hoàn tất, bạn có thể yêu cầu RVM liệt kê các phiên bản ruby ​​có sẵn để cài đặt bằng cách chạy rvm list known.

Trong đầu ra bây giờ bạn sẽ thấy:

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

Các dấu ngoặc vuông xung quanh cấp bản vá cho biết rằng đây hiện là cấp bản vá mặc định của RVM cho ruby ​​1.9.2.

Cuối cùng, để cài đặt phiên bản ruby ​​mới, chỉ cần chạy rvm install 1.9.2- và đợi nó được biên dịch!


29
Đối với những người nhận được LỖI: bản cập nhật rvm đã bị xóa. - rvm get latest/ rvm get headlà những cách chính xác để nâng cấp rvm bây giờ.
jibiel

98

Nâng cấp trình thông dịch ruby giữ các bộ đá quý hiện có:

$ 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

Để thay thế bằng bản phát hành ổn định mới nhất 1.9.2. Điều này tránh sự lộn xộn.

Một số mẹo hữu ích bổ sung, nhờ nhận xét (@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
Bạn cũng có thể rvm list known xem các phiên bản ruby ​​có sẵn mà bạn có thể nâng cấp lên.
James Chevalier

Chỉnh sửa do @Mauro Nidola đề xuất "Bản nâng cấp $ rvm 1.9.2 1.9.2-p0 nên được thay đổi thành nâng cấp $ rvm 1.9.2-p0 1.9.2"
iDev

Tôi không thể nhìn thấy bình luận của anh ấy @ACB, tôi sẽ thay đổi, người đại diện của bạn nói với tôi rằng tôi không cần phải kiểm tra lại. Tôi cũng đang cập nhật nhận xét của James
oma

@oma, tôi đến từ một công nghệ khác. Vì vậy, bạn có thể phải kiểm tra lại điều đó. Đó là một bản chỉnh sửa do ai đó đề xuất đã bị từ chối vì một bản chỉnh sửa không hợp lệ. Kiểm tra stackoverflow.com/review/suggested-edits/1365082 này . Lý tưởng nhất là anh ấy nên đăng dưới dạng bình luận, thay vì tôi đã làm thay mặt anh ấy.
iDev

34

Bản cập nhật đầu tiên RVM:

rvm get stable

Sau đó cập nhật phiên bản Ruby của bạn:

rvm upgrade 2.0.0

Chọn có cho tất cả các câu hỏi:

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

Nếu bạn muốn cập nhật đá quý của mình lên phiên bản mới nhất, bạn có thể làm:

rvm all do gem update

CHỈNH SỬA: Tôi vừa thực hiện việc này hôm nay cho phiên bản mới nhất của ruby ​​2.0.0 (Tôi đã cập nhật từ ruby-2.0.0-p195 lên ruby-2.0.0-p353). Sau đó, tôi đã gặp lỗi phân đoạn khi cố gắng cập nhật đá quý. Điều này xảy ra do các viên đá quý đã được cài đặt cho ruby-2.0.0-p195 và một số trong số chúng không tương thích với p353.

Bây giờ bạn có thể đi và cố gắng tìm những viên ngọc không tương thích, nhưng giải pháp đơn giản nhất là xóa tất cả những viên đá quý đã cài đặt và cài đặt lại. Tôi chỉ đơn giản là loại bỏ gems/ruby-2.0.0-p353thư mục được đặt trong /usr/local/rvm. Nó có thể là một nơi khác cho bạn.

Sau đó tôi chạy gem install bundler và đối với mỗi ứng dụng rails của tôi, tôi đã làm bundle install.


16

như thế này:

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

3
Tôi thích câu trả lời này. Tôi cảm thấy rằng việc nâng cấp phiên bản của ruby ​​sẽ làm mất đi mục đích sử dụng rvm. Cài đặt một phiên bản riêng biệt cùng với p0 và sau đó khai báo phiên bản mới hơn (hoặc bất kỳ phiên bản nào) làm phiên bản mặc định có vẻ đẹp.
Tass

2
Nâng cấp lên bản vá mới nhất đôi khi cần thiết vì lý do bảo mật - chẳng hạn như khi các lỗ hổng được phát hiện trong một phiên bản Ruby cụ thể.
Asad R.

2

Bạn có thể cài đặt bất kỳ mức vá lỗi nào bằng cách theo dõi trang trong wiki của họ .

Ngoài ra, mỗi viên ruby ​​là độc lập, vì vậy bạn không thực sự 'nâng cấp và giữ các viên đá quý' mà là cài đặt phiên bản vá mới và sau đó cài đặt các viên đá quý trong môi trường ruby ​​mới đó.

Đây có thể là những bộ đá quý phát huy tác dụng, tuy nhiên tôi không sử dụng chúng.

Đừng quên cập nhật rvm của bạn, đề phòng nó đã lâu.


2

Câu trả lời của npad chắc chắn đưa ra những điều cơ bản nên tôi sẽ không nhắc lại các bước đó, nhưng có một số câu trả lời ở đây gợi ý sử dụng rvm upgrade. Tôi biết rằng rvm cung cấp cho bạn tùy chọn, nhưng nó hơi nguy hiểm.

IMO, an toàn hơn và nhiều hơn nữa "RVM cách" là lần đầu tiên rvm installphiên bản ruby mới, sau đó sử dụng rvm gemset copylệnh để sao chép gemset của bạn (s) lên phiên bản ruby mới, ví dụ như rvm gemset copy 1.9.2-p0@some-gemset 1.9.2-p290@some-gemset. Sau đó, bạn có thể dễ dàng chuyển dự án của mình sang sử dụng gemset mới được sao chép (tôi khuyên bạn nên sử dụng .rvmrctệp trong thư mục dự án của bạn) và xem mã của bạn có bị lỗi không. Nếu đúng như vậy, việc thay đổi trở lại phiên bản ruby ​​cũ chỉ là việc chuyển bộ đá quý.

Nhưng ngay cả khi bạn không sử dụng gemsets (mặc dù tôi cho rằng bạn làm như vậy vì bạn đã gắn thẻ đường ray cho câu hỏi này), việc sử dụng rvm upgradecó thể dẫn đến những lỗi không mong muốn. Và nếu mã của bạn bị hỏng, bây giờ bạn phải cài đặt lại phiên bản cũ một lần nữa. Chỉ cần mất thêm một chút thời gian và làm theo cách sạch sẽ.


1

Tôi đoán nó rvm install 1.9.2-head

Bạn có thể thấy những viên hồng ngọc có sẵn với rvm list known


sẽ headnhận được mức vá mới nhất? tôi nghĩ đó là phiên bản mới nhất, có nghĩa là nó có thể là một thứ gì đó không ổn định và đang thử nghiệm.
Lan

Ahaa, đúng. Tôi đã trộn lẫn mức độ mới nhất và bản vá.
Heikki

1

Bài đăng trên blog này sẽ hữu ích: http://pogodan.com/blog/2011/09/06/ruby-1-9-3-for-development

yếu tố cần thiết:

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

Mặc dù về mặt lý thuyết, điều này có thể trả lời câu hỏi, nhưng tốt hơn hết bạn nên đưa các phần thiết yếu của câu trả lời vào đây và cung cấp liên kết để tham khảo.
Bill the Lizard,
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.