gem install - 致命错误:在 Mojave 中找不到“ruby/config.h”文件
Posted
技术标签:
【中文标题】gem install - 致命错误:在 Mojave 中找不到“ruby/config.h”文件【英文标题】:gem install - fatal error: 'ruby/config.h' file not found in Mojave 【发布时间】: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
【问题讨论】:
【参考方案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 installxcrun 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-build
是rbenv
实际安装ruby 版本的插件,它提供ruby install
命令。
设置 rbenv: rbenv init
,(并按照其推荐的说明进行操作,例如,如果您使用的是 zsh,则说明将 eval "$(rbenv init -)"
添加到 ~/.zshrc
)
安装 ruby: rbenv install 3.0.1
。 Latest version listed here
做你想做的事: sudo gem install cocoapods
或 bundle 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
谢谢!以上是关于gem install - 致命错误:在 Mojave 中找不到“ruby/config.h”文件的主要内容,如果未能解决你的问题,请参考以下文章
ruby gem install显示错误(Gem::RemoteFetcher::FetchError)
错误:“compass:dist”致命错误:spawn / usr / bin / compass ENOENT
即使安装了 gem,RVM Bundle Install Missing Gem 错误
sudo gem install cocoapods 错误:无法构建 gem 原生扩展。?
gem install rmagick -v 2.13.1 错误无法在 Mac OS 10.9.1 上构建 gem 本机扩展