bundle installの際に『An error occurred while installing nokogiri』エラーが発生した時の対処法【 Homebrew】


bundle installを行った際に、以下のエラーが発生したので、解決法を備忘録として残します。

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
An error occurred while installing nokogiri

環境

Rails 5.2.3
ruby 2.5.1
MacOS Catalina 10.15.1

brew doctorでHomebrewの状況を確認

原因を調べたところ、Homebrewに問題がありそうでした。
なのでまずはHomebrewの状況を確認。

参考:https://qiita.com/SonoT/items/060c21e9866d5d9603e3

$ brew doctor

すると以下のWarningが返ってきました。

Warning: No developer tools installed.
Install the Command Line Tools:
  xcode-select --install

xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun


Warning: Broken symlinks were found. Remove them with `brew cleanup`:

Warningを一つずつ解消していく

Warningの内容を一つずつ潰していきます。
と言っても、Warningに書いてある通りのコマンドを実行しただけです。

Warning: No developer tools installed.

一つ目のWarning

Warning: No developer tools installed.
Install the Command Line Tools:
  xcode-select --install

xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun

「developer tools がインストールされていないので、the Command Line Toolsをインストールしなさい」と書いてあります。
その下に入力すべきコマンドも表示されています。

これをそのままターミナルで入力

$ xcode-select --install

ポップアップが出てくるのでインストールをクリックします。

インストールにはだいぶ時間がかかるので注意してください。
僕は一度インストールに失敗しましたが、2回目で成功しました。

Warning: Broken symlinks were found.

二つ目のWarning
参考:https://qiita.com/6592sho/items/b24766e203fb7a48b056

Warning: Broken symlinks were found. Remove them with `brew cleanup`:

「壊れたsymlinksがあるので、それらを取り除いてください」と書いてあります。
こちらも一緒に表示されているコードをそのままターミナルで入力します。

$ brew cleanup

このコマンドでHomebrewの古いformula(パッケージ)を削除しているようです。
参考:https://qiita.com/vintersnow/items/fca0be79cdc28bd2f5e4

これで上記二つのWarningが解消されました。

$ brew doctor

二つのwarningが消えているはずです。

ターミナルを一度閉じて、bundle installを行ったら無事コマンドが通りました。

まとめ

bundle installで『An error occurred while installing nokogiri』エラーが発生した時の対処法をまとめるとこうなります。

①$ brew doctorでHomebrewの状況を確認
②出力されたWarningの内容を確認
③表示されたコマンドを入力してWarningを一つずつ解消