找不到macOS Mojave'ruby / config.h'文件

时间:2018-11-03 21:57:46

标签: ruby vim macos-mojave

当我尝试在macOS Mojave(10.14.1)上使用ruby support(-enable-rubyinterp)构建vim(8.1.0509)时出现错误:

In file included from /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/include/ruby-2.3.0/ruby.h:33:
/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"

我已经安装了Xcode 10.1。

xcode-select -p
/Applications/Xcode.app/Contents/Developer

谢谢

P.S。 查看我对问题的回答它解释了为什么我的问题与Xcode的问题不同

15 个答案:

答案 0 :(得分:78)

Catalina、Big Sur 等(截至 2020 年和 2021 年)

最近版本的 macOS 和 Xcode(例如 Catalina 10.15 和 Xcode 12.2)肯定有这个问题。重新安装 Xcode 和 w_member_live 对我根本没有帮助(已经发布的解决方案似乎已经过时)。我不想使用 xcode-select --install,因为它可能会导致一些烦人的问题。

我通过手动创建符号链接做了一个解决方法:

rvm

在哪里可以找到 cd /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/include/ruby-2.6.0/ruby ln -sf ../../../../Headers/ruby/config.h ruby/config.h

您应该根据当前的 xcode 安装更改 SDK 版本(例如上例中的 11.1)。

也很可能遇到另一个错误,其中 /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.6/Headers/ruby/config.h 找不到 (Commonmarker gem cannot be installed (needed for jekyll) macos)。可以通过以下方式快速修复:

.../universal-darwin19/ruby/config.h

答案 1 :(得分:36)

在 macOS Catalina 上
多次安装和卸载开发人员工具后,这是唯一对我有用的方法:

<块引用>

首先安装 Ruby 版本管理器 rvm:

curl -L https://get.rvm.io | bash -s stable
<块引用>

然后安装最新版本的ruby:

rvm install ruby-2.7.2
<块引用>

最后再次尝试安装 cocoapods:

sudo gem install cocoapods

(来自这个答案:https://stackoverflow.com/a/65033418/3605761

编辑:在步骤 2 中可能需要 rvm reinstall ruby-2.7.2 而不是 rvm install ruby-2.7.2

答案 2 :(得分:24)

此答案对我有帮助:https://stackoverflow.com/a/53194299/2105993

open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg

答案 3 :(得分:6)

我有完全相同的问题。无法安装具有本机扩展名的gem。正在运行

$ open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg

失败,因为文件不存在。看起来Mojave可以破坏命令行工具。

我通过删除Xcode命令行工具,再次安装它们,然后安装缺少的标头来修复它:

$ sudo rm -rf /Library/Developer/CommandLineTools
$ xcode-select --install
$ open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg

答案 4 :(得分:3)

在 macOS Catalina 上 如果安装了多个版本的 xcode,xcode12/xcode12.4 等。请尝试在 xcode 首选项中更改您的 xcode 命令行工具。它可能有效!!!

答案 5 :(得分:2)

如果您在Mac Big Sur中遇到此问题,则重新安装showCorrect可以解决此问题。

CommandLineTools

答案 6 :(得分:1)

我的问题不同于-Yosemite upgrade broke ruby.h

正如您在问题描述中所看到的,它是系统的红宝石,而不是Xcode的红宝石,因此重新安装Xcode或symlink在这里无济于事。

答案: 我有reinstalled macOS Mojave,而且没有丢失任何数据,因此可以解决此问题。

答案 7 :(得分:1)

MacOS Big Sur Beta 8

尝试一下:

  1. 安装rbenv
  • git clone https://github.com/rbenv/rbenv.git ~/.rbenv

  • cd ~/.rbenv && src/configure && make -C src

  • 将〜/ .rbenv / bin添加到$ PATH中,以访问rbenv命令行实用程序。 参见:https://github.com/rbenv/rbenv#basic-github-checkout

  • 确保将export PATH="$HOME/.rbenv/shims:${PATH}"添加到您的$ PATH

  1. xcode-select --switch /Applications/Xcode.app/Contents/Develope

  2. gem install cocoapods应该像魅力一样!

答案 8 :(得分:1)

2021 年建议
如果可以,更新到 macOS Big Sur 然后更新 Xcode 也可以解决此问题。

刚刚测试了更新 10.15 -> macOS 11.2.3。
Xcode 12.4。

答案 9 :(得分:0)

我使用的是rbenv(在Catalina上),在这里(或其他地方)找到的所有解决方案都没有为我工作。最终,解决我的环境的问题是将rbenv global指向特定版本的红宝石而不是system

$ rbenv global 2.6.3

这是gem install失败时我的环境的状态:

$ gem env home
=> /Users/ryanc/.gem

$ which gem
=> /Users/ryanc/.rbenv/shims/gem

$ which ruby
=> /Users/ryanc/.rbenv/shims/ruby

$ ruby -v
=> ruby 2.6.3p62 (2019-04-16 revision 67580) [universal.x86_64-darwin19]

$ rbenv local
=> rbenv: no local version configured for this directory

$ rbenv global
=> system

$ rbenv which ruby
=> /usr/bin/ruby

rbenv which ruby的结果是关键。我决定运行rbenv global 2.6.3,突然间我可以再次安装gems。这是新的状态:

$ ruby -v
=> ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-darwin19]

$ rbenv global
=> 2.6.3

$ rbenv which ruby
=> /Users/ryanc/.rbenv/versions/2.6.3/bin/ruby

答案 10 :(得分:0)

对我来说,它运行“rvm install ruby​​”(不使用 brew),然后执行 here 中的步骤:

$ sudo rm -rf /Library/Developer/CommandLineTools
$ xcode-select --install

然后

export PKG_CONFIG_PATH="/usr/local/opt/ruby/lib/pkgconfig" 

在这一切之后,它奏效了。

答案 11 :(得分:0)

我尝试了上述所有方法,最终我用这个小“宝石”成功了,请原谅双关语。

sudo gem install -n /usr/local/bin cocoapods -v 1.8.4

来自https://developer.apple.com/forums/thread/668456

答案 12 :(得分:0)

我在安装 eventmachine 1.2.7 时遇到了类似的问题,这对我有用(macOS 10.15.5):

(我使用 fish

  1. brew install ruby
  2. 添加以下~/.config/fish/config.fish(没有fish,只需将这些添加到路径中)
    1. fish_add_path /usr/local/opt/ruby/bin
    2. fish_add_path /usr/local/lib/ruby/gems/3.0.0/bin
  3. set -gx CPPFLAGS "-I/usr/local/opt/ruby/include"
  4. set -gx LDFLAGS "-L/usr/local/opt/ruby/lib"
  5. set -gx PKG_CONFIG_PATH "/usr/local/opt/ruby/lib/pkgconfig"
  6. sudo gem install eventmachine -v '1.2.7' --source 'https://rubygems.org/'

我通过 brew 安装 ruby​​ 后得到的 set -gx 命令。

我尝试重新安装 Xcode 工具(12.3,因为我还不能升级到 Big Sur)并重新接受协议,但这并没有改变任何东西


需要注意的是,这是通过安装 eventmachine 1.2.7。我引用此路径作为其标志之一的日志错误:

-I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/include/ruby-2.6.0 -I

请注意,它试图查看 .../MacOSX11.1.sdk/...,但我有 10.15.5。即使手动设置 CPPFLAGS, LDFLAGS, PKG_CONFIG_PATH 也不起作用,因为我使用的是系统 ruby​​ 或 rbenv 的任何东西,但我太沮丧了,无法深入挖掘那个特定的兔子洞。所以,我用 brew 的 ruby​​ 重新安装了!

答案 13 :(得分:0)

这与您的 ruby​​ 版本或错误安装有关。 您可以使用 rvm 安装新的 ruby​​ 版本

首先使用下面的命令安装 rvm

<块引用>

curl -L https://get.rvm.io | bash -s 稳定

然后关闭并重新打开终端或使用命令源[你的 mac bash 文件,如 .zshrc 或 .bashrrc] 来加载 rvm 命令

接下来使用下面的命令安装新的 ruby​​ 版本

<块引用>

rvm 安装 ruby​​-2.7.2

现在你应该使用新版本的 ruby​​ 并安装最新版本的 cocoapods 执行以下步骤:

  • 检查红宝石版本
  • 使用 ruby​​ -v 命令检查 ruby​​ 版本
  • 如果您的 ruby​​ 版本不是 2.7.2,请使用 'rvm use 2.7.2' 命令切换 在新红宝石上
  • 然后使用 'sudo gem install cocoapods' 命令安装 cocoapods

使用'gem which cocoapods'命令检查新的pods版本。

答案 14 :(得分:-1)

在我的情况下(Catalina 10.15.7)只需重新安装 rubyhomebrew 即可修复它。无需安装 rvmrubyenv