Docker for Mac - mkmf.rb が ruby 用のヘッダファイルを見つけ出せない
質問
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
関連
-
[解決済み] json gem のインストール中にエラー 'mkmf.rb can't find header files for ruby' が発生する。
-
[解決済み] Docker Dockerコンテナからホストへのファイルコピー
-
[解決済み] ホストからDockerコンテナにファイルをコピーする方法は?
-
[解決済み] Dockerでイメージのクリーンビルドを強制する方法
-
[解決済み] Gemfileでrubygemを指定するときの~>と>=の違いは何ですか?
-
[解決済み] JSONファイルへの正しい書式での書き込み方法
-
[解決済み] Rubyでjavaのインターフェースに相当するものは何ですか?
-
[解決済み] Rubyで2つの配列のマージとインターリーブ
-
[解決済み] Rubyで配列の最後の要素を取得するには?
-
[解決済み] WindowsへのRubyGemsのインストール
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Rubyの文字列の中から"˶‾‾‾˵"を削除するにはどうしたらいいですか?
-
[解決済み] JSONファイルへの正しい書式での書き込み方法
-
[解決済み] Rubyでモジュール変数を作成する
-
[解決済み] 今月の名前(Date.today.monthをnameに変換)。
-
[解決済み] Rubyで本当に安いコマンドラインオプションのパース
-
[解決済み] rubyのinjectはreduceと同じ意味ですか?
-
[解決済み] Ruby: selfを拡張する
-
[解決済み] OSX 10.9 MaverickにNokogiriをインストールするとエラーになる?
-
[解決済み] バージョン要件におけるティルデグレータン(~>)の意味?
-
[解決済み] 配列に要素がない場合、その要素を追加します。