環境
事象
正確に言うと以下のようなメッセージが表示されてbrew install
が使えなくなりました。
xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
解決法
上記のエラーメッセージで検索すると、gitが使えない!という内容の記事がたくさん見つかりました。
Mac OS Sierraにしたらgitコマンド、ターミナル上にエラーが出てしまった。 - Qiita
El Capitanにしたらgitコマンド(CUI)が動かなくなった。 - Qiita
上記の記事を参考に、xcode-selectコマンドを実行することで無事解決できました。
$ xcode-select --install
上のコマンドは何?
Xcode Command Line Tools
をインストールするもの。
このツールがあることでgit
やgcc
やmake
といったコマンドが使えるようになります。
Xcode本体に付属していますが、iOSアプリ開発をしないならCLIを単体で入れた方が数GB容量を節約できます。
OSがアップデートされるたびにCLIも入れ直す必要があるみたいですね。
なぜbrew install
が使えなくなったのか?
brew
コマンド自体は自分でバイナリインストールしたはずなのでCLIは一見関係なさそうなのが心に引っかかりました。
homebrewの仕組みを調べて見たところ、install
の内部ではmake install
を実行しているようでCLIに入っているmake
が使えないことが原因だったみたいです。
class Wget < Formula homepage "https://www.gnu.org/software/wget/" url "https://ftp.gnu.org/gnu/wget/wget-1.15.tar.gz" sha256 "52126be8cf1bddd7536886e74c053ad7d0ed2aa89b4b630f76785bac21695fcd" def install system "./configure", "--prefix=#{prefix}" system "make", "install" end end
最後に:CLIのバージョンを確認する方法
brew --config
出力結果のCLI
を参照します。
$ brew --config HOMEBREW_VERSION: 1.3.9 ORIGIN: https://github.com/Homebrew/brew HEAD: 4f5e938a5dbe049e05dea19495b6547acc5c5b5b Last commit: 4 days ago Core tap ORIGIN: https://github.com/Homebrew/homebrew-core Core tap HEAD: 2dfcf690f03253ad124dc1c8dae46ef0e82c98c6 Core tap last commit: 5 hours ago HOMEBREW_PREFIX: /usr/local CPU: quad-core 64-bit broadwell Homebrew Ruby: 2.3.3 => /usr/local/Homebrew/Library/Homebrew/vendor/portable-ruby/2.3.3/bin/ruby Clang: 9.0 build 900 Git: 2.13.6 => /Library/Developer/CommandLineTools/usr/bin/git Curl: 7.54.0 => /usr/bin/curl Perl: /usr/bin/perl Python: /usr/local/opt/python/libexec/bin/python => /usr/local/Cellar/python/2.7.14/Frameworks/Python.framework/Versions/2.7/bin/python2.7 Ruby: /Users/manami/.rbenv/shims/ruby => /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/bin/ruby Java: 1.8.0_121 macOS: 10.13.1-x86_64 Xcode: 9.1 CLT: 9.1.0.0.1.1508540944 X11: N/A
このトラブルを通じてGNU Makeに興味が出てきたのでさらに勉強してみようー