概要

macでパッケージ管理をコマンドで行う場合、Homebrewを使うことができます。

Homebrewは、ターミナル上からコマンドを利用してインストールやアップデート、アンインストールなどができますが、これらの操作は、基本的に手動で行う必要があります。

ここでは、アップデートの処理を自動で定期的に実行する方法について紹介します。

環境

  • macOS 12.2.1
  • Homebrew 3.4.0
  • zsh 5.8

自動で実行する方法

Homebrewの標準機能として、インストール時などに更新があるかどうかを確認し、更新があるのであれば自動で更新をする機能があります。しかし、こちらは、自動でやってはくれますが、インストールなどのコマンドを頻繁を実行するわけではないため、いまいちです。できれば、定期的に実行してくれることを希望します。

そこで調べてみると、定期的に自動で更新をする方法として、macOSの機能を利用したものが紹介されていました。

しかし、こちらは自分でそのための設定ファルを作成しなければいけないため、管理の手間など少し面倒です。そこで、ここではHomebrewでインストール可能なものを利用し、なるべく設定などをせずに実行する方法を紹介します。

最初に、GitHubで公開されている外部のフォーミュラ(パッケージ)をインストールします。こちらのフォーミュラが設定ファイルを作成してくれます。

$ brew tap homebrew/autoupdate

次に、こちらのフォーミュラを利用して設定を行います。インストールをすることで、brewコマンドに対してautoupdateが追加されます。次のコマンドを実行して、自動更新の設定を有効にします。

$ brew autoupdate start
Homebrew will now automatically update every 24 hours, or on system boot.

これで、設定は終わりです。次のコマンドで、定期的な実行が設定されているかを確認できます。

$ brew autoupdate status
Autoupdate is installed and running.

Autoupdate was initialised on 03/04/22.

アップデートがあった場合は、通知が来ます。

これらの設定では、あくまでもbrew updateを実行するものであり、brew upgradeは実行しません。もしも、アップグレードまでするのであればさらに、こちらのコマンドを実行します。

$ brew autoupdate start --upgrade
Warning: Please note if you use Casks that require `sudo` to upgrade there
are known issues with that use case and this command unless using
`SUDO_ASKPASS`.

  https://github.com/Homebrew/homebrew-autoupdate/issues/40

Homebrew will now automatically update every 24 hours, or on system boot.

しかし、表示を見てもらえれば分かるように、一部のアップグレードについては管理者として実行しなければならないものがあるため、全てのアップグレードを成功させるためには、SUDO_ASKPASSにパスワードを設定する必要があるようです。

私は、パスワードを設定したくないので、こちらの設定はしていません。

さいごに

なるべく、自分自身で設定ファイルを書きたくないので、今回のフォーミュラを見つけることができ、よかったです。フォーミュラ自体の信頼性などを考える必要はもちろんありますが、GitHubのプロジェクトをみると、しっかりとメンテナンスされているようでした。

みなさんも、是非利用を検討してみてください。