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
答案 0 :(得分:34)
According to Apple,系统的未来版本中将不再包含 Ruby,因此一旦这真的发生,使用 Ruby 版本管理器将是唯一的出路。
经过数小时的反复试验和错误,我想更深入地了解此错误的原因,我终于找到了我认为是解决此问题的干净方法:
<块引用>Catalina(NdMe:我认为这更早开始,在 Mojave 上)不再支持在命令行中包含 macOS 标头
工具,它们必须通过 Xcode SDK 明确使用。你可以做
因此,通过 gem
工具运行 xcrun
,例如:
xcrun gem install <your_gem>
引用自 Github issue comment。
答案 1 :(得分:5)
在尝试通过自制软件安装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 /
答案 2 :(得分:4)
XCode 12升级对我来说很混乱。
我从ruby
安装了brew
,并将其添加到了我的.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"%
答案 3 :(得分:2)
如果您正在运行Xcode 10 Beta,则可能会解决
sudo xcode-select -s /Applications/Xcode-beta.app/Contents/Developer
答案 4 :(得分:2)
xcrun gem install <your_gem>
为我工作,但我不得不多次这样做 - 每次 bundle install
失败。
最好的解决方案可能是在 xcrun
文件中设置与 .zshrc
相同的变量。 xcrun env
在我的系统上添加:
SDKROOT=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk
CPATH=/usr/local/include
LIBRARY_PATH=/usr/local/lib
答案 5 :(得分:0)
我遇到了同样的问题,其中包括“ 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"
答案 6 :(得分:0)
我在安装 Big Sur 后遇到了这个问题。我发现文件 ruby/config.h 在升级之前安装的 Xcode 版本中的 Xcode Packages 中不存在。我能够通过卸载 Xcode 版本并重新安装它们来纠正它。
答案 7 :(得分:0)
在 macOS Monterey(至少在 Beta 版中)中,Ruby (ruby 2.6.3p62 (2019-04-16 revision 67580)
) 仍然包含在内,但它似乎不太好用 (fatal error: 'ruby/config.h' file not found
),所以我安装了我自己的Ruby 版本。您可以手动安装 ruby,但我更喜欢使用 rbenv
,一个 Ruby 版本管理器。
rbenv
安装 rubybrew install rbenv ruby-build
ruby-build
是 rbenv
实际安装 ruby 版本的插件,它提供 ruby install
命令。rbenv init
,(并按照其推荐的说明进行操作,例如,如果您使用的是 zsh,它会说将 eval "$(rbenv init -)"
添加到 ~/.zshrc
) rbenv install 3.0.1
。 Latest version listed heresudo gem install cocoapods
或 bundle install
brew install ruby
echo 'export PATH="/opt/homebrew/opt/ruby/bin:$PATH"' >> ~/.zshrc
以便使用此版本asdf
?rbenv
的替代品是 asdf
,但我发现 asdf
使用起来有点复杂,因为它不仅支持 ruby,还支持 NodeJS。我认为它在人体工程学方面没有任何作用。
注意:我有一台 M1 mac,它仍在工作。