Làm cách nào để chuyển sang ruby ​​1.9.3 được cài đặt bằng Homebrew?


82

Tôi đã cài đặt ruby ​​1.9.3 bằng hombrew

pha cài đặt ruby

Nhưng 1.8.7 mặc định vẫn được sử dụng. Làm cách nào để chuyển osx sang sử dụng 1.9.3 làm ruby ​​mặc định?

Câu trả lời:


90

Tôi đề nghị bạn hãy xem qua rvm . Sau đó, bạn có thể đặt nó làm mặc định vớirvm use 1.9.3 --default

Nhưng nếu bạn hài lòng với cài đặt homebrew của mình.

Sau đó, chỉ cần thay đổi mức độ ưu tiên của các thư mục trong PATH

Đây là / etc / path của tôi

# homebrews should always take precedence
/usr/local/bin

# the default stack
/usr/bin
/bin
/usr/sbin
/sbin

Điều này nói chung là quan trọng đối với homebrew, nếu không thì phiên bản hệ thống của git, ruby, pg_admin, ... sẽ được sử dụng thay vì phiên bản brew.

nếu bạn nói rằng which -a rubybạn sẽ thấy tất cả các viên hồng ngọc đã được cài đặt và mức độ ưu tiên trongPATH

ví dụ.

$ which -a ruby
/Users/matthew/.rvm/rubies/ruby-1.9.3-p0/bin/ruby
/Users/matthew/.rvm/bin/ruby
/usr/bin/ruby


CẬP NHẬT: Bây giờ tôi không nghĩ bạn nên thay đổi /etc/paths

Thay vào đó bạn cần phải kiểm tra đó của .profile, .bashrchoặc .bash_loginđang được nạp vào shell của bạn, và chỉ cần thêm /usr/local/binvào đường dẫn của bạn.

Đối với tôi, tôi chỉ có một .profile. Bạn có thể tạo tệp đó nếu không có tệp nào trong số đó đã tồn tại trong thư mục chính của bạn.

# homebrews should always take precedence
export PATH=/usr/local/bin:$PATH

1
Cuối cùng tôi chọn rbenv, rvm được sử dụng trước đây.
Alexey Zakharov

mát mẻ. Tuy nhiên, tôi khuyên bạn nên thực hiện các thay đổi đối với đường dẫn / etc / của mình. Tôi đã từng gặp lỗi lạ (ví dụ như tôi muốn. brew upgrade git, Nhưng phiên bản không thay đổi lần lượt ra tôi không bao giờ được sử dụng phiên bản brew.)
Matthew Rudy

29
Cảm ơn bạn đã cung cấp một câu trả lời thực tế hơn là chỉ nói "sử dụng rvm". Không phải ai cũng có thể sử dụng RVM và tôi ghét khi câu trả lời hàng đầu chỉ yêu cầu OP làm điều gì đó mà họ không hỏi cách làm.
bricker


Tôi đã gặp sự cố khi biên dịch ruby ​​bằng rvm vì vậy tôi đã kết thúc với rbenv để thay thế vì nó hoạt động mà không có vấn đề gì.
Pellet

73

CÂU TRẢ LỜI NGẮN:

sau khi cài đặt ruby ​​qua homebrew chỉ cần thực hiện điều này:

brew link --overwrite ruby

và khởi động lại hoặc mở lại Thiết bị đầu cuối của bạn  


CÂU TRẢ LỜI DÀI

Vì vậy, tôi đã thực hiện cài đặt bình thường của ruby ​​bằng homebrew

brew install ruby

cài đặt tốt NHƯNG nó vẫn đang sử dụng ruby ​​mặc định của hệ thống. mà tôi đã xác minh bằng cách thực hiện:

which ruby 
#/usr/bin/ruby

Vì vậy, theo gợi ý của Matthew Rudy, tôi đã kiểm tra thứ tự các đường dẫn / etc / của mình, và tất cả đều tốt.

Sau đó, tôi quyết định làm:

which -a ruby
#/usr/bin/ruby
#usr/local/bin/ruby

vì vậy không có gì bị hỏng như vậy. đã cố gắng cài đặt lại ruby ​​bằng phương pháp homebrew và sau đó tôi đã tìm thấy nó.

Homebrew đã đề cập:

Warning: ruby-2.3.1 already installed, it's just not linked

vì vậy phải làm:

brew link --overwrite ruby

13
Đừng quên khởi động lại ruby --versionphiên bản iTerm của bạn, nếu không sẽ hiển thị cho bạn một phiên bản lỗi thời.
dialex

1
Bạn có thực sự cần phải khởi động lại không? hay chỉ hash -r?
dwanderson

1
FYI, Homebrew bây giờ từ chối làm điều đó. Đối với tôi với cá, nó gợi ý: echo 'bộ -g fish_user_paths "/ usr / local / opt / ruby / bin" $ fish_user_paths' >> ~ / .config / cá / config.fish
Atem18

46

Nếu bạn muốn sử dụng homebrew để cài đặt 1.9.3, bạn có thể làm theo các bước sau:

$ brew update
$ brew install rbenv
$ brew install ruby-build

Khi bạn đã cài đặt rbenv và ruby-build, bạn có thể chạy lệnh sau để cài đặt Ruby 1.9.3.

$ rbenv install 1.9.3-p125

Bây giờ nếu bạn muốn sử dụng 1.9.3 theo mặc định, bạn có thể chạy lệnh sau:

$ rbenv global 1.9.3-p125

Liên kết nguồn hiện đã chết
Chris Brown

4
Không hoạt động trên OS X 10.11+. Hệ thống tiếp tục sử dụng phiên bản cũ, và không phải là người tôi đã cài đặt / setted như mặc định với rbenv cài đặt 1.9.3-p125 / rbenv toàn cầu 1.9.3-p125
Andrei Konstantinov

"rbenv global 1.9.3-p125" - dòng này đã cứu rỗi đêm của tôi. Cảm tạ!
Andrii Kovalchuk

Dường như không hiệu quả với tôi. Tôi phải đặt đường dẫn đến trình điều hành ruby ​​trong $ PATH của mình trước khi nó hoạt động.
mr-sk

6

Tôi đã có tình huống tương tự. Tôi đã cài đặt ruby ​​bằng Homebrew. which -a rubyđã cho tôi kết quả sau:

#usr/local/bin/ruby
#/usr/bin/ruby

Có nghĩa là phiên bản mới cài đặt lẽ ra đã được sử dụng, nhưng ruby --versionvẫn trả về phiên bản hệ thống cũ.

Tôi thoát khỏi thiết bị đầu cuối (Cmd + Q) và sau khi khởi động lại đã ruby --versiontrả về phiên bản chính xác. Vì vậy, hãy đảm bảo rằng bạn khởi động lại thiết bị đầu cuối sau khi cài đặt trước khi thử bất kỳ bản sửa lỗi nào khác (có thể không cần thiết).


4

RÚT GỌN: Hãy ghi lại những gì bạn muốn thay đổi nó.

Nếu bạn đang sử dụng OS X và cố gắng sử dụng Ruby cho một cái gì đó như Jekyll, thì đừng sử dụng homebrew vì đó là những gì Apple đang sử dụng cho Ruby và có thể không tốt khi sử dụng nếu bạn không chắc mình đang làm. Thay vào đó, hãy sử dụng rbenv hoặc RVM.

ÍT RÚT GỌN: Tôi đã cố gắng chuyển từ phiên bản mặc định sang phiên bản cập nhật (từ 2.0) để sử dụng Jekyll vì nó yêu cầu phiên bản Ruby 2.2.5 trở lên. Tôi đã cập nhật nó và phiên bản 2.5 đã được cài đặt, nhưng khi tôi kiểm tra "ruby -v", nó vẫn là 2.0. Cuối cùng khi tôi đã thay đổi được phiên bản mặc định, tôi không thể cài đặt gói mà tôi cần vì tôi không có quyền ghi. Ví dụ: nếu bạn gặp một cái gì đó như thế này, thì có thể bạn đang gặp phải vấn đề tương tự

$ gem install jekyll bundler
ERROR:  While executing gem ... (Gem::FilePermissionError)    
    You don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory.

0

Trong OSX, bạn có thể thay đổi đường dẫn bằng cách sử dụng:

sudo nano / etc / path

Và sau đó thêm một đường dẫn hoặc thay đổi thứ tự.


-2

Chỉ là một cách tiếp cận thay thế cho bất kỳ ai khác đang tìm kiếm câu trả lời cho điều này - bạn có thể đặt bí danh trong .bash_profile của mình, ví dụ:

ruby="/usr/local/bin/ruby"

đây là cách tôi giải quyết vấn đề


vâng vấn đề với điều đó (và nhiều khả năng nguyên nhân của downvotes) là điều này chỉ hoạt động nếu bạn muốn tự invoke ruby và không có việc sử dụng hệ thống một phiên bản cụ
David Seek
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.