【问题标题】:gem install - fatal error: 'ruby/config.h' file not found in Mojavegem install - 致命错误:在 Mojave 中找不到“ruby/config.h”文件
【发布时间】: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

【问题讨论】:

    标签: ruby macos macos-mojave


    【解决方案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.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,它还在工作。

          【讨论】:

          • 谢谢,本。运行 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 谢谢!
          猜你喜欢
          • 2019-04-07
          • 2015-08-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-04-05
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多