我在Mac上更新了XCode,从那时起使用docker-sync-stack start
启动Docker时出现此错误消息:
mkmf.rb can't find header files for ruby at /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/include/ruby.h
我尝试用以下方法安装ruby:brew install rbenv ruby-build
但这不会改变任何内容。
有人知道我该怎么办吗?
谢谢!
答案 0 :(得分:65)
没有其他解决方案对我有用,这是我为解决Mac OS 10.14.x上的问题而运行的内容:
sudo rm -rf /Library/Developer/CommandLineTools
xcode-select --install
sudo xcodebuild -license accept
open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
答案 1 :(得分:28)
升级XCode时,您需要安装命令行工具并另外接受条款和条件:
sudo xcode-select --install
然后:
sudo xcodebuild -license
答案 2 :(得分:16)
对于 macOS 10.14上的Xcode 11 ,即使在安装Xcode并安装命令行工具并接受许可后,也会发生这种情况
sudo xcode-select --install
sudo xcodebuild -license accept
问题是Xcode 11附带了macOS 10.15 SDK,其中包含ruby2.6的标头,但不包含macOS 10.14的ruby2.3的标头。您可以通过运行
来验证这是您的问题ruby -rrbconfig -e 'puts RbConfig::CONFIG["rubyhdrdir"]'
在带有Xcode 11的macOS 10.14上打印不存在路径
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/include/ruby-2.3.0
但是,Xcode 11在/Library/Developer/CommandLineTools/SDKs/MacOS10.14.sdk
内安装了macOS 10.14 SDK。不必按照其他答案中的建议安装旧的头文件来污染系统目录。相反,通过选择该SDK,将找到适当的ruby2.3标头:
sudo xcode-select --switch /Library/Developer/CommandLineTools
ruby -rrbconfig -e 'puts RbConfig::CONFIG["rubyhdrdir"]'
现在应该可以正确打印
/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/include/ruby-2.3.0
同样,gem install
应该在选择该SDK时起作用。
要切换回使用当前的Xcode 11 SDK,请使用
sudo xcode-select --switch /Applications/Xcode.app
答案 3 :(得分:15)
从Xcode 11开始,似乎不再包含ruby开发标头,因此您需要在Xcode命令行工具之外手动安装它们。
例如用rbenv为我做过
rbenv install 2.6.4
rbenv global 2.6.4
eval "$(rbenv init -)"
然后运行捆绑软件安装,一切按预期进行。
答案 4 :(得分:14)
对于Xcode 11,我还安装了char const [4]
软件包来解决此问题。
答案 5 :(得分:10)
单行命令修复:
在OSX Mojave上,我运行了以下命令:
sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /
它解决了这个问题。
答案 6 :(得分:7)
正如@bdorfman在他的评论中所说,从Xcode 11版本开始,不再包含Ruby标头,但是它们似乎试图为此尽快建立一个新版本(?):{{3} }。
对我有用的是像@bdorfman所说的那样使用rbenv
:
rbenv install 2.6.4
rbenv global 2.6.4
eval "$(rbenv init -)"
但是需要执行额外的步骤,将docker-sync
添加到新的红宝石版本中。由于更改红宝石版本后(例如)
$ ruby -v
ruby 2.6.4p104 (2019-08-28 revision 67798) [x86_64-darwin18]
然后运行gem列表:
$ gem list
bigdecimal (default: 1.4.1)
bundler (default: 1.17.2)
cmath (default: 1.0.0)
csv (default: 3.0.9)
date (default: 2.0.0)
dbm (default: 1.0.0)
did_you_mean (1.3.0)
e2mmap (default: 0.1.0)
etc (default: 1.0.1)
fcntl (default: 1.0.0)
fiddle (default: 1.0.0)
fileutils (default: 1.1.0)
forwardable (default: 1.2.0)
io-console (default: 0.4.7)
ipaddr (default: 1.2.2)
irb (default: 1.0.0)
json (default: 2.1.0)
logger (default: 1.3.0)
matrix (default: 0.1.0)
minitest (5.11.3)
mutex_m (default: 0.1.0)
net-telnet (0.2.0)
openssl (default: 2.1.2)
ostruct (default: 0.1.0)
power_assert (1.1.3)
prime (default: 0.1.0)
psych (default: 3.1.0)
rake (12.3.2)
rdoc (default: 6.1.2)
rexml (default: 3.1.9)
rss (default: 0.2.7)
scanf (default: 1.0.0)
sdbm (default: 1.0.0)
shell (default: 0.7)
stringio (default: 0.0.2)
strscan (default: 1.0.0)
sync (default: 0.5.0)
test-unit (3.2.9)
thwait (default: 0.1.0)
tracer (default: 0.1.0)
webrick (default: 1.4.2)
xmlrpc (0.3.0)
zlib (default: 1.0.0)
(不包含docker-sync)
如果为docker-sync运行gem install,则将docker-sync用于rbenv托管的ruby。
$ gem install docker-sync
答案 7 :(得分:4)
在安装fastlane时,我遇到了同样的问题。 Tadman的答案是正确的,但是命令行不适用于Xcode 10.2.1(我不确定其他版本)。您需要打开Xcode,然后打开“首选项”,选择“位置”,然后选择“命令行工具”。就我而言,“命令行工具”字段为空。
答案 8 :(得分:2)
如果您想对问题进行更深入的了解:
Mac OS X 10.14已停止将包含库放入其 通常的位置,/ usr / include,仅将它们保留在XCode中 目录。
要确认这是问题所在,只需运行
ls /usr/include
。如果 结果是空的,这确实是个问题。Apple随附了一个“旧版安装程序”,供您安装 标头位于“旧位置”。 要解决此问题,请运行以下命令:
sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /
答案 9 :(得分:2)
在终端中运行open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
将打开软件包安装向导。正确安装后,我便可以继续。
MacOS 10.4.4
答案 10 :(得分:0)
打开终端
xcode-select --install
sudo xcodebuild -license accept
curl -L https://get.rvm.io | bash -s stable
关闭并重新打开终端
rvm install ruby-2.6
sudo gem install cocoapods
pod install
完成后在android studio左上角右击项目然后点击Flutter -> Open IOS Module in Xcode