Làm cách nào để cập nhật Ruby Version 2.0.0 lên phiên bản mới nhất trong Mac OSX Yosemite?


377

Tôi cần cập nhật phiên bản ruby ​​của mình từ 2.0.0 lên phiên bản mới nhất, tôi không thể sử dụng một số đá quý vì phiên bản của tôi không được cập nhật. Tôi đã sử dụng Homebrew để cài đặt Ruby một thời gian trước đây, Làm cách nào để cập nhật phiên bản Ruby của tôi?


Điều gì xảy ra khi bạn nhập which rvmhoặc which rbenvtrong dòng lệnh của bạn
MageeWorld

@ChuchaC Xin vui lòng, hãy xem ở đâyở đây
vhristoskov

1
hình như brew install rubylà đủ kiểm tra tại đây
Venugopal

Câu trả lời:


709

Mở thiết bị đầu cuối của bạn và chạy

curl -sSL https://raw.githubusercontent.com/rvm/rvm/master/binscripts/rvm-installer | bash -s stable

Khi hoàn thành, bạn cần khởi động lại thiết bị đầu cuối của mình để rvmlệnh hoạt động.

Bây giờ, chạy rvm list known

Điều này cho thấy danh sách các phiên bản của ruby.

Bây giờ, chạy rvm install ruby@latestđể có được phiên bản ruby ​​mới nhất.

Nếu bạn gõ ruby -vvào terminal, bạn sẽ thấy ruby X.X.X.

Nếu nó vẫn hiển thị cho bạn ruby 2.0., hãy chạy rvm use ruby-X.X.X --default.


3
2.2.0 không phải là phiên bản mới nhất của Ruby.
Jordan Chạy

1
@Jordan Bản xấu 2.3 của tôi là phiên bản ổn định
Abhinay Reddy Keesara

71
Điều này hoạt động trên Mac OS để cài đặt RVM:\curl -sSL https://get.rvm.io | bash -s stable --ruby
zed

7
2.4 là phiên bản ổn định mới nhất: rvm cài đặt ruby-2.4.0
xemARMS

7
đường ống đầu ra cong thẳng để thực hiện là một cơn ác mộng an ninh đang chờ xảy ra.
arp

214

Giải pháp chỉ pha

Cập nhật:

Từ các bình luận (kudos đến Maksim Luzik), tôi chưa thử nghiệm nhưng có vẻ như là một giải pháp thanh lịch hơn:

Sau khi cài đặt ruby ​​qua brew, hãy chạy lệnh sau để cập nhật các liên kết đến bản cài đặt ruby ​​mới nhất: brew link --overwrite ruby

Câu trả lời gốc:

Đi dự tiệc muộn, nhưng sử dụng bia là đủ. Không cần thiết phải cài đặt rvm và đối với tôi nó chỉ là những thứ phức tạp.

Bởi brew install rubybạn thực sự đang cài đặt bản mới nhất (hiện tại là v2.4.0). Tuy nhiên, đường dẫn của bạn tìm thấy 2.0.0 đầu tiên. Để tránh điều này chỉ cần thay đổi quyền ưu tiên ( nguồn ). Tôi đã làm điều này bằng cách thay đổi ~/.profilevà thiết lập:

export PATH=/usr/local/bin:$PATH

Sau này, tôi thấy rằng gem gemler vẫn đang sử dụng phiên bản 2.0.0, chỉ cần cài đặt lại: gem install bundler


2
Chính xác những gì tôi đang tìm kiếm, cảm ơn. Nếu tôi là một nhà phát triển ruby ​​thì rvm sẽ có ý nghĩa, nhưng tôi thì không, vì vậy điều này là hoàn hảo.
Tối đa

4
công việc này, cần thiết để thực hiện "nguồn ~ / .bash_profile" sau khi cài đặt
mjpablo23

9
hoặc sau khi cài đặt ruby ​​qua brew, hãy chạy lệnh sau để cập nhật các liên kết đến bản cài đặt ruby ​​mới nhất:brew link --overwrite ruby
Maksim Luzik

1
thay vì overwritephiên bản ruby, bạn chỉ có thể viếtbrew unlink ruby && brew link ruby
Hamsternik

7
Giải pháp của @MaksimLuzik không hiệu quả với tôi trong MacOS. brew link --overwrite rubydẫn đếnWarning: Refusing to link macOS-provided software: ruby
Rafael Beckel

97

Tôi khuyên bạn nên rbenv * https://github.com/rbenv/rbenv

* Nếu điều này đáp ứng tiêu chí của bạn: https://github.com/rbenv/rbenv/wiki/Why-rbenv? :

rbenv không

  • Cung cấp hỗ trợ để chỉ định các phiên bản Ruby dành riêng cho ứng dụng .
  • Để bạn thay đổi phiên bản Ruby toàn cầu trên cơ sở mỗi người dùng.
  • Cho phép bạn ghi đè phiên bản Ruby bằng biến môi trường.

Ngược lại với RVM, rbenv không đào

  • Cần phải được nạp vào vỏ của bạn.Thay vào đó, cách tiếp cận shim của rbenv hoạt động bằng cách thêm một thư mục vào $PATH.
  • Ghi đè các lệnh shell như cdhoặc yêu cầu hack nhanh chóng. Đó là nguy hiểm và dễ bị lỗi.
  • Có một tập tin cấu hình. Không có gì để cấu hình ngoại trừ phiên bản Ruby bạn muốn sử dụng.
  • Cài đặt Ruby. Bạn có thể tự xây dựng và cài đặt Ruby hoặc sử dụng ruby-build để tự động hóa quy trình.
  • Quản lý đá quý. Bundler là một cách tốt hơn để quản lý các phụ thuộc ứng dụng. Nếu bạn có các dự án chưa sử dụng Bundler, bạn có thể cài đặt plugin rbenv-Gemet .
  • Yêu cầu thay đổi thư viện Ruby để tương thích. Sự đơn giản của rbenv có nghĩa là miễn là nó thuộc về bạn $PATH, không có gì khác cần biết về nó.

CÀI ĐẶT

Cài đặt Homebrew http://brew.sh

Sau đó:

$ cập nhật bia
 $ brew cài đặt rbenv
$ brew cài đặt rbenv ruby-build

# Thêm rbenv vào bash để nó tải mỗi khi bạn mở terminal
echo 'nếu mà rbenv> / dev / null; sau đó đánh giá "$ (rbenv init -)"; fi '>> ~ / .bash_profile
nguồn ~ / .bash_profile

CẬP NHẬT
Có thêm một bước saubrew install rbenvChạyrbenv initvà thêm một dòng vào.bash_profiletrạng thái. Sau đó, mở lại cửa sổ thiết bị đầu cuối của bạn [Ngày] SGI ngày 30 tháng 9 lúc 12:01 - https://stackoverflow.com/users/119770

$ rbenv cài đặt - danh sách
Phiên bản có sẵn:
 1.8,5-p113
 1.8,5-p114
 [Càng]
 2.3.1
 2.4.0-dev
 jruby-1.5.6
 [Càng]
$ rbenv cài đặt 2.3.1
[Càng]

Đặt phiên bản toàn cầu:

$ rbenv toàn cầu 2.3.1
$ ruby ​​-v
ruby 2.3.1p112 (phiên bản 2016-04-26 54768) [x86_64-darwin15]

Đặt phiên bản cục bộ của repo của bạn bằng cách thêm .ruby-versionvào thư mục gốc của repo của bạn:

$ cd ~ / whatevs / dự án / new_Vpo
$ echo "2.3.1"> .ruby-phiên bản

Đối với MacOS, hãy truy cập liên kết này


3
@ChuchaC Không có thăm dò. Nhưng trước khi bạn làm điều này, đây là từ rbenv readme: "Ghi chú tương thích: rbenv không tương thích với RVM. Vui lòng đảm bảo gỡ cài đặt hoàn toàn RVM và xóa mọi tham chiếu đến nó khỏi các tệp khởi tạo shell của bạn trước khi cài đặt rbenv." - github.com/rbenv/rbenv#installation
SoAw đũaMan

17
đã không giúp đỡ. Vẫn nhận được phiên bản 2.0.0 tiêu chuẩn cho ruby -vsaurbenv global ...
tuxSlayer

8
Có thêm một bước sau brew install rbenvRun rbenv initvà thêm một dòng vào .bash_profile khi nó nêu. Sau đó mở lại cửa sổ thiết bị đầu cuối của bạn, làm rbenv install 2.3.1, rbenv global 2.3.1 và rbenv sẽ làm công việc của mình
SGI

6
Có lẽ muộn nhưng để tham khảo trong tương lai cho những người gặp phải vấn đề tương tự như @tuxSlayer, rbenv rehashsau khi rbenv globallàm việc cho tôi
Sean

2
Sau đó rbenv init, ruby -vxuất phiên bản chính xác 2.1.2, nhưng gói chạy gặp phải một số lỗi như thế này paperclip-5.0.0.beta1 requires ruby version >= 2.1.0, which is incompatible with the current version, ruby 2.0.0p648. Cuối cùng quản lý để làm cho nó hoạt động với một chạy rbenv rehash. Cảm ơn @Sean
James

51

Mở thiết bị đầu cuối:

sudo gem update --system 

Nó hoạt động!


3
Điều này thực sự có vẻ hiệu quả, và là một cách thẳng thắn hơn nhiều so với các câu trả lời khác. Nhưng khi cài đặt một số đá quý (ví dụ nghe) họ phàn nàn rằng phiên bản thấp hơn yêu cầu.
William Isted

8
Đây không phải là đá quý
William GP

Giải pháp chỉ dành cho bia tại đây
Sergio Basurco

2
Tôi đã bị đánh lừa bởi câu trả lời này quá. Nó "hoạt động" ở chỗ không có lỗi nào được tạo ra khi bạn chạy nó từ bàn điều khiển. Tuy nhiên, nó không cập nhật Ruby. Nó cập nhật Ruby Gems. Thực hiện theo một trong những câu trả lời khác để cập nhật Ruby (sử dụng OS X Sierra).
thông tin

41

Cách nhanh chóng để nâng cấp ruby ​​lên v2.4 +

brew upgrade ruby

hoặc là

sudo gem update --system 

4
Điều này dường như làm rất nhiều thứ, nhưng nâng cấp ruby ​​không phải là một trong số đó. Nó chấm dứt với: /usr/local/Homebrew/Library/Homebrew/brew.rb:12:in '<main>': Homebrew must be run under Ruby 2.3! You're running 2.0.0. (RuntimeError)
nkoren

1
Đây là cách chính xác và tốt nhất để nâng cấp phiên bản ruby ​​bằng cách sử dụng bia.
dùng1101733

Không làm việc cho tôi. ERROR: While executing gem ... (Errno::EPERM) Operation not permitted @ rb_sysopen - /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/bin/gem
Sébastien Loisel

@ SébastienLoisel bạn có thể vui lòng cung cấp một số chi tiết về hệ điều hành, lệnh của bạn, v.v.
fatihyildizhan

1
@fatihyildizhan dường như ruby ​​/ đá quý / vv đang ở trạng thái semibroken trên Mavericks. Tôi đã giải quyết vấn đề của mình bằng cách nâng cấp lên Catalina. Tôi không nhớ tất cả các lỗi tôi có, nhưng có vô số. Tôi không thể nhớ nếu tôi đang cố nâng cấp cocoapods hay đá quý hay gì, nhưng về cơ bản là vô vọng.
Sébastien Loisel

31

Bạn có thể chỉ định phiên bản mới nhất của ruby ​​bằng cách xem https://www.ruby-lang.org/en/doads/

  1. Lấy phiên bản mới nhất:

    curl -sSL https://get.rvm.io | bash -s stable --ruby

  2. Cài đặt nó:

    rvm install 2.2

  3. Sử dụng nó như mặc định:

    rvm use 2.2 --default

Hoặc chạy lệnh mới nhất từ ​​ruby:

rvm install ruby --latest
rvm use 2.2 --default

Cảm ơn, điều này đã làm việc cho tôi. Giải pháp rbenvkhông hiệu quả
tuxSlayer 15/03/2017

Điều này làm việc cho tôi quá !! Giải pháp với rbenvKHÔNG hoạt động
ruoho ruotsi


2

Trong trường hợp bất kỳ ai cũng gặp lỗi tương tự tôi đã làm: Cài đặt Yêu cầu không thành công với trạng thái: 1. Đây là những gì để làm:

Cài đặt Homebrew (vì một số lý do có thể không hoạt động tự động) với lệnh này:

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Sau đó tiến hành cài đặt lại rvm bằng

curl -sSL https://get.rvm.io | bash -s stable --ruby

Thoát và mở lại Terminal và sau đó:

rvm install 2.2
rvm use 2.2 --default

2

brew install rbenv ruby-build

Thêm rbenv vào bash để nó tải mỗi khi bạn mở terminal

echo 'if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi' >> ~/.bash_profile

source ~/.bash_profile

Cài đặt Ruby

rbenv install 2.6.5

rbenv global 2.6.5

ruby -v

Liên kết đến trang nguồn

0

Trong thiết bị đầu cuối: rvm gemset use global


5
Mặc dù đoạn mã này có thể là giải pháp, bao gồm một lời giải thích thực sự giúp cải thiện chất lượng bài đăng của bạn. Hãy nhớ rằng bạn đang trả lời câu hỏi cho độc giả trong tương lai và những người đó có thể không biết lý do cho đề xuất mã của bạn.
Adam

-2

Cách đơn giản nhất là nhập lệnh sau vào terminal:

sudo gem update --system

Bạn có thể thêm cờ --no-documentnếu bạn không muốn tải xuống tài liệu. Đây là đầu ra mẫu sau khi chạy lệnh:

sudo gem update --system
Password:
Updating rubygems-update
Fetching: rubygems-update-2.6.8.gem (100%)
Successfully installed rubygems-update-2.6.8
Parsing documentation for rubygems-update-2.6.8
Installing ri documentation for rubygems-update-2.6.8
Installing darkfish documentation for rubygems-update-2.6.8
Installing RubyGems 2.6.8
RubyGems 2.6.8 installed
Parsing documentation for rubygems-2.6.8
Installing ri documentation for rubygems-2.6.8

------------------------------------------------------------------------------

RubyGems installed the following executables:
    /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/gem

Ruby Interactive (ri) documentation was installed. ri is kind of like man 
pages for ruby libraries. You may access it like this:
  ri Classname
  ri Classname.class_method
  ri Classname#instance_method

1
Đây không giống như câu trả lời ở trên sao? Tôi tò mò tại sao số lượng downvote ở đây so với upvote ở đó? Có phải vì câu trả lời trùng lặp, hay là vì mọi người đã không nhận ra sớm, rằng giải pháp trước đó cũng chỉ dành cho rubygems chứ không phải Ruby?
thông tin
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.