在Mac上升级默认Ruby安装

jhiyze9q  于 5个月前  发布在  Ruby
关注(0)|答案(2)|浏览(64)

我在这里看到的大多数例子都是针对rvm或brew的。看起来Ruby是预先安装的(不确定哪个包管理器负责)。换句话说,它不是由brew或rvm安装的。

Location: /usr/bin/ruby
OS Version: 13.4
Current Ruby version: 2.6.3
Need: 2.7.0

字符串
有办法升级这个默认版本吗?我担心通过其他方式安装ruby会产生冲突。

ibps3vxo

ibps3vxo1#

  • tl;dr summary *:不要使用系统Ruby。永远不要。

你问的是如何覆盖系统Ruby安装的一部分。Do not do that。系统Ruby安装由Apple提供,供 * 系统本身使用 * 和“遗留软件”。It is not to be used by the user
请参阅Apple的官方声明,作为macOS Catalina 发行说明的一部分:
macOS中包含Python、Ruby和Perl等脚本语言运行时,以实现与旧版软件的兼容性。默认情况下,未来版本的macOS将不包含脚本语言运行时,并且可能需要您安装其他软件包。如果您的软件依赖于脚本语言,建议您在应用中捆绑运行时。
更糟糕的是,RubyGem可以在安装过程中运行任意代码。如果您使用sudo安装RubyGem,您必须这样做才能覆盖系统Ruby,you allow that Gem to run arbitrary code on your computer with full administrative privileges
那么,什么是正确的做法?
正确的做法是将您自己的Ruby安装到您可以访问的目录中,并使用该安装而不是系统安装。
有很多不同的方法可以做到这一点。我个人使用Homebrew作为包管理器。但我不直接使用ruby formula,而是使用rbenv formula安装rbenv来管理我的Ruby安装,使用ruby-install formula安装ruby-install来安装Ruby实现。
然后,我可以使用rbenv install安装特定Ruby实现的特定版本,rbenv global设置我想要默认使用的版本,gem install为这个特定版本安装RubyGems。
但是,这只是一种方法。你可以使用Homebrew,MacPortsFink安装Ruby。你可以自己编译Ruby。你可以使用ruby-install或ruby-build。你可以使用RVMasdf。你可以手动安装或通过Homebrew,MacPorts或Fink安装任何一种。
这取决于您和您的需求。这些并不完全相同。例如,ruby-install和ruby-build用于 * 安装 * Ruby。chruby和rbenv用于 * 在多个Ruby安装之间切换 *。RVM可以完成这两件事。如果安装了ruby-install,rbenv也可以进行安装。asdf可以安装多种编程语言的多个实现并在它们之间切换,即,它可以做RVM所做的事情,但不仅仅是Ruby;它还支持Erlang,Python,PHP,Swift,SML/NJ,Chez Scheme,SBCL,Zig,Raku,Scala,Rust,LFE,Perl,Java,PowerShell,.NET,Elixir,Lua,PureScript,Elm,D,Lean,Crystal,Kotlin,Haskell,Logtalk,Groovy,OCaml,Mercury,Go,Nim,Haxe,Idris,Io,Julia等等。

jvidinwx

jvidinwx2#

React-native为CocoaPods使用ruby gem。
我已经通过将我的react-native项目降级到0.69.0来实现了这一点。我现在可以在真实的设备中查看它了。
我是这样做的:
1.创建一个版本为0.69的react-native项目。

npx [email protected] init AwesomeProject2 --version 0.69.0

字符串
1.在Xcode中调出工作区,而不是项目。
1.选择Pod
1.转到生成设置
1.在Targets的左侧选择React-CodeGen
1.在右侧选择iOS部署目标:iOS 12.4
1.在设备上运行

npx react-native run-ios --device

相关问题