Docker for Mac - mkmf.rb无法找到ruby的头文件

时间:2017-09-23 08:34:12

标签: ruby docker

我在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但这不会改变任何内容。

有人知道我该怎么办吗?

谢谢!

11 个答案:

答案 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 /

https://silvae86.github.io/sysadmin/mac/osx/mojave/beta/libxml2/2018/07/05/fixing-missing-headers-for-homebrew-in-mac-osx-mojave/

答案 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