如何在Mac OS X v10.10(Yosemite)中将Ruby版本从2.0.0更新到最新版本?

499

我需要将我的Ruby版本从2.0.0更新到最新版本。由于我的版本没有更新,我无法使用一些gem。 我以前使用Homebrew安装了Ruby。我该如何更新我的Ruby版本?


当您在命令行中键入 which rvmwhich rbenv 时会发生什么? - MageeWorld
@ChuchaC 请点击这里这里查看。 - vhristoskov
4
看起来 brew install ruby 就足够了。在这里检查 - Venugopal
16个回答

914
打开你的终端并运行
curl -sSL https://raw.githubusercontent.com/rvm/rvm/master/binscripts/rvm-installer | bash -s stable

要使rvm命令生效,您需要运行以下命令:
source ~/.rvm/scripts/rvm

现在,在终端中运行rvm list known

这将显示Ruby解释器的版本列表。

现在,运行rvm install ruby@latest以获取最新的Ruby版本。

如果您在终端中键入ruby -v,您应该会看到ruby X.X.X

如果仍然显示ruby 2.0.,请运行rvm use ruby-X.X.X --default

Windows 10的先决条件:

  • C编译器。您可以使用http://www.mingw.org/
  • make命令必须可用,否则会报错“bash: make: command not found”。您可以通过运行mingw-get install msys-make进行安装。
  • 将"C:\MinGW\msys\1.0\bin"和"C:\MinGW\bin"添加到您的路径环境变量中

3
2.2.0 不是 Ruby 的最新版本。 - Jordan Running
90
在Mac OS上安装RVM,可以使用以下命令:\curl -sSL https://get.rvm.io | bash -s stable --ruby - zed
8
2.4是最新的稳定版本:rvm install ruby-2.4.0。 - seeARMS
1
如果您在安装要求时遇到状态1的失败,请运行以下代码,然后执行上述步骤,它就可以正常工作了:ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"。 - coolcool1994
11
将curl的输出直接传递到执行命令中是一个潜在的安全噩梦,等待着发生。 - arp
显示剩余20条评论

288

只使用Homebrew的解决方案

更好的解决方案

根据评论(感谢Maksim Luzik),我还没有测试过,但似乎是一个更优雅的解决方案:

在通过brew安装Ruby之后,运行以下命令来更新到最新的Ruby安装版本:brew link --overwrite ruby

一个解决方案

只使用brew就足够了。不需要安装rvm,对我来说只会让事情变得复杂。

通过brew install ruby实际上是安装了最新版本(目前是v2.4.0)。然而,你的路径首先找到的是2.0.0版本。为了避免这个问题,只需改变优先级(source)。我通过更改~/.profile并设置如下来实现:

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

之后,我发现bundler gem仍在使用2.0.0版本。只需再次安装它:gem install bundler


8
非常感谢,这正是我在寻找的。如果我是一名Ruby开发者,那么使用rvm就有意义了,但实际上我不是,所以这很完美。 - Max
4
安装完成后,需要执行“source ~/.bash_profile”命令。这样就可以正常使用了。 - mjpablo23
12
如果通过brew安装了Ruby,请运行以下命令以更新链接到最新的Ruby安装版本:brew link --overwrite ruby - Maksim Luzik
14
@MaksimLuzik的解决方案在我的MacOS系统上无法使用。执行brew link --overwrite ruby命令会出现警告:“Warning: Refusing to link macOS-provided software: ruby”。 - Rafael Beckel
2
如果你的Mac无法链接Ruby,请尝试使用brew link --overwrite ruby --force命令。这对我很有效。 - Prasannjeet Singh
显示剩余6条评论

124
我推荐使用rbenv* https://github.com/rbenv/rbenv
* 如果符合你的要求:https://github.com/rbenv/rbenv/wiki/Why-rbenv?
rbenv做的事情: - 提供支持指定特定应用程序的Ruby版本。 - 允许您在每个用户的基础上更改全局Ruby版本。 - 允许您使用环境变量覆盖Ruby版本。
与RVM相比,rbenv不做的事情: - 不需要加载到您的shell中。相反,rbenv的shim方法通过将一个目录添加到您的$PATH中来工作。 - 不会覆盖shell命令,如cd或需要提示的hack。这是危险和容易出错的。 - 没有配置文件。除了要使用哪个版本的Ruby之外,没有其他需要配置的内容。 - 不会安装Ruby。您可以自己构建和安装Ruby,或者使用ruby-build来自动化该过程。 - 不会管理gemsets。Bundler是管理应用程序依赖关系的更好方法。如果您有尚未使用Bundler的项目,可以安装rbenv-gemset插件。 - 不需要更改Ruby库以实现兼容性。rbenv的简单性意味着只要它在您的$PATH中,其他什么都不需要知道。

安装

安装 Homebrew http://brew.sh

然后:

brew update
brew install rbenv ruby-build

# Add rbenv to Bash so that it loads every time you open a terminal
echo 'if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi' >> ~/.bash_profile
source ~/.bash_profile

rbenv install --list

输出:

Available versions:
 1.8.5-p113
 1.8.5-p114
 […]
 2.3.1
 2.4.0-dev
 jruby-1.5.6
 […]

而且:

rbenv install 2.3.1

设置全局版本:
rbenv global 2.3.1
ruby -v

输出:

ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-darwin15]

如果您没有显示更新的版本,那么
rbenv rehash

将本地版本库设置为添加 .ruby-version 到您的版本库根目录中:
cd ~/whatevs/projects/new_repo
echo "2.3.1" > .ruby-version

对于OS X,请访问此链接

3
@ChuchaC,没问题。但在此之前,我需要向您说明一下 rbenv 自述文件中的内容:“兼容性提示:rbenv 与 RVM 不兼容。在安装 rbenv 之前,请务必完全卸载 RVM,并从 shell 初始化文件中删除对其的任何引用。” — https://github.com/rbenv/rbenv#installation_ - SoAwesomeMan
21
在执行了rbenv global ...命令后,仍然得到标准的2.0.0版本,没有得到帮助。 - tuxSlayer
11
brew install rbenv 后还需要进行一步操作,运行 rbenv init 并像指示的那样在 .bash_profile 中添加一行。之后重新打开终端窗口,执行 rbenv install 2.3.1rbenv global 2.3.1,然后 rbenv 就会开始工作。 - SGI
8
或许有些晚了,但对于像@tuxSlayer遇到相同问题的人们以后的参考,我想说的是,在执行了rbenv global命令之后执行rbenv rehash命令可以解决此问题。 - Sean
2
在执行了 rbenv init 后,ruby -v 输出了正确的版本 2.1.2,但是运行 bundle 时遇到了一些错误,例如 paperclip-5.0.0.beta1 requires ruby version >= 2.1.0, which is incompatible with the current version, ruby 2.0.0p648。最终通过运行 rbenv rehash 成功解决了问题。感谢 @Sean。 - James
显示剩余3条评论

74

打开终端:

sudo gem update --system 

它有效!


4
确实看起来这样做是可行的,并且比其他答案简单得多,但是当安装一些 gem(例如 listen)时,它们会抱怨版本低于所需版本。 - William Isted
13
这是宝石而不是红宝石。 - William GP
在这里只有一种解决方案 here:使用Brew。 - Sergio Basurco
6
我也被这个答案误导了。从控制台运行它时不会生成任何错误,因此它“有效”。但它并没有更新Ruby,而是更新了Ruby Gems。请按照其他答案之一更新Ruby(在OS X Sierra上)。 - informaton
尝试过了,但是我得到了以下错误: rubygems-update 需要 Ruby 版本 >= 2.3.0。 ERROR: While executing gem ... (NoMethodError) undefined method `version' for nil:NilClass - ciurlaro

64
一个快速升级 Ruby 到 v2.4+ 的方法
brew upgrade ruby

或者

sudo gem update --system

8
看起来它可以做很多事情,但升级Ruby不在其中之一。它以以下信息终止:/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
这是使用brew升级ruby版本的正确和最佳方法。 - user1101733
3
对我不起作用。 错误:执行gem时...(Errno :: EPERM) 操作不允许@ rb_sysopen- /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/bin/gem - Sébastien Loisel
1
@SébastienLoisel,您能否详细介绍一下您的操作系统、命令等? - fatihyildizhan
1
@fatihyildizhan 显然,Mavericks 上的 Ruby/Gems 等处于半破损状态。我通过升级到 Catalina 解决了我的问题。我不记得我遇到了所有的错误,但是有很多。我记不清我是在尝试升级 CocoaPods 还是 Gems,但基本上是没有希望的。 - Sébastien Loisel
1
Mavericks = Mac OS X v10.9 (2013). Catalina = macOS v10.15 (2019). Mac OS X v10.10 (the one in the question) is from 2014. (It may not be relevant, but Catalina introduced Z Shell as the default shell (instead of Bash)).Mavericks = Mac OS X v10.9 (2013)。Catalina = macOS v10.15 (2019)。问题中的Mac OS X v10.10是于2014年发布的。(这可能与问题无关,但Catalina将Z Shell作为默认shell(而不是Bash)引入)。 - undefined

48
你可以通过查看下载Ruby来指定最新版本的Ruby。
  1. Fetch the latest version:

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

    rvm install 2.2
    
  3. Use it as default:

    rvm use 2.2 --default
    

或者从Ruby运行最新的命令:

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

谢谢,这对我有用。使用 rbenv 的解决方案没有起作用。 - tuxSlayer
这对我也起作用了!使用rbenv的解决方案没有起作用。 - ruoho ruotsi
在 Mac 上,我必须执行 source ~/.bash_profile 才能使用 rvm - Sahith Vibudhi

11

使用:

brew install rbenv ruby-build

rbenv添加到Bash中,以便每次打开终端时都加载它:

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

source ~/.bash_profile

安装Ruby

rbenv install 2.6.5

rbenv global 2.6.5

ruby -v

链接到源页面


这个"rbenv"可能是指SoAwesomeMan的回答 - Peter Mortensen

6

✅ 2023年工作方法:

使用Homebrew进行升级:

brew upgrade ruby
echo 'export PATH="/opt/homebrew/opt/ruby/bin:$PATH"' >> ~/.zshrc
brew link --overwrite ruby

然后重新启动终端(确保终止所有实例,退出并重新打开)。
然后ruby -v检查是否链接正确。

推荐的后续操作:

虽然不是必需的,但在升级 Ruby 后,您可以运行以下命令来更新 gem 文件:

gem update --system 3.4.2

⚠️ 当您升级了Ruby安装时,上述版本可能会发生更改。请在安装Ruby后使用正确的版本。

1
这假设了zshell,虽然是新款Mac上的默认shell,但许多人仍然使用bash。 - undefined

3

如果出现错误“安装要求失败,状态为1。”,以下是需要执行的步骤:

使用以下命令安装Homebrew(由于某些原因,它可能无法自动工作):

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

然后,使用以下方法重新安装rvm:
curl -sSL https://get.rvm.io | bash -s stable --ruby

退出,重新打开终端,然后执行以下操作:

rvm install 2.2
rvm use 2.2 --default

1

1
那篇 Medium 文章(不出所料,可悲的是)被抄袭自 Jeffrey Morgan 的 2015 年文章 "How to Install Ruby on macOS with RVM"(文章中提到的 Ruby 2.2.0 发布于 2014 年 12 月 25 日,而版本 2.3.0 则恰好在一年后发布)。例如,确切的短语 *"Mac OS X doesn’t ship with gpg so before installing the public key, you’ll need to install gpg. I installed gpg with Homebrew"*。 - Peter Mortensen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接