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

时间:2020-09-25 19:24:40

标签: ruby rubygems macos-catalina

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

我正在尝试在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.

具有其他上下文

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

通过调用安装时

gem install ffi  -- --with-cflags="-save-temps=obj -o tmp/a.o"

绕过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

我已经通过至少接受了四次许可

sudo xcodebuild -license accept

我尝试过

sudo xcode-select -switch /

Gem installation error: You have to install development tools first所建议。我不在Windows上,因此rubyinstaller链接对我没有帮助。

Can't Find ffi.h When Installing ffi ruby gem引用了我要安装的确切gem,但提示xcode-select --install不是答案。

Developer tools issues when installing Ruby gems中的答案都没有帮助。我已经有brew install opensslbrew 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

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

接下来我该怎么做才能安装此gem?

2 个答案:

答案 0 :(得分:2)

几小时后终于拿到了。 我按照 this 说明进行了更改

  1. 确保安装了 time value 0 t2 200 1 t6 200 2 t8 200 。如果不 brew

  2. 将外壳设置为 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)" zsh

或者,设置路径

  1. curl -L http://install.ohmyz.sh | sh

  2. 安装 Ruby 版本管理器 eval "$(rbenv init -)" brew update

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

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

那是为我做的。所有其他的东西,比如安装 Xcode,接受 Xcode 许可证,Xcode 命令行工具没有做。

答案 1 :(得分:-1)

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

Apple的System Ruby是专有的,供macOS内部使用和/或支持旧版应用程序。您一定不要使用它,并且您肯定一定不能修改它。修改它会否定整个“对遗留应用程序的支持”的事情。

Apple在the release notes for macOS 10.15 Catalina中有以下说法:

脚本语言运行时

弃用

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

在macOS上安装Ruby的方法有很多,包括但不限于自己编译,下载预编译的二进制文件Homebrewruby-installruby-build,{{ 3}}。在macOS上管理Ruby安装的选项很多,包括但不限于RVMchrubyasdf和RVM。

其中大多数具有一个额外的优势,即它们支持比Apple发行的版本更高的版本,更有趣的是,它们不仅支持YARV,还支持不同的实现。我个人最喜欢的是rbenv,当在TruffleRuby上运行时,对我而言,速度最高可以提高1000倍。

请不要使用System Ruby。