mac 系统更新ruby

mac 系统更新ruby

mac 系统更新遇到的机器坑爹的情况:

无法更新ruby 的情况,就是更新的时候提示版本过低无法更新

前提知晓:

Homebrew

Homebrew 是 macOS 和 Linux 系统上的一个流行的包管理器,用于简化软件的安装、管理和配置。它允许用户通过简单的命令行界面来安装、更新和卸载各种软件包(包括命令行工具、库和应用程序)。以下是关于 Homebrew 的一些重要信息:

gem

是 Ruby 编程语言的一个软件包管理系统,用于分发和管理 Ruby 库和应用程序的组件。以下是对 gem 的一些重要说明:

更新的几个方式:

gem update --system​ 行直接更新

Updating rubygems-update
ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions for the /Library/Ruby/Gems/2.6.0 directory.

alerson@192 opt % sudo  gem update --system
Password:
Updating rubygems-update
ERROR:  Error installing rubygems-update:
	There are no versions of rubygems-update (= 3.5.22) compatible with your Ruby & RubyGems
	rubygems-update requires Ruby version >= 3.0.0. The current ruby version is 2.6.10.210.
ERROR:  While executing gem ... (NoMethodError)
    undefined method `version' for nil:NilClass

坑爹, 要更新直接报错 版本不支持

直接安装插件 gem install rubygems-update​ 也是一样版本过低

RVM(Ruby Version Manager)来管理和指定不同的 Ruby 版本以及与之关联的 gem 版本。以下是如何指定 gem 使用特定 Ruby 版本的方法:

安装依赖项

在安装 RVM 之前,您可能需要安装一些依赖项,尤其是一些用于构建 Ruby 的工具。运行以下命令:

brew install gpg
brew install curl

接下来,您可以通过以下命令安装 RVM:

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

上面⬆️ : 直接报错:

curl: (7) Failed to connect to raw.githubusercontent.com port 443 after 8 ms: Couldn't connect to server

官网:https://rvm.io/

image

添加了GPG key :

gpg2 --keyserver keyserver.ubuntu.com --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB

报错没发现gpg2,改成gpg

gpg --keyserver keyserver.ubuntu.com --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB

成功后():

alerson@192 opt % gpg --keyserver keyserver.ubuntu.com --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
gpg: 密钥 105BD0E739499BDB: 1 个重复签名被移除
gpg: 密钥 105BD0E739499BDB:“Piotr Kuczynski <piotr.kuczynski@gmail.com>” 未改变
gpg: 密钥 3804BB82D39DC0E3:“Michal Papis (RVM signing) <mpapis@gmail.com>” 未改变
gpg: 处理的总数:2
gpg:              未改变:2d方式

在次运行:\curl -sSL https://get.rvm.io | bash -s stable 依旧报错 :

alerson@192 opt % \curl -sSL https://get.rvm.io | bash -s stable
curl: (7) Failed to connect to raw.githubusercontent.com port 443 after 1 ms: Couldn't connect to server

没救了--0-

使用homebrew 安装 ruby

安装成功了

brew upgrade ruby 
==> Downloading https://mirrors.aliyun.com/homebrew/homebrew-bottles/api/formula.jws.json
##O=-#     #                                                                                                                                                                                
==> Downloading https://mirrors.aliyun.com/homebrew/homebrew-bottles/api/cask.jws.json

Warning: ruby 3.3.5 already installed

-- 欣喜若狂;

但是ruby -v 还是版本2

 ruby -v
ruby 2.6.10p210 (2022-04-12 revision 67958) [universal.x86_64-darwin23]

额 好难也

系统的ruby 和homebrew 安装的ruby 各管各的。。。。

接下来的思路就是: 把homebrew 安装的ruby识别到:

brew link ruby ​ 连接brew 的 ruby

alerson@192 opt % brew link ruby                                                                                                             
Warning: Refusing to link macOS provided/shadowed software: ruby
If you need to have ruby first in your PATH, run:
  echo 'export PATH="/usr/local/opt/ruby/bin:$PATH"' >> ~/.zshrc

For compilers to find ruby you may need to set:
  export LDFLAGS="-L/usr/local/opt/ruby/lib"
  export CPPFLAGS="-I/usr/local/opt/ruby/include"

是不是 一下子豁然开朗 直接运行上面着三个命令就可以了, 但是实际还是有坑:

执行了:

echo 'export PATH="/usr/local/opt/ruby/bin:$PATH"' >> ~/.zshrc

export LDFLAGS="-L/usr/local/opt/ruby/lib"

export CPPFLAGS="-I/usr/local/opt/ruby/include"

之后在此ruby -v 依旧是旧版本:

image

原因是。。。当我们进入/usr/local/opt brew 的软件装路经下会发现。。。 没有ruby这个文件夹, 只有ruby@2, ruby@3.3

image

最后就是把上面要执行的内容 路经改成ruby@3.3

echo 'export PATH="/usr/local/opt/ruby@3.3/bin:$PATH"' >> ~/.zshrc

export LDFLAGS="-L/usr/local/opt/ruby@3.3/lib"

export CPPFLAGS="-I/usr/local/opt/ruby@3.3/include"

最后 在运行 :source ~/.zshrc​ 用来生效配置

source ~/.zshrc   # 如果你是使用 zsh
# 或者
source ~/.bash_profile  # 如果你是使用 bash

如果是用bash:

编辑 ~/.bash_profile​ 或 ~/.bashrc​ 文件 进行配置

总结

用homebrew 安装新版本ruby 后续配置链接

安装:

brew upgrade ruby 

链接:

brew link ruby 

根据提示查看路经(brew link ruby 的时候会提示,需要查看对应路经 修改ruby的文件夹)

echo 'export PATH="/usr/local/opt/ruby@3.3/bin:$PATH"' >> ~/.zshrc

export LDFLAGS="-L/usr/local/opt/ruby@3.3/lib"

export CPPFLAGS="-I/usr/local/opt/ruby@3.3/include"

最后生效配置:

source ~/.zshrc   # 如果你是使用 zsh
# 或者
source ~/.bash_profile  # 如果你是使用 bash
posted @ 2024-10-20 17:04  Alerson  阅读(18)  评论(0编辑  收藏  举报