xcrun: error: invalid active developer path: how to fix
Mac OSでコマンドラインコマンドを入力する際、上記のようなエラーが出ることがある。 対処法は簡単だ。 知っておく必要があるのは、なぜエラーが発生するのか、ということで、開発の勉強をしているのであれば、先に進む前に原因のセクションを読んでおくことをお勧めする。
1. 回避策
まずは回避策から。
ターミナルに次のように入力し、Enterキーを押してください。
xcode-select --install
開いたウィンドウで、Installボタンをクリックします。
最後に、ライセンスウィンドウのOKボタンをクリックすると、インストールが進みます。 インストールが終了したら、同じコマンドを入力するとエラーなく実行されます。
2. 原因
エラーを修正したので、なぜエラーが起こるのかを見てみましょう。エラーそのものから始めると、以下のようになります。
$ python3
xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
python3というコマンドを入力したが、
xcrunがないというエラーメッセージが出た。xcrun
はどこから来たのですか?
2.1. xcrun
manpagezはこのように説明している: (opens in a new tab)
アイデアを与えるために、xcrun
がすることは、私のマシンにインストールされている多くのPythonの中からXcodeが使用するバージョンのPythonを実行することです。
CommandLineToolsに付属しているPythonのバージョンを実行することだ。
xcrun`が実行するバージョンは、Mac OSが現時点で我々のオペレーティング・システムに最適だと考えているものだ。
もちろん、あなたの考えはシステムに優先する。
だから、xcrunはすべてのPATH
を探索した後に実行される。
知らない人のために、CLIコマンドとPATH
の関係を説明しておく。
2.2. CLIとPATH
PythonインタプリタのようなCLIから実行されるプログラムは、コンピュータ上のどこにでも存在できます。
それは /opt/homebrew/bin/python3
にあるかもしれないし、 /usr/bin/python3
にあるかもしれない。
このプログラムを実行するには、/
で始まるトップレベルのディレクトリに入る必要がある。
PATH
は、これらの接頭辞付きのディレクトリアドレスを省略できるようにするものである。
PATH
に目的のディレクトリを指定すると、コンピュータは自動的にそのフォルダの中にある python3
実行ファイルを見つけて実行します。
私のコンピュータの PATH
は以下のコマンドで見つけることができる。
echo $PATH
以下のように、複数のパスが出力されるはずだ。
出力された複数の PATH
の先頭に行き、python3
の実行ファイルが存在すればそれを実行し、最後に存在しなければ見つからなかったというメッセージを出力します。
このメッセージを確認するために、マシンに存在しない python4
を実行してみよう。
xcrun
が行うことは、上記のすべてのPATH
を見つけ、OSとXcodeのためにインストールされているpython3
の実行ファイルを見つけて実行することです。
2.3. Mac OS のアップデート
xcrun
もその一部であるCommandLineTools自体がMac OS用に最適化されたアプリケーションのセットであるため、CommandLineToolsとMac OSのアップデートは密接に関係しています。
Mac OSのアップデートにCommandLineToolsのアップデートが含まれていることがある。
これにより、Mac OS のアップデートが xcrun
のディレクトリ設定を混乱させたり、リセットさせたりするバグが発生する。
上記の回避策は、CommandLineToolsのクリーンインストールで初期化されたプログラムを修復したり、破損したパスを元に戻したりするのに有効です。 回避策は簡単だが、xcrunについて調べたり、Mac OSがどのように動作するのかを知るのは楽しかった。
