Homebrewがメジャーアップデートして4.0.0になりました。
これまでのアップデート
Homebrew 3.0.0がリリースされたのは2021年の2月で主な変更はM1 Macへの対応でした。
その後、2~3ヶ月おきにマイナーアップデートして3.6.21までリリースされていました。
4.0.0における主な変更
API経由のインストールがデフォルトに
最大の変更点は
公式のFormula、Caskのレポジトリである
Homebrew/homebrew-core、
Homebrew/homebrew-cask
に関しては、デフォルトの動作として、brew install
時に
それらのレポジトリをタップせずに
Homebrew Formulae
からAPIを通じてJSONファイルをダウンロードしてパッケージの情報を取得してインストールするようになった、という点。
これらのレポジトリは大量のファイルを含んでいますが、 Gitレポジトリとしてローカルで管理しているため アップデートがあった際結構アップデートが大変だしローカルディスクの無駄遣いにもつながってしまうことから APIベースの情報管理への移行が進められていました。
この機能自体は3.3.0のときに導入されていて、これまでは
HOMEBREW_INSTALL_FROM_API=1
とするとローカルの情報を使わずにインストールするようになっていました。
4.0.0からはこの設定はなくなり、通常はAPIベースの管理になります。
もしローカルレポジトリでFormulaを管理したい場合には
HOMEBREW_NO_INSTALL_FROM_API=1
を設定しておく必要がありますが、
基本的にはこれは開発者向けで通常はAPIベースが推奨されているようです。
これによって現在タップしてあるhomebrew/core、homebrew/caskは不要になるので、 もしディスクスペースを空けたい場合には
$ brew untap homebrew/core
$ brew untap homebrew/cask
などで削除してしまっても大丈夫です。 手元のmacOSだとcoreが630MBでcaskが382MB程度なので両方消すと1GB程度空けることができるような状態でした。
AUTO UPDATEの間隔の延長
brew install
などのコマンドを打つ際、Homebrewでは定期的に
brew update
が自動で実行されるようになっていて
これまではデフォルトでは5分以内以前のupdate
コマンドが行われてから経った状態だと
再び実行されるようになっていました1。
今後はHOMEBREW_INSTALL_FROM_API=1
の設定がされていなければ
24時間経つまで実行されないようになりました。
これに関しては
HOMEBREW_NO_AUTO_UPDATE=1
を設定しておくと
アップデートしないようになります。
また、HOMEBREW_AUTO_UPDATE_SECS
という値(デフォルト86400)ですきな時間間隔に設定することもできます。
現在もこれらの値は有効ですが、core/Caskのレポジトリのアップデートを含まない場合はそれほど負荷が大きくないのと 24時間間隔がデフォルトになったのでこのあたりは有効にしておいても苦になることはほとんどないようになったようです。
core/caskのFormula/Caskのアップデートに確認は別途行われるようで こちらの間隔は7.5分になっています。
この間隔はHOMEBREW_API_AUTO_UPDATE_SECS
の値(デフォルト450)で変更できます。
Analyticsの移行
HomebrewではGoogle Analyticsを使って どのパッケージがどれだけダウンロードされたか、などの情報を集めています。
特にコマーシャル的に使うとかいうことはこれまでもなかったかと思いますが、 導入された当初は結構いろいろな反応もありました。
これはHOMEBREW_NO_ANALYTICS=1
を設定しておけばオプトアウトできるようにはなっていました。
4.0.0からはセルフホストなヨーロッパにおかれたサーバーにも情報を取得するようになりました。 しばらくはGoogle Analyticsも並行して使いますが、数ヶ月以内に完全に移行するとのことです。
HOMEBREW_NO_ANALYTICS=1
を設定すると両方とも無効にしますが、
HOMEBREW_NO_GOOGLE_ANALYTICS=1
とすればGoogle Analyticsだけを無効にできます。
Google Analyticsだとアメリカにデータを送ることになるのでそれを避けたいというだけならGoogle Analyticsだけを無効にしてくれ、と。
この辺は色々と法律も出来たり難しい状態になっていますが、 Homebrew的には余計な情報を取るのはリスクにしかならないのでよりミニマムな情報だけを 取得するように、かつサーバーもセルフホストで管理できるように、という方向に向かったようです。
その他の気になる変更
brew install --dry-run
でドライランができるようになったbrew docs
でHomebrew Documentationが開かれるようになったbrew doctor --quiet
で何も問題がない場合には何も表示しないようになった- WindowsのWSL1のサポート終了
他にも気になることがあれば以下から。
Homebrew-fileの対応
Homebrew-fileはHomebrewのパッケージをBrewfileで管理し、それをGitHubなどでバージョン管理も行うためのツール。
このなかで、各パッケージのFormulaがどのTapに属しているか、をローカルにあるファイルを用いて確認したりしています。 なのでそれらのTapがなくなると確認が出来ずに無所属のTapになってしまいます。
今後もcore/cask以外の非公式Tapはローカルにcloneされるので、 それらの中に見つからなかったらcore/caskのもの、としてしまってもとりあえずは大きな問題はないかとは思ってます。
一方で、brew file casklist
というコマンドでCaskに関するリストを作れるようになってるんですが、
この中で、Homebrew以外でインストールされたけどHomebrewにCaskがあるもの、を見つけられるようになっています。
ただこれもローカルファイル依存があるのでTapがない状態だとちゃんと見つけられません。
この辺、HOMEBREW_API_AUTO_UPDATE_SECS
とかの設定がある以上、なんらかの情報はローカルにもあるはずでその辺使うか、もしくはAPI経由でリスト取得とか情報取得とかできればそっちに切り替えれば良いんですが、まだその辺ちゃんと見れてないので対応できてない状態です。
追記: 2023/02/18
$(brew --cache)/api
にあたるディレクトリにformula.json、cask.jsonというファイルがダウンロードされるようになっています
(macOSだと**/Users/
また、brew
にはformulae
、casks
というコマンドが(結構前から)追加されていて、これで現在使えるFormula/Caskのリストを取得できますが、
これらはTapのディレクトリを見に行って、もしAPIが有効な場合は上記のjsonファイルも確認するような仕組みになっています。
追記ここまで
今のままでもすぐに大きな問題なく使い続けられると思ってますが、 もし何か問題があったらGitHubのIssueでもTwitterでもこのコメント欄でもいいので教えていただければ、と。
Homebrew-fileの方はちょっとした改変を行ってる途中でその辺一段落したらこのあたりもちゃんと対処していくつもりです。
-
その昔は1分おきでほぼ毎回行うような状態でした。
これが導入された当初は無効化していた人も多かったのではないかと。