gem install - 致命错误:在 Mojave 中找不到“ruby/config.h”文件

Posted

技术标签:

【中文标题】gem install - 致命错误:在 Mojave 中找不到“ruby/config.h”文件【英文标题】:gem install - fatal error: 'ruby/config.h' file not found in Mojave 【发布时间】:2018-12-18 05:07:05 【问题描述】:

gem 安装在 MacOs Mojave 中失败。有什么可以帮助我解决这个问题的吗?我的红宝石版本是ruby 2.3.7p456

➜ sudo gem install json -v '1.8.3'



current directory: /Library/Ruby/Gems/2.3.0/gems/json-1.8.3/ext/json/ext/generator
make "DESTDIR="
compiling generator.c
In file included from generator.c:1:
In file included from ./../fbuffer/fbuffer.h:5:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/include/ruby-2.3.0/ruby.h:33:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/include/ruby-2.3.0/ruby/ruby.h:24:10: fatal error: 'ruby/config.h' file not found
#include "ruby/config.h"
         ^~~~~~~~~~~~~~~
1 error generated.
make: *** [generator.o] Error 1

make failed, exit code 2

【问题讨论】:

【参考方案1】:

如果您运行的是 Xcode 10 测试版,这可能会修复它

sudo xcode-select -s /Applications/Xcode-beta.app/Contents/Developer

【讨论】:

就我而言,我需要重新安装 Xcode 命令行工具,我认为这是因为我更新了 Xcode。这篇文章给了我正确的提示:github.com/flori/json/issues/255 请解释您的建议,描述此命令的作用。谢谢! 我在 Xcode 12.2 中遇到了类似的问题。这对我有用! 确认,XCode 12 导致问题切换 xcode-select 到 XCode 11.7 也可以。 太棒了!这解决了我安装 Jekyll 的问题!你能解释一下这个命令在做什么吗? PD:我正在使用 Xcode 12.5.1【参考方案2】:

我遇到了同样的问题,由于包含“ruby/config.h”时失败,我无法安装本机扩展。

我相信这个问题的原因是因为我使用的是随 Homebrew 安装的 ruby​​ 版本。使用 Homebrew 升级到新版本的 Ruby 后,我看到了来自 Homebrew 的以下有用消息:

ruby is keg-only, which means it was not symlinked into /usr/local,
because macOS already provides this software and installing another version in
parallel can cause all kinds of trouble.

If you need to have ruby first in your PATH run:
 echo 'export PATH="/usr/local/opt/ruby/bin:$PATH"' >> ~/.bash_profile

For compilers to find ruby you may need to set:
 export LDFLAGS="-L/usr/local/opt/ruby/lib"
 export CPPFLAGS="-I/usr/local/opt/ruby/include"

For pkg-config to find ruby you may need to set:
 export PKG_CONFIG_PATH="/usr/local/opt/ruby/lib/pkgconfig"

将以下行添加到我的 ~/.bash_profile 为我解决了这个问题:

export LDFLAGS="-L/usr/local/opt/ruby/lib"
export CPPFLAGS="-I/usr/local/opt/ruby/include"

【讨论】:

【参考方案3】:

我在尝试使用自制软件安装 fastlane 时遇到了这个问题。前面提到的任何建议都没有帮助我。手动安装macOS_SDK_headers_for_macOS_10.14.pkg 修复它。

sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /

【讨论】:

谢谢!此处(以及其他 SO 线程)的所有其他建议都失败了。这是票。【参考方案4】:

Xcode 12 升级让我搞砸了。

我从brew 安装了ruby 并将其添加到我的.zshrc 中

export PATH="/usr/local/opt/ruby/bin:$PATH"
export LDFLAGS="-L/usr/local/opt/ruby/lib"
export CPPFLAGS="-I/usr/local/opt/ruby/include"
export PKG_CONFIG_PATH="/usr/local/opt/ruby/lib/pkgconfig"

【讨论】:

谢谢,我在 xcode 12 更新时遇到了类似的问题。这种方法对我有帮助。 我必须更改路径以指向我的 rbenv 安装,但否则它可以工作。谢谢! 这解决了 Xcode 13.1 的问题【参考方案5】:

2021 年 3 月 15 日更新

According to Apple,Ruby 将不会再包含在系统的未来版本中,因此一旦实际发生这种情况,使用 Ruby 版本管理器将是唯一的方法。


原答案

经过数小时的反复试验,我想更深入地了解此错误的原因,我终于发现这是解决此问题的干净方法:

Catalina(NdMe:我认为这是在 Mojave 上更早开始的)不再支持在命令行中包含 macOS 标头 工具,它们必须通过 Xcode SDK 显式使用。你可以做 因此,通过xcrun 工具运行gem,例如:

xcrun gem install <your_gem>

引用自Github issue comment。

【讨论】:

running Catalina - 这修复了运行“gem update”和“gem install ”失败的尝试 非常感谢,这很有帮助。感谢这是一个“干净”的解决方案。 非常感谢这个解决方案。 这救了我的命! 我确实花了 2 个小时来解决这个问题。感谢您提供此解决方案。【参考方案6】:

xcrun gem install <your_gem> 为我工作,但我不得不多次这样做——每次bundle install 都失败了。

最好的解决方案可能是在您的.zshrc 文件中设置与xcrun 相同的变量。 xcrun env 在我的系统上添加:

SDKROOT=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk
CPATH=/usr/local/include
LIBRARY_PATH=/usr/local/lib

【讨论】:

【参考方案7】:

我在安装 Big Sur 后遇到了这个问题。我发现在升级之前安装的 Xcode 版本的 Xcode 包中不存在 ruby​​/config.h 文件。我可以通过卸载 Xcode 版本并重新安装它们来纠正它。

【讨论】:

【参考方案8】:

在 macOS Monterey(至少是 Beta 版)中,Ruby (ruby 2.6.3p62 (2019-04-16 revision 67580)) 仍然包含在内,但它似乎不能很好地工作 (fatal error: 'ruby/config.h' file not found),所以我安装了我自己的 Ruby 版本。您可以手动安装 ruby​​,但我更喜欢使用 Ruby 版本管理器 rbenv


使用rbenv 安装 ruby

安装 rbenv: brew install rbenv ruby-build ruby-buildrbenv 实际安装ruby 版本的插件,它提供ruby install 命令。 设置 rbenv: rbenv init,(并按照其推荐的说明进行操作,例如,如果您使用的是 zsh,则说明将 eval "$(rbenv init -)" 添加到 ~/.zshrc安装 ruby​​: rbenv install 3.0.1。 Latest version listed here 做你想做的事: sudo gem install cocoapodsbundle install

或手动安装 ruby​​

奔跑 brew install ruby 运行 echo 'export PATH="/opt/homebrew/opt/ruby/bin:$PATH"' >> ~/.zshrc 以便使用此版本 重启终端

asdf?

rbenv 的替代品是 asdf,但我发现 asdf 使用起来有点复杂,因为它不仅支持 ruby​​,还支持 NodeJS。我会争辩说,它们都不符合人体工程学。


注意:我有一个 M1 mac,它还在工作。

【讨论】:

谢谢,本。运行 Monterey 和 Xcode 13 Beta 2。手动安装为我修复了它,但需要一些额外的导出。从安装开始:如果您需要在 PATH 中首先包含 ruby​​,请运行:- echo 'export PATH="/usr/local/opt/ruby/bin:$PATH"' >> /Users/[username]/.bash_profile对于要查找 ruby​​ 的编译器,您可能需要设置: - export LDFLAGS="-L/usr/local/opt/ruby/lib" - export CPPFLAGS="-I/usr/local/opt/ruby/include" 对于 pkg-配置以查找您可能需要设置的 ruby​​: - export PKG_CONFIG_PATH="/usr/local/opt/ruby/lib/pkgconfig" 注意:我必须在设置 rbenv 后运行 rbenv global 3.0.2 谢谢!

以上是关于gem install - 致命错误:在 Mojave 中找不到“ruby/config.h”文件的主要内容,如果未能解决你的问题,请参考以下文章

ruby gem install显示错误(Gem::RemoteFetcher::FetchError)

错误:“compass:dist”致命错误:spawn / usr / bin / compass ENOENT

即使安装了 gem,RVM Bundle Install Missing Gem 错误

sudo gem install cocoapods 错误:无法构建 gem 原生扩展。?

gem install rmagick -v 2.13.1 错误无法在 Mac OS 10.9.1 上构建 gem 本机扩展

mac 上的 gem install rails 失败错误:无法构建 gem 本机扩展