gem install - fatal error: 'ruby/config.h' file not found in Mojave
gem install - fatal error: 'ruby/config.h' file not found in Mojave
gem 在 MacOs Mojave 中安装失败。有什么可以帮助我解决这个问题的吗?我的 ruby 版本是 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
如果您有 Xcode 10 beta 运行 这可能会解决问题
sudo xcode-select -s /Applications/Xcode-beta.app/Contents/Developer
我遇到了同样的问题,在包含 "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"
我在尝试使用自制软件安装 fastlane 时遇到了这个问题。 None 前面提到的建议对我有帮助。手动安装 macOS_SDK_headers_for_macOS_10.14.pkg
修复了它。
sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /
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"
2021 年 3 月 15 日更新
According to Apple、Ruby 将不再包含在系统的未来版本中,因此使用 Ruby 版本管理器将是唯一的方法,一旦这实际上将发生了。
原回答
经过数小时的反复试验和错误后,我想更深入地了解这个错误的原因,我终于发现我认为这是解决这个问题的干净方法:
Catalina (NdMe: I think this started earlier, on Mojave) no longer supports including macOS headers in command line
tools, they have to be explicitly used through Xcode SDK. You can do
so by running gem
through the xcrun
tool like:
xcrun gem install <your_gem>
xcrun 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
我在安装 Big Sur 后遇到了这个问题。我发现文件 ruby/config.h 不存在于我在升级前安装的 Xcode 版本的 Xcode 软件包中。我能够通过卸载 Xcode 版本并重新安装它们来更正它。
在 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
安装 ruby
- 安装 rbenv:
brew install rbenv ruby-build
ruby-build
是rbenv
实际安装ruby版本的插件,它提供ruby install
命令。
- Setup 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。我认为它 none 非常符合人体工程学。
注意:我有一个 M1 mac,它还在工作。
gem 在 MacOs Mojave 中安装失败。有什么可以帮助我解决这个问题的吗?我的 ruby 版本是 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
如果您有 Xcode 10 beta 运行 这可能会解决问题
sudo xcode-select -s /Applications/Xcode-beta.app/Contents/Developer
我遇到了同样的问题,在包含 "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"
我在尝试使用自制软件安装 fastlane 时遇到了这个问题。 None 前面提到的建议对我有帮助。手动安装 macOS_SDK_headers_for_macOS_10.14.pkg
修复了它。
sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /
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"
2021 年 3 月 15 日更新
According to Apple、Ruby 将不再包含在系统的未来版本中,因此使用 Ruby 版本管理器将是唯一的方法,一旦这实际上将发生了。
原回答
经过数小时的反复试验和错误后,我想更深入地了解这个错误的原因,我终于发现我认为这是解决这个问题的干净方法:
Catalina (NdMe: I think this started earlier, on Mojave) no longer supports including macOS headers in command line tools, they have to be explicitly used through Xcode SDK. You can do so by running
gem
through thexcrun
tool like:
xcrun gem install <your_gem>
xcrun 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
我在安装 Big Sur 后遇到了这个问题。我发现文件 ruby/config.h 不存在于我在升级前安装的 Xcode 版本的 Xcode 软件包中。我能够通过卸载 Xcode 版本并重新安装它们来更正它。
在 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
安装 ruby
- 安装 rbenv:
brew install rbenv ruby-build
ruby-build
是rbenv
实际安装ruby版本的插件,它提供ruby install
命令。
- Setup 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。我认为它 none 非常符合人体工程学。
注意:我有一个 M1 mac,它还在工作。