在OSX Catalina上安装Ruby开发工具以进行gem安装
在OSX Catalina上安装Ruby开发工具以进行gem安装
我知道这个问题有很多实例。我在这些答案中做了一切,但在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.
这是附加的上下文
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安装错误:您首先必须安装开发工具所建议的。我不在Windows上,所以rubyinstaller链接对我没有帮助。
安装ffi ruby gem时找不到ffi.h引用了我要安装的确切gem,但所示的xcode-select --install
不是答案。
安装Ruby gems时的开发工具问题中的任何答案都没有帮助;我已经安装了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
我也试过如何通过命令行更新Xcode中的建议-xcode-select -r
什么也没发生,xcode-select -s /Library/Developer/CommandLineTools
什么也没发生,$ sudo rm -rf /Library/Developer/CommandLineTools
阻止了xcode-select --install
的工作,此外我还移动了它并从苹果的开发人员网站重新下载了命令行DMG包。仍然是同样的问题。
接下来我应该尝试什么以安装这个gem?
根据您的错误消息中的路径名,您正在尝试修改苹果的系统Ruby。这是不允许的。 \n苹果的系统Ruby专门用于macOS的内部使用和/或对遗留应用程序的支持。您不应使用它,而且绝对不应修改它。修改它将取消“支持遗留应用程序”的整个功能。 \n苹果本身在macOS 10.15 Catalina的发布说明中有如下声明: \n脚本语言运行时 \n已弃用 \nmacOS包括Python、Ruby和Perl等脚本语言运行时,以与遗留软件兼容。未来的macOS版本将不默认包括脚本语言运行时,并且可能需要您安装其他软件包。如果您的软件依赖于脚本语言,建议您将运行时捆绑在应用程序中。 (49764202) \n在macOS上安装Ruby有许多选择,包括但不限于自己编译它,下载预编译的二进制文件,Homebrew、ruby-install、ruby-build、RVM等。在macOS上管理Ruby安装有许多选择,包括但不限于chruby、asdf、rbenv和RVM。 \n大多数都具有以下优点:它们支持比苹果提供的更新版本,甚至更有趣的是,它们支持不仅仅是YARV的不同实现。我个人最喜欢的是TruffleRuby,它在GraalVM上运行时在不同的基准测试上可以快1000倍。 \n请不要使用系统Ruby。
经过几个小时,我终于搞定了。
我遵循了这个教程的指导,并稍作修改。
-
确保已安装
brew
。如果没有安装,运行以下命令:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
-
将shell设置为
zsh
curl -L http://install.ohmyz.sh | sh
或者,设置PATH
-
eval "$(rbenv init -)"
-
安装Ruby版本管理器
brew update
brew install rbenv ruby-build
-
安装Ruby
rbenv install 2.6
#我使用了系统默认的版本号,因为我不确定它会不会影响我的OS X系统版本。
rbenv global 2.6
rbenv rehash
-
将其添加到您的zsh
echo 'eval "$(rbenv init -)"' >> ~/.zshrc
source ~/.zshrc
这对我有用。像安装Xcode、接受Xcode许可证、安装Xcode命令行工具之类的其他事情都没有用。