在m1/m2芯片的mac上安装最新原生ruby的超简单方法(无需rvm)(代码片段)

大熊猫侯佩 大熊猫侯佩     2022-12-02     122

关键词:

概览

Mac OS 操作系统本身就内置了ruby 语言,不过有两个问题:

  1. 不是最新 ruby 版本
  2. 安装 gem 需要 root 权限(这点比较烦人)

比如,我的M2芯片 MacBook Air 的操作系统为 macOS 12.6(Monterey),默认内置的是2.6.8版本的 ruby :

hopy@Love2 ~ % /usr/bin/ruby -v
ruby 2.6.8p205 (2021-07-07 revision 67951) [universal.arm64e-darwin21]

在使用内置版本的 ruby 安装新 gem 包的时候,会要求管理员权限:

ERROR: While executing gem … (Gem::FilePermissionError)
You don’t have write permissions for the /Library/Ruby/Gems/2.6.8 directory.

这多少有点让人不爽!😦

本文将介绍如何在 macOS 中使用最新版本的 ruby,而且更赞的是:新ruby 在安装 gem 时不用再要求 root 权限了。

虽然用 rvm 管理不同版本的 ruby 很方便,但本文采用了一个更为简便的方法:直接用 brew 安装!

这种方法假定开发者只使用最新的 ruby,而不是随时会在不同版本的 ruby 中切换。如果大家需要时常在不同 ruby 中切换的话,还是推荐使用 rvm 安装和管理 ruby。

废话少叙,Let‘s do it!!!😉


下载安装最新 ruby

Mac 中需要安装 brew,不知 brew 为何物的(这有点不大可能,毕竟小伙伴码农们都不是吃素的)请自行谷哥度娘之。

首先,我们需要知道最新 ruby 的版本:

hopy@Love2 ~ % brew search ruby
==> Formulae
chruby                                   ruby-completion
chruby-fish                              ruby-install
cucumber-ruby                            ruby@2.4
imessage-ruby                            ruby@2.5
jruby                                    ruby@2.6
mruby                                    ruby@2.7
mruby-cli                                ruby@3.0
rbenv-bundler-ruby-version               rubyfmt
ruby                                     homebrew/portable-ruby/portable-ruby
ruby-build

==> Casks
rubymine                                 rubymotion

可以看到当前最新 ruby 的版本为3.0。

顺便说一句该版本的ruby(3.0)是ARM架构的原生实现,即原生支持M1/M2芯片:

接着,直接执行以下命令,brew 会下载并安装最新的 ruby:

brew install ruby@3.0

有时,由于网络的原因可能会提示下载失败,这时可以多试几次,brew是支持断点继续下载的。

设置 ruby 运行环境

在安装完毕后,为了使用最新下载的ruby,我们需要将其路径加入PATH:

echo 'export PATH="/opt/homebrew/opt/ruby@3.0/bin:$PATH"' >> ~/.zshrc

上面假设小伙伴们使用的 shell 类型是Zsh,如果你的编译器需要找到最新的ruby(比如你要编写ruby 的C扩展或相反),请再导入下面两个路径:

export LDFLAGS="-L/opt/homebrew/opt/ruby@3.0/lib"
export CPPFLAGS="-I/opt/homebrew/opt/ruby@3.0/include"

接着,执行如下命令以刷新当前 shell 环境:

source ~/.zshrc

如果以上步骤都没有问题,此时 ruby 命令应该链接到最新版本的可执行文件:

hopy@Love2 ~ % which ruby           
/opt/homebrew/opt/ruby@3.0/bin/ruby

Gem包安装的问题

现在,我们在安装新 gem 包的时候,不会再需要root权限。但还有一个问题:在 shell 中会找不到新安装的包。

比如:我们想用 pry 代替 irb 作为交互式 ruby 来使用,使用:

gem install pry

安装 pry 之后,在shell中输入 pry 会提示找不到该命令。

这是因为 pry 可执行文件没有加入系统的可执行路径中。

首先,我们需要找到Gem包安装的位置,执行如下命令:

gem environment

检查输出中 GEM PATHS 段落里的内容

- GEM PATHS:
     - /opt/homebrew/lib/ruby/gems/3.0.0
     - /Users/你的用户名/.local/share/gem/ruby/3.0.0
     - /opt/homebrew/Cellar/ruby@3.0/3.0.4/lib/ruby/gems/3.0.0

这时,第一个路径(/opt/homebrew/lib/ruby/gems/3.0.0)就是系统Gem包的根目录,可以看到 pry 就放在其中的 gems 目录中:

hopy@Love2 ~ % cd /opt/homebrew/lib/ruby/gems/3.0.0
hopy@Love2 3.0.0 % ls 
bin		cache		extensions	plugins
build_info	doc		gems		specifications
hopy@Love2 3.0.0 % cd gems 
hopy@Love2 gems % ls
coderay-1.1.3		method_source-1.0.0	pry-0.14.1

最后,将 pry 软链接至 ruby 的可执行目录中即可:

hopy@Love2 bin % cd /opt/homebrew/opt/ruby@3.0/bin/
hopy@Love2 bin % ln -s /opt/homebrew/lib/ruby/gems/3.0.0/gems/pry-0.14.1/bin/pry pry

现在,新安装的 gem 包可以在shell中直接运行了,棒棒哒💯🚀

总结

在本篇博文中,我们介绍了如何在M1/M2芯片的Mac上安装最新的ruby,并解决了新安装的gem包在shell中找不到,从而无法运行的问题。

感谢观赏,再会!😎

苹果m1/m2mac正式支持运行win11(代码片段)

...ndows上的日常任务。Parallels从ParallelsDesktop16.5版本开始在M1芯片上支持Windows,但最新版本让用户可以一键完成下载和安装Windows11。ParallelsDesktopforMac针对包括MacBookAir、MacBookPro、i 查看详情

RVM:在 Mac OSX El Capitan 上安装最新版本的 ruby​​ 失败

】RVM:在MacOSXElCapitan上安装最新版本的ruby​​失败【英文标题】:RVM:failureininstallinglatestversionofrubyonMacOSXElCapitan【发布时间】:2015-10-1200:32:52【问题描述】:我是Ruby新手,默认情况下我的Mac上安装了2.0.0版本的Ruby。我试图获取... 查看详情

jdk(windows/mac含m1/m2arm原生jdk)安装,附各个版本jdk下载链接(代码片段)

文章目录安装建议及注意事项1、JDK下载1.1官方下载1.2JDK国内镜像1.3AzulJDK(支持ARM原生:苹果M1、M2系列)2、Widows系统安装及配置2.1安装2.2配置环境变量2.2.1打开系统设置2.2.2打开环境变量设置项2.2.3配置环境变量参数... 查看详情

(Mac 终端)尝试使用 RVM 安装最新的 ruby​​ 时出现“系统”消息

】(Mac终端)尝试使用RVM安装最新的ruby​​时出现“系统”消息【英文标题】:(MacTerminal)"System"messagewhentryingtoinstalllatestrubywithRVM【发布时间】:2013-06-2419:19:57【问题描述】:在使用终端方面,我完全是新手,所以当我尝... 查看详情

m1芯片mac配置flutter开发环境(代码片段)

👇👇关注后回复 “进群” ,拉你进程序员交流群👇👇1.配置iOS开发环境(1)下载并安装Xcode直接在AppStore上搜索并下载最新版本的Xcode。(2)安装Cocoapods因为macm1笔记本都会自带可用的ruby版... 查看详情

在m1芯片上跑原生linux:编译速度比macos还快40%,真香警告

...tAI现在,M1Mac可以顺利运行原生Linux了。专为苹果自研芯片打造的AsahiLinux项目,Alpha版本已经释出。在Mac采用英特尔CPU的时期,用户已经摸索出通过硬盘分区或者使用Parallels等虚拟机在Mac上安装Linux的方法。但到了苹果... 查看详情

ruby nokogiri gem install mac osx high sierra

...018-04-0216:07:11【问题描述】:尝试在我的OSXHighSierra(全新安装)上使用新的ruby​​进行捆绑安装,但在这个nokogirigem上一直失败。这是错误日志:$sudogem安装nokogiri构建原生扩展。这可能需要一段时间...错误:安装nokogiri时出错:... 查看详情

在arm架构的mac上安装sqlserver(m1芯片orm2芯片)(代码片段)

在arm架构的mac上安装sqlserver由于Mac最新的芯片使用了arm架构的缘故Sqlserver和Mac的兼容相当差,以至于无法在Mac的docker上启动在m1芯片上很多方法试试还是可以的但是m2就几乎行不通了尝试了很多命令,无果,最终还是... 查看详情

使用新的 Ruby 版本在 Mac OSX 上安装 gem

】使用新的Ruby版本在MacOSX上安装gem【英文标题】:InstallingagemonMacOSXwithnewRubyVersion【发布时间】:2013-07-0116:41:40【问题描述】:我有安装了Ruby默认1.8.*的MacOSX。我想安装以下gem:https://github.com/jfahrenkrug/WWDC-Downloader在初始化尝试安... 查看详情

2016最新cocoapods安装与使用

2016最新CocoaPods安装与使用,问题解决1.mac系统已经默认安装好Ruby环境,如果你不确定自己系统中是否有Ruby的,可以在终端中输入命令行:ruby-v查看当前ruby版本 如果ruby版本较低,可以通过rvm对Ruby进行升级1)安装ram RVM:Ru... 查看详情

Ruby cairo gem 无法在 Mac OS X Yosemite 上安装

】Rubycairogem无法在MacOSXYosemite上安装【英文标题】:RubycairogemfailingtoinstallonMacOSXYosemite【发布时间】:2014-11-1019:49:16【问题描述】:我完全坚持这一点。在依赖于cairo的Rails应用程序上工作ruby​​。从MacOSXMavericks升级到Yosemite并进... 查看详情

在mac上快速安装rails

...://rubygems.org/gemsources-ahttps://ruby.taobao.org/3.使用geminstallrails安装rails。安装过程中可能报错提示需要更新什么命令行工具 查看详情

在mac上搭建ruby环境

一、安装系统需要的包安装Xcode开发工具,它将帮你安装好Unix环境需要的开发包打开AppStore,搜索Xcode,第一个就是,对了,有4个多G,网速如果不大好,就请先厕所哭会儿吧,慢慢等~ 二、安装RVMRVM是什么?不懂?没关系,... 查看详情

如何在windows的rails上安装ruby

】如何在windows的rails上安装ruby【英文标题】:Howtoinstallrubyonrailsinwindows【发布时间】:2018-08-0410:06:32【问题描述】:尝试安装RubyonRails时出现错误,如下所示Praveen@PraveenLaptopMINGW64~$geminstallrails--no-ri--no-rdoc错误:安装导轨时出错:... 查看详情

用于在 Mac 上全新安装的最新 XCode .dmg(设置)[关闭]

】用于在Mac上全新安装的最新XCode.dmg(设置)[关闭]【英文标题】:LatestXCode.dmg(setup)forfreshinstallonMac[closed]【发布时间】:2012-01-2312:15:44【问题描述】:我没有AppleID(已审核),因为我没有信用卡。所以,可以肯定的是,我不能... 查看详情

无法在 Mac 上使用 conda 安装最新的 nodejs

】无法在Mac上使用conda安装最新的nodejs【英文标题】:CannotinstalllatestnodejsusingcondaonMac【发布时间】:2020-06-1113:02:27【问题描述】:当我运行condasearch-cconda-forgenodejs时,我得到:#NameVersionBuildChannel...nodejs14.2.0h2c41780_1conda-forgenodejs14.... 查看详情

无法在 Mac 上安装 Ruby gem libxslt-ruby,因为它找不到 libxml2

】无法在Mac上安装Rubygemlibxslt-ruby,因为它找不到libxml2【英文标题】:CannotinstallRubygemlibxslt-rubyonMaccauseitdoesnotfindlibxml2【发布时间】:2014-05-1100:17:33【问题描述】:我已经通过Brew在我的Mac上安装了libxml2和libxslt,但是geminstalllibxslt... 查看详情

Ruby 未安装在 Rails 项目上

】Ruby未安装在Rails项目上【英文标题】:RubyNotInstalledonRailsProject【发布时间】:2021-11-1404:51:55【问题描述】:我最近从使用原生MacOS版本的Ruby切换到下载新版本的3.0.2,结果当我在旧项目上运行RailsS命令时,我收到以下消息:Plea... 查看详情