簡體   English   中英

Docker for Mac - mkmf.rb 找不到 ruby​​ 的頭文件

[英]Docker for Mac - mkmf.rb can't find header files for ruby

我在 Mac 上更新了 XCode,從那時起,當使用docker-sync-stack start啟動 Docker docker-sync-stack start我收到此錯誤消息:

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但這不會改變任何東西。

有人知道我該如何解決嗎?

謝謝!

對於macOS 10.14 上的 Xcode 11 ,即使在安裝 Xcode 和安裝命令行工具並接受許可證后,也會發生這種情況

sudo xcode-select --install
sudo xcodebuild -license accept

問題是 Xcode 11 提供了 macOS 10.15 SDK,其中包括 ruby​​2.6 的頭文件,但不包括 macOS 10.14 的 ruby​​2.3。 您可以通過運行來驗證這是您的問題

ruby -rrbconfig -e 'puts RbConfig::CONFIG["rubyhdrdir"]'

在 macOS 10.14 和 Xcode 11 上打印不存在的路徑

/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,將找到適當的 ruby​​2.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

其他解決方案都不適合我,這是我在 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

升級 XCode 時,您需要安裝命令行工具並另外接受條款和條件:

sudo xcode-select --install

然后:

sudo xcodebuild -license

從 Xcode 11 開始,似乎不再包含 ruby​​ 開發頭文件,因此您需要在 Xcode 命令行工具之外手動安裝它們。

例如,對我來說,我使用了 rbenv

rbenv install 2.6.4
rbenv global 2.6.4
eval "$(rbenv init -)"

然后運行 ​​bundle install ,一切都按預期工作。

對於 Xcode 11,我還通過安裝/Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg包解決了這個問題。

單行命令修復:

在 OSX Mojave 上,我運行了以下命令:

sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /

它解決了這個問題。

我在安裝 fastlane 時遇到了同樣的問題。 tadman 的回答是正確的,但命令行不適用於 Xcode 10.2.1(我不確定其他版本)。 您需要打開 Xcode,然后打開 Preferences,選擇 Locations 並選擇 Command Line Tools。 就我而言,命令行工具字段為空。

正如@bdorfman在他的評論中所說,從 Xcode 11 版本開始,Ruby 頭文件不再包含在內,但他們似乎試圖盡快為此構建一個新版本(?): https : //discuss.circleci.com/ t/xcode-11-gm-seed-2-released/32505/12

對我rbenv像@bdorfman 所說的那樣使用rbenv

rbenv install 2.6.4
rbenv global 2.6.4
eval "$(rbenv init -)"

但是通過將docker-sync添加到新的 ruby​​ 版本的額外步驟。 因為在您更改 ruby​​ 版本之后(例如)

$ ruby -v
ruby 2.6.4p104 (2019-08-28 revision 67798) [x86_64-darwin18]

然后運行 ​​gem list:

$ 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,您將為 rbenv 管理的 ruby​​ 使用 docker-sync。

$ gem install docker-sync

如果你想更深入地了解這個問題:

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/

在終端中運行open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg打開包安裝向導。 正確安裝后,我就可以繼續了。

macOS 10.4.4

打開終端

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->在Xcode中打開IOS模塊

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM