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

时间:2018-07-10 11:15:13

标签: ruby macos macos-mojave

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

8 个答案:

答案 0 :(得分:34)

更新 15/03/2021

According to Apple,系统的未来版本中将不再包含 Ruby,因此一旦这真的发生,使用 Ruby 版本管理器将是唯一的出路。


原答案

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

<块引用>

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

xcrun gem install <your_gem>

引用自 Github issue comment

答案 1 :(得分:5)

在尝试通过自制软件安装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 /

答案 2 :(得分:4)

XCode 12升级对我来说很混乱。

我从ruby安装了brew,并将其添加到了我的.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"%

答案 3 :(得分:2)

如果您正在运行Xcode 10 Beta,则可能会解决

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

答案 4 :(得分:2)

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

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

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

答案 5 :(得分:0)

我遇到了同样的问题,其中包括“ 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"

答案 6 :(得分:0)

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

答案 7 :(得分:0)

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


使用 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.1Latest 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,它仍在工作。