1. ホーム
  2. ruby

Docker for Mac - mkmf.rb が ruby 用のヘッダファイルを見つけ出せない

2023-07-16 02:17:44

質問

MacでXCodeをアップデートしたら、それ以降、Dockerを起動するときに 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 としてみたのですが、これでは何も変わりません。

どうすれば直るのか、どなたかご存知ですか?

ありがとうございます。

どのように解決するのですか?

以下のような場合 Xcode 11 on macOS 10.14 で、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では、macOS 10.14のSDKをインストールする際に /Library/Developer/CommandLineTools/SDKs/MacOS10.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