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
添加了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 依旧是旧版本:
原因是。。。当我们进入/usr/local/opt brew 的软件装路经下会发现。。。 没有ruby这个文件夹, 只有ruby@2, ruby@3.3
最后就是把上面要执行的内容 路经改成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