![](/img/trans.png)
[英]Failing installing pg gem, “mkmf.rb can't find header files for ruby” (Mac OSX 10.6.5)
[英]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,其中包括 ruby2.6 的頭文件,但不包括 macOS 10.14 的 ruby2.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,將找到適當的 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
其他解決方案都不適合我,這是我在 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 /
在終端中運行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.