Homebrew は、macOS のパッケージ管理マネージャーです。Homebrew については、弊サイトでも度々紹介していますが、下記リンクにその方法をまとめていますので、ぜひご覧ください。
さて、Homebrew で公開されているパッケージは、定期的にアップグレードを繰り返しています。また、「Formula」と呼ばれる Homebrew のパッケージ管理に必要な情報が定期的に更新されます。とくに、不具合がない限り、現在使用しているパッケージを使用すれば問題ないのですが、できる限り不具合の改修された最新のパッケージを使用したいもの。というわけで、面倒くさがり屋の私は、Homebrew のパッケージについても、自動化してしまいました。
定期的に Homebrew を最新化する
事前に Homebrew のインストール、Homebrew のエラーの確認、terminal-notifier(後述)のインストールを行っておきます。
事前準備
まず、正常に Homebrew がアップデート、アップグレードできる状態であるかどうか、以下のコマンドをターミナルから実行して確認してください。
brew doctor
macOS El Capitan にアップデートしてから、ありがちなのがパーミッション問題。以下のようなエラーが表示されていませんか?
Warning: /usr/local is not writable.
このようなエラーが表示された場合には、下記のコマンドを実行して強制的にパーミッションを書き換えてください。
sudo chown -R $(whoami) /usr/local
terminal-notifier のインストール
terminal-notifier は、文字通りターミナルから macOS の通知を利用して、任意の通知を行ってくれるコマンドです。terminal-notifier は、以下のコマンドを実行してインストールします。
brew install terminal-notifier
たとえば、以下のコマンドを実行すると、60 秒後に terminal-notifier で通知されます。実行に時間のかかるコンパイルなどと合わせて実行すると、終わったことが分かりやすくなり非常に便利です。
sleep 60 && terminal-notifier -message "hoge"
LaunchAgents に登録
最後に、Homebrew を定期的にアップデート、アップグレードするために、以下のファイルをダウンロードして、~/Library/LaunchAgents
に保存します。
launchd
については、以下の記事で詳細を解説しています。ユーザログイン時に、バックグラウンドで実行され、完了すると terminal-notifier により完了したことが通知されます。また、以降は 8 時間毎に定期的に実行されます。
プロパティリスト(.plist)の書き方で注意したいのが、このファイル自体は XML 形式で記述するため、エンティティ文字列(たとえば、&
)は、エスケープする必要があるということです。
以下のコマンドを実行して、launchd
に登録します。
launchctl load ~/Library/LaunchAgents/localhost.homebrew-upgrade.plist
アップデート完了後、以下のダイアログが表示されることを確認してください。