main() blog

プログラムやゲーム、旅、愛する家族について綴っていきます。

【Mac】「xcrun: error: invalid active developer path」の対処法

先日、Node.jsをセットアップする為にbrewからnodebrewをインストールしようした際に、
以下のようなエラーメッセージが表示されてインストールに失敗しました。

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

このエラーはMacのOSのアップデートで起こるようで、
macOS High SierraからmacOS Mojaveにアップデートした後に起こるようになりました。

実際にnodebrewをインストールした際のエラーの状況は以下の通りです。

$ brew install nodebrew
Updating Homebrew...
xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
==> Auto-updated Homebrew!
Updated 1 tap (homebrew/core).
==> New Formulae
dnscontrol      i386-elf-gdb    pict            rargs           websocat
goreman         php@7.2         postgresql@10   sng
==> Updated Formulae
git ✔                                    libxmlsec1
abyss                                    lighttpd
activemq                                 lmod
aircrack-ng                              logstash

    :
    :

librsvg                                  xsimd
libswiften                               you-get
libtins                                  youtube-dl
libuv                                    zola
libvirt
==> Renamed Formulae
hh -> hstr
==> Deleted Formulae
apple-gcc42                gradle@2.14                pldebugger
aptly-completion           php@7.0

xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
Error: An exception occurred within a child process:
  CompilerSelectionError: nodebrew cannot be built with any available compilers.
Install GNU's GCC
  brew install gcc

他のアプリケーションでも問題が起きていないか確認してみます。

$ git --version
git version 2.19.1

gitのバージョンを確認したところgitは問題なく動作しているようです。

brew doctorを確認してみます。
すると以下の様なワーニングが出ているようです。

$ brew doctor
Please note that these warnings are just used to help the Homebrew maintainers
with debugging if you file an issue. If everything you use Homebrew for is
working fine: please don't worry or file an issue; just ignore this. Thanks!

Warning: The following directories do not exist:
/usr/local/sbin

You should create these directories and change their ownership to your account.
  sudo mkdir -p /usr/local/sbin
  sudo chown -R $(whoami) /usr/local/sbin

Warning: "config" scripts exist outside your system or Homebrew directories.
`./configure` scripts often look for *-config scripts to determine if
software packages are installed, and what additional flags to use when
compiling and linking.

Having additional scripts in your path can confuse software installed via
Homebrew if the config script overrides a system or Homebrew provided
script of the same name. We found the following "config" scripts:
  /Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6m-config
  /Library/Frameworks/Python.framework/Versions/3.6/bin/python3-config
  /Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6-config

Warning: Your Xcode is configured with an invalid path.
You should change it to the correct path:
  sudo xcode-select -switch /Applications/Xcode.app

Warning: Broken symlinks were found. Remove them with `brew prune`:
  /usr/local/share/man/man3/*

今回のエラーは「CommandLineToolのパスが見つからない」という内容でしたので、
以下のワーニングを解消する必要がありそうです。

Warning: Your Xcode is configured with an invalid path.
You should change it to the correct path:
  sudo xcode-select -switch /Applications/Xcode.app

以下のコマンドを実行します。

$ sudo xcode-select -switch /Applications/Xcode.app

再度、nodebrewのインストールを試してみます。

$ brew install nodebrew
==> Downloading https://github.com/hokaccha/nodebrew/archive/v1.0.1.tar.gz
==> Downloading from https://codeload.github.com/hokaccha/nodebrew/tar.gz/v1.0.1
######################################################################## 100.0%
==> Caveats
You need to manually run setup_dirs to create directories required by nodebrew:
  /usr/local/opt/nodebrew/bin/nodebrew setup_dirs

Add path:
  export PATH=$HOME/.nodebrew/current/bin:$PATH

To use Homebrew's directories rather than ~/.nodebrew add to your profile:
  export NODEBREW_ROOT=/usr/local/var/nodebrew

Bash completion has been installed to:
  /usr/local/etc/bash_completion.d

zsh completions have been installed to:
  /usr/local/share/zsh/site-functions
==> Summary
🍺  /usr/local/Cellar/nodebrew/1.0.1: 8 files, 38.6KB, built in 6 seconds

「xcrun: error: invalid active developer path」が解消できて、
nodebrewがインストールできました。

他のサイトですと以下のコマンドでもCommanLineToolのインストールが行えるとのことです。
上記の方法でうまくいかない場合は試してみてください。

$ xcode-select --install