在 OSX Catalina 上安装用于 gem 安装的 Ruby 开发工具

cbm*_*ica 12 ruby rubygems macos-catalina

我知道这个问题有很多例子。我已经完成了这些答案中的所有内容,但 4 小时后却一无所获。

我正在尝试在 Catalina 10.15.7 上安装 gem 并获得非常流行的

/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/mkmf.rb:467:in `try_do': The compiler failed to generate an executable file. (RuntimeError)
You have to install development tools first.
Run Code Online (Sandbox Code Playgroud)

有了这个额外的背景

ERROR:  Error installing ffi:
    ERROR: Failed to build gem native extension.

    current directory: /Users/bmanica/.chefdk/gem/ruby/2.4.0/gems/ffi-1.13.1/ext/ffi_c
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/bin/ruby -I /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0 -r ./siteconf20200925-10024-qilctf.rb extconf.rb --with-cflags\=-save-temps\=obj\ -o\ tmp/a.o
Run Code Online (Sandbox Code Playgroud)

通过调用安装时

gem install ffi  -- --with-cflags="-save-temps=obj -o tmp/a.o"
Run Code Online (Sandbox Code Playgroud)

绕过 Catalina 严格的权限规则。

我刚刚下载了 XCode 和命令行工具:

> xcode-select --install
xcode-select: error: command line tools are already installed, use "Software Update" to install updates
> xcode-select -p
/Applications/Xcode.app/Contents/Developer
> ls /Applications/Xcode.app/Contents/Developer
Applications    Library     Makefiles   Platforms   Toolchains  Tools       usr
Run Code Online (Sandbox Code Playgroud)

我已经通过以下方式接受了至少四次许可证

sudo xcodebuild -license accept
Run Code Online (Sandbox Code Playgroud)

我试过了

sudo xcode-select -switch /
Run Code Online (Sandbox Code Playgroud)

正如Gem 安装错误:您必须首先安装开发工具建议的那样。我不在 Windows 上,所以 ruby​​installer 链接对我没有帮助。

安装 ffi ruby​​ gem 时找不到 ffi.h引用了我尝试安装的确切 gem,但如图所示xcode-select --install不是答案。

安装 Ruby gem 时开发人员工具问题中的答案也没有任何帮助;我已经brew install openssl导出brew install libffi了它告诉我的变量:

> set | grep FLAGS
CPPFLAGS=-I/usr/local/opt/libffi/include
LDFLAGS=-L/usr/local/opt/libffi/lib
> set | grep PATH
PKG_CONFIG_PATH=/usr/local/opt/libffi/lib/pkgconfig
Run Code Online (Sandbox Code Playgroud)

我还尝试了如何从命令行更新 Xcode -xcode-select -r不执行任何操作,xcode-select -s /Library/Developer/CommandLineTools不执行任何操作,并且$ sudo rm -rf /Library/Developer/CommandLineTools阻止工作中的建议xcode-select --install,此外我还是移动了它并从 Apple 的开发人员网站重新下载了命令行 dmg 包。还是同样的问题。

接下来我要尝试什么来安装这个 gem?

Sto*_*ace 15

几个小时后终于拿到了。我按照这个说明做了一些改变

  1. 确保brew已安装。如果不 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

  2. 将外壳设置为zsh curl -L http://install.ohmyz.sh | sh

或者,设置路径

  1. eval "$(rbenv init -)"

  2. 安装 Ruby 版本管理器 brew update brew install rbenv ruby-build

  3. 安装 Ruby rbenv install 2.6# 我使用了系统默认版本号,因为我不确定它是否与我的 OS X 系统版本混淆。 rbenv global 2.6 rbenv rehash

  4. 将其添加到您的 zsh echo 'eval "$(rbenv init -)"' >> ~/.zshrc source ~/.zshrc

那对我来说是这样的。所有其他的事情,比如安装 Xcode、接受 Xcode 许可证,Xcode 命令行工具都没有做。


Jör*_*tag -2

根据错误消息中的路径名判断,您正在尝试修改 Apple 的系统 Ruby。这是不允许的

\n

Apple 的 System Ruby专门供 macOS 内部使用和/或支持旧版应用程序。您不得使用它,并且绝对不得修改它。修改它会否定整个“对遗留应用程序的支持”。

\n

Apple 在macOS 10.15 Catalina 的发行说明中说了以下内容:

\n
\n

脚本语言运行时

\n

弃用

\n
    \n
  • macOS 中包含 Python、Ruby 和 Perl 等脚本语言运行时,以便与旧版软件兼容。macOS 的未来版本默认情况下不会\xe2\x80\x99 包含脚本语言运行时,并且可能需要您安装其他软件包。如果您的软件依赖于脚本语言,则建议您在应用程序中捆绑运行时。(49764202)
  • \n
\n
\n

在 macOS 上安装 Ruby 有很多很多选项,包括但不限于自己编译、下载预编译的二进制文件、Homebrewruby​​-installruby​​-buildRVM。有许多选项可用于管理 macOS 上的 Ruby 安装,包括但不限于chrubyasdfrbenv和 RVM。

\n

其中大多数都有一个额外的优势,即它们支持比 Apple 发布的版本更新的版本,更有趣的是,它们支持的实现不仅仅是 YARV。我个人最喜欢的是TruffleRuby,当它在GraalVM上运行时,对我来说速度提高了 1000 倍,具体取决于基准测试。

\n

请不要使用 System Ruby。

\n