Warning: Xcode alone is not sufficient on Mojave.とかxcrun: error: invalid active developer path (/Library/Developer/CommandLineTools)となったときの対応方法

# 事象 : xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools)

- 環境
    - macOS Big Sur バージョン11.1
    - Homebrew 2.7.1

```zsh
% brew update
xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
Updated 3 taps (homebrew/core, homebrew/cask and homebrew/cask-fonts).
#...省略...
```

## 原因 : OSのアップデートでXCodeのCommandLineTools/usrディレクトリのbinディレクトリが紛失したから？
ぐぐってみるていくつかのサイトを見るとOSのアップデート後にちょくちょくあるらしい。

```zsh
# おぉ、エラーメッセージにあるbinディレクトリがない！
% ls -la /Library/Developer/CommandLineTools/usr
total 0
drwxr-xr-x  3 root  wheel  96 12 16 19:42 .
drwxr-xr-x  3 root  wheel  96 12 16 19:42 ..
drwxr-xr-x  3 root  wheel  96 12 16 19:42 share
```

### 対応 : `xcode-select`をインストールする

1. `xcode-select`をインストールする
1. コマンドで表示されたダイアログに従ってインストールする
    - ![スクリーンショット 2020-12-29 20.57.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159761/0920029a-ca3d-29c2-8b71-aea06a21f9a0.png)![スクリーンショット 2020-12-29 20.58.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159761/7838d542-6470-898c-39fa-c91a681f16e2.png)![スクリーンショット 2020-12-29 20.59.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159761/83d0086a-d9d8-731a-2b9c-e1ebb25683ba.png)![スクリーンショット 2020-12-29 21.05.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159761/88b0d67b-e286-69e0-4bbb-91a9920bdad6.png)
1. エラーが消えたか確認する

```zsh
# xcode-selectをダイアログに従ってインストールする
% xcode-select --install
xcode-select: note: install requested for command line developer tools

# エラーが消えたか確認する
% brew update
Updated 1 tap (homebrew/core).
No changes to formulae.
```

# 事象 : Warning: Xcode alone is not sufficient on Mojave.
- 環境
    - macOS Mojave バージョン10.14.5
    - Homebrew 2.1.6

```bash
$ 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: 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: Xcode alone is not sufficient on Mojave.
Install the Command Line Tools:
  xcode-select --install
```

## 原因 : Xcode.appを削除したから
そもそもXcode.appを削除したことがことの始まりだったのだろう・・・。
MacにおいてXcodeは大切なものだったらしい・・・諦めてインストールする。


### 対応 : `xcode-select`をインストールする

1. Command Line Toolsをインストールする
    1. [Appleのサイト](https://developer.apple.com/download/more/)からdmgファイルをダウンロードする![スクリーンショット 2019-06-19 0.35.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159761/93972279-92b3-92e2-6cb3-f267ea056cea.png)![スクリーンショット 2019-06-19 0.37.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159761/6c811a16-dedf-f643-5d7c-bcbcf9b03448.png)
    1. pkgをクリックしてダイアログに沿ってインストールする![スクリーンショット 2019-06-19 0.39.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159761/c8aeda0b-74a7-6e29-570a-4ccdff4f3ccf.png)![スクリーンショット 2019-06-19 0.39.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159761/9cd811c2-5ec7-13b1-d372-7ba57df64b73.png)
1. `xcode-select`をインストールする
    1. コマンドで表示されたダイアログにそって進めてインストールする![スクリーンショット 2019-06-19 0.23.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159761/91c49b08-15ac-1979-c7f5-3d9ebbbb5ee3.png)![スクリーンショット 2019-06-19 0.24.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159761/43702708-9fe5-cb17-9a9a-b17665364e06.png)![スクリーンショット 2019-06-19 0.25.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159761/bd1a250e-904e-cb1c-8423-d58ebefcda7e.png)
1. Warningが消えたか確認する

```bash
# xcode-selectをインストールする
$ xcode-select --install
xcode-select: note: install requested for command line developer tools

# Warningが消えたか確認する
$ brew update
Already up-to-date.
$ brew doctor
Your system is ready to brew.
```

### 失敗した対応 : Xcodeは使わないからアンイストールする
- 最初の考察 : 「Xcodeを使うにはコマンドラインツールが必要」 > 「Xcodeは使わないからアンイストールする」
    - 以前、`Xcode.app`を`/Applications`から削除したが不十分だった模様。
- 考察からの対応 : Xcode関連のファイルを削除していく。
    - 参考
        - [Xcodeを完全にアンインストールする - Qiita](https://qiita.com/UJIPOID/items/015805c89bddca540129)
        - [パスに半角スペースが含まれるfindの結果をgrepしてxargsで削除する方法 - Qiita](https://qiita.com/ponsuke0531/items/f32fae15ed943a264b36)

```bash
# /Library/Preferences/配下
$ find /Library/Preferences/ -type f | grep -i xcode
/Library/Preferences//com.apple.dt.Xcode.plist
$ find /Library/Preferences/ -type f | grep -i xcode | sudo xargs rm
$ find /Library/Preferences/ -type f | grep -i xcode
$

# ~/Library/Preferences/配下
$ find Library/Preferences/ -type f | grep -i xcode
Library/Preferences//com.apple.dt.xcodebuild.plist
Library/Preferences//com.apple.dt.Xcode.plist
Library/Preferences//com.apple.preferences.extensions.XcodeSourceEditor.plist
Library/Preferences//com.apple.preferences.extensions.XcodeSourceControlHost.plist
$ find Library/Preferences/ -type f | grep -i xcode | xargs rm
$ find Library/Preferences/ -type f | grep -i xcode
$ 

# ~/Library/Caches/com.apple.dt.Xcode/配下
$ find Library/Caches/ -type f | grep -i xcode
Library/Caches//com.apple.dt.Xcode/fsCachedData/70D9F1CB-B3B7-4605-AD98-4C911D694D14
Library/Caches//com.apple.dt.Xcode/Cache.db-shm
Library/Caches//com.apple.dt.Xcode/Cache.db-wal
Library/Caches//com.apple.dt.Xcode/Cache.db
$ find Library/Caches/ -type d | grep -i xcode | xargs rm -rf
$ find Library/Caches/ -type f | grep -i xcode
$

# ~/Library/Application Support/com.apple.sharedfilelist/配下
$ find Library/Application\ Support/com.apple.sharedfilelist/ -type f | grep -i xcode | sed -e 's/ /\\ /g'
Library/Application\ Support/com.apple.sharedfilelist//com.apple.LSSharedFileList.ApplicationRecentDocuments/com.apple.dt.xcode.sfl
Library/Application\ Support/com.apple.sharedfilelist//com.apple.LSSharedFileList.ApplicationRecentDocuments/com.apple.dt.xcode.sfl2
$ find Library/Application\ Support/com.apple.sharedfilelist/ -type f | grep -i xcode | sed -e 's/ /\\ /g' | xargs rm
$ find Library/Application\ Support/com.apple.sharedfilelist/ -type f | grep -i xcode
$ 

# ~/Library/Application Support/Xcodeディレクトリ
$ find Library/Application\ Support/ -maxdepth 1 -type d | grep -i xcode
Library/Application Support//Xcode
$ find Library/Application\ Support/ -maxdepth 1 -type d | grep -i xcode | sed -e 's/ /\\ /g' | xargs rm -rf
$ find Library/Application\ Support/ -maxdepth 1 -type d | grep -i xcode
$ 

# ~/Library/Developer/Xcodeディレクトリ
$ find Library/Developer/ -maxdepth 1 -type d | grep -i xcode
Library/Developer//Xcode
$ find Library/Developer/ -maxdepth 1 -type d | grep -i xcode | sed -e 's/ /\\ /g' | xargs rm -rf
$ find Library/Developer/ -maxdepth 1 -type d | grep -i xcode

# ~/Library/Developer/CoreSimulator/配下にはなかった
$ find Library/Developer/CoreSimulator/ -type f | grep -i xcode
$

# 今一度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: 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: Xcode alone is not sufficient on Mojave.
Install the Command Line Tools:
  xcode-select --install

# がーーん、だめだった・・・じゃ、update・・・で悪化していることに気がついた
$ brew update
xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
Updated 3 taps (homebrew/cask-versions, homebrew/core and homebrew/cask).
# 省略
```