当我尝试在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的问题不同
答案 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)
尝试一下:
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
xcode-select --switch /Applications/Xcode.app/Contents/Develope
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
答案 12 :(得分:0)
我在安装 eventmachine 1.2.7 时遇到了类似的问题,这对我有用(macOS 10.15.5):
(我使用 fish
)
brew install ruby
~/.config/fish/config.fish
(没有fish
,只需将这些添加到路径中)
fish_add_path /usr/local/opt/ruby/bin
fish_add_path /usr/local/lib/ruby/gems/3.0.0/bin
set -gx CPPFLAGS "-I/usr/local/opt/ruby/include"
set -gx LDFLAGS "-L/usr/local/opt/ruby/lib"
set -gx PKG_CONFIG_PATH "/usr/local/opt/ruby/lib/pkgconfig"
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 执行以下步骤:
使用'gem which cocoapods'命令检查新的pods版本。
答案 14 :(得分:-1)
在我的情况下(Catalina 10.15.7)只需重新安装 ruby
和 homebrew
即可修复它。无需安装 rvm
或 rubyenv
。