macOS Mojave 'ruby/config.h' 文件未找到
Posted
技术标签:
【中文标题】macOS Mojave \'ruby/config.h\' 文件未找到【英文标题】:macOS Mojave 'ruby/config.h' file not foundmacOS Mojave 'ruby/config.h' 文件未找到 【发布时间】:2022-01-21 21:41:33 【问题描述】:当我尝试在 macOS Mojave(10.14.1) 上使用 ruby 支持 (--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
谢谢
【问题讨论】:
【参考方案1】:确保 Xcode 版本和 macOS 版本相互匹配:
macOS 10.15:Xcode macOS 11:Xcode >= 12.2, macOS 12:Xcode >= 13.1这是因为在编译 gem 的本机扩展时,某些版本的 Xcode 没有运行它的操作系统的 macOS SDK。
【讨论】:
【参考方案2】:在 macOS Catalina (10.15) 和 Big Sur (11.6) 上测试
在多次安装和卸载开发者工具后,这是唯一对我有用的东西。
首先安装 Ruby 版本管理器 rvm:
curl -L https://get.rvm.io | bash -s stable
然后安装最新版本的ruby:
rvm install ruby-3.0.3
然后将其设为默认值:
rvm --default use 3.0.3
(基于此答案:https://***.com/a/65033418/3605761)
额外
作为额外的好处,由于从过时的系统 Ruby 2 切换到当前版本 3,您将获得 up to 3 x better performance。
【讨论】:
确保您在安装后使用正确版本的 ruby:ruby --version
检查版本,rvm use 2.7.2
设置
工作!。谢谢
终于找到了这个可行的解决方案!我以前尝试过很多东西。非常感谢!这是我为这个场合找到的最好的虚拟拥抱:(っ^_^)っ
我在 Catalina 上,这为我解决了这个问题,在此之前我尝试了 rbenv 没有成功
这是为meee工作的【参考方案3】:
这不是 cocoa pod 问题,它与旧版本的 ruby 有关。 只需按照以下步骤操作:
-
rvm install "ruby-3.0.0"
sudo gem 安装 cocoapods
【讨论】:
【参考方案4】:这与您的 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 版本 使用 ruby -v 命令检查 ruby 版本 如果你的 ruby 版本不是 2.7.2 使用 'rvm use 2.7.2' 命令切换 在新的红宝石上 然后使用“sudo gem install cocoapods”命令安装 cocoapods使用'gem which cocoapods'命令检查新的pods版本。
【讨论】:
将新的 ruby 设置为默认 ruby 使用 'rvm --default use 2.7.2' 命令【参考方案5】:我在安装 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
也不起作用,因为我使用的是系统红宝石或rbenv
拥有的任何东西,但我太沮丧了,无法深入挖掘那个特定的兔子洞。所以,我用 brew 的 ruby 重新安装了!
【讨论】:
【参考方案6】:2021 年建议 如果可以的话,更新到 macOS Big Sur 然后更新 Xcode 也可以解决这个问题。
刚刚测试了更新 10.15 -> macOS 的 11.2.3。 Xcode 12.4。
【讨论】:
在我拥有的至少两台不同的 Mac 上,仅仅升级 macOS 实际上对我不起作用。 @JongwookChoi 您还需要更新 Xcode,因为这对 Ruby 脚本有作用或至少指向“正确”区域【参考方案7】:在 macOS Catalina 上 如果安装了多个版本的 xcode,xcode12/xcode12.4 等。请尝试在 xcode 首选项中更改您的 xcode 命令行工具。它可能有效!!!
【讨论】:
在大苏尔也为我工作过。谢谢。【参考方案8】:我尝试了以上所有方法,最终我成功地使用了这个小“宝石”,请原谅双关语。
sudo gem install -n /usr/local/bin cocoapods -v 1.8.4
来自https://developer.apple.com/forums/thread/668456
【讨论】:
【参考方案9】:在我的情况下(Catalina 10.15.7)只需重新安装 ruby
和 homebrew
即可修复它。无需安装rvm
或rubyenv
。
【讨论】:
注意:Homebrew ruby 与系统 ruby 是“不同的”,为其他下游构建过程指向“正确”的 ruby 可能会很棘手。例如,自制程序拒绝链接 macOS 提供的 ruby,因此您需要正确配置 PATH、LDFLAGS、CPPFLAGS 和 pkgconfig,这通常会变得一团糟,并且不会像预期的那样顺利运行。【参考方案10】:Catalina、Big Sur 等(截至 2020 年和 2021 年)
macOS 和 Xcode 的最新版本(例如 Catalina 10.15 和 Xcode 12.2)肯定有这个问题。重新安装 Xcode 和 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
可以在以下位置找到:
/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
.
您应该根据您当前的 xcode 安装更改 SDK 版本(例如上例中的 11.1)。
也很可能会遇到另一个错误,无法找到.../universal-darwin19/ruby/config.h
(Commonmarker gem cannot be installed (needed for jekyll) macos)。可以按如下方式快速修复:
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
ln -sf universal-darwin20 universal-darwin19
【讨论】:
我只能在我的路径中看到 univeral-darwin20。我还能跑吗ln -sf universal-darwin20 univeral-darwin19
是的,这就是您需要运行命令以将符号链接 universal-darwin19
到 universal-darwin20
的原因(请注意 universal-darwin19
周围的拼写错误;感谢 Ewan 修复原始答案)。
尝试安装rbenv
。尝试卸载并重新安装xcode tools
。但只有这个解决方案有效。虽然,我正在认真考虑备份所有内容并在所有这些之后重置我的机器
在我结束这个答案之前,我浪费了 3 个小时无济于事!非常感谢!
我在 Xcode 13 测试版中遇到了一个非常相似的问题(不是使用 vim,而是使用不同的项目)。看起来这些文件现在位于 Xcode 13 的 universal-darwin21
文件夹中,因此我必须将命令更新为 ln -sf universal-darwin21 universal-darwin19
并添加 ln -sf universal-darwin21 universal-darwin20
以构建我的项目。【参考方案11】:
对我来说,它工作“rvm install ruby”(不使用 brew),然后从 here 执行步骤:
$ sudo rm -rf /Library/Developer/CommandLineTools
$ xcode-select --install
然后
export PKG_CONFIG_PATH="/usr/local/opt/ruby/lib/pkgconfig"
在这一切之后,它奏效了。
【讨论】:
【参考方案12】:我正在使用 rbenv(在 Catalina 上),我在这里(或其他地方)找到的解决方案都没有为我工作。最终修复我的环境的原因是将 rbenv global
指向特定版本的 ruby 而不是 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
【讨论】:
【参考方案13】:如果您在 Mac Big Sur 中遇到此问题,重新安装 CommandLineTools
可以解决此问题。
sudo rm -rf /Library/Developer/CommandLineTools
xcode-select --install
【讨论】:
是的,这是可行的最短解决方案(大苏尔)【参考方案14】:MacOS Big Sur Beta 8
试试这个:
-
安装 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
xcode-select --switch /Applications/Xcode.app/Contents/Develope
gem install cocoapods
应该像魅力一样工作!
【讨论】:
这并没有解决我的问题,但 18 年 11 月 20 日的问题解决了。【参考方案15】:macOS 卡塔利娜
问题在 Catalina 中再次出现,我无法在 Developer SDK 中发现此包。在找到更好的解决方案之前,我可以使用 rubyenv 解决这个问题:https://github.com/orta/cocoapods-keys/issues/198#issuecomment-510909030
brew install rbenv ruby-build
echo 'if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi' >> ~/.bash_profile
rbenv install 2.6.3
rbenv global 2.6.3
莫哈韦及以上
这个答案帮助了我:https://***.com/a/53194299/2105993
xcode-select --install
open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
【讨论】:
这应该是公认的答案@maksimr,因为它确实可以解决问题而无需完全重新安装 macOS 我在 mojave 上,这为我修复了它(而 xcode-select --install 没有) 似乎很有希望,直到出现以下警告:“此软件包与此版本的 macOS 不兼容,可能无法安装。[...] 可能会损坏您的系统 [...]”。我只是想试试 asdf (github.com/asdf-vm/asdf),它的模块列表中似乎有 ruby。 使用 asdf ruby,gem 想将软件包安装到 ruby 2.3 系统文件夹中,所以我停止尝试。这似乎是错误的,我不想使用 sudo。 Homebrew 有 ruby,当使用其 gem 实用程序的完整路径运行时,由于默认情况下未激活,因此可以安装我有问题的 gem(没有 sudo,是的)。 对我来说brew install ruby
,然后export PKG_CONFIG_PATH="/usr/local/opt/ruby/lib/pkgconfig"
解决了这个问题(这是sudo gem install eventmachine -v '1.2.7'
)【参考方案16】:
我遇到了完全相同的问题。无法安装带有本机扩展的 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
【讨论】:
【参考方案17】:我的问题不同于 - Yosemite upgrade broke ruby.h
正如您在问题描述中看到的,它是 System 的 ruby,而不是 Xcode 的 ruby,因此重新安装 Xcode 或符号链接在这里没有帮助。
答案: 我有reinstalled macOS Mojave 没有丢失任何数据,这解决了问题。
【讨论】:
我在尝试为 macvim 安装 Command-T 时遇到了这个问题,并担心我需要放弃重新安装 Mojave 的重磅炸弹。相反,我发现 System ruby 实际上是 Ruby 2.3.7(Macvim 是针对这个 System ruby 构建的,版本 2.3.7),我使用 rbenv 安装了 ruby 2.3.7。一旦安装并设置为我的默认 ruby,我就可以像平常一样安装 Command-T。可能仍然需要考虑在以后重新安装 Mojave,但是通过 rbenv 安装 Ruby 2.3.7 帮助我在不这样做的情况下运行。我希望这可以帮助遇到这种情况的其他人。 ReDetection 解决方案有效,我也使用了 Systems Ruby。我的意思是这就是下载的目的吗? Mac OS X 的标头。 在我的情况下 /Library/Developer/CommandLineTools 不包含 Packages 文件夹。正如我上面写的,重新安装 Mojave 是一个解决方案(您可以重新安装它而不会丢失数据)以上是关于macOS Mojave 'ruby/config.h' 文件未找到的主要内容,如果未能解决你的问题,请参考以下文章
如何在 macOS 10.14.4 Mojave 上使用 fink