Mac/Linuxのパッケージ管理ツールHomebrewの3.0.0がリリースされました。
メジャーアップデートになりますが、今回はApple Silicon搭載のMacへの対応が メインのアップデートになっています。
Homebrewの歴史
せっかくのメジャーアップデートなのでちょっと過去のアップデートを振り返り。
過去の大きなアップデートは
となっています。
最初のメジャーリリースは2016年ですが、それより前にかなり使われてた印象はあります。
私自身は2013年頃にGitの最新版を使いたくて入れたようです。
この頃はまだ MacPortsも結構使われていた感じがありました。
Googleによる検索数を見るとこんな感じ。
Homebrew
の方だけMac
との組み合わせで少し不平等な比較ですが、
Homebrew
で探してしまうとビールの自家醸造の話が出てきてしまって2009年以前も多くて雑音が多いのと、
逆にMacPortsの方はMac
が入ってるのでわざわざmacports mac
と入れる人が居なくてそれだと検索数が無いので
homebrew mac
とmacports
での比較ですが、それぞれで相対的な増減を見てもらえれば、と。
MacPortsの方が先に作られていたので2013年ころまではよく使われていて、逆にそれ以降は Homebrewがよく使われる様になっています。
MacPortsの方は最近全く見てませんでしたが、開発は続いているようです。
Homebrewに話は戻って、メジャーリリースに何が変わったか。
1.0.0のときの大きな変更は、 /usr/local/以下に直接ファイルを展開していた状態を、 /usr/local/Homebrewの下にインストールした上で/usr/local/binなどにシンボリックリンクを貼る、という変更。
2.0.0の時はLinuxbrewとの統合が大きな変更でした。
3.0.0ではApple Silicon搭載のMacへの対応、ということです。
2.0.0と3.0.0ではバックワードコンパチビリティはある程度保たれていると思いますが、 どちらも強く期待されていたアップデートということでメジャーアップデートとしているようです。
3.0.0のところでもいくつかコマンドが削除されたりはしてますが、 そういったことはマイナーアップデートのところでも起こってるので。。。
3.0.0での目玉アップデート
3.0.0での目玉はApple Silicon搭載Macへの対応。
/usr/loca/Homebrewへのインストールがセキュリティの問題で出来なくなっているので インストール先は/opt/homebrewに変更になります。
なんですが、 残念ながら手元にApple Silicon M1の載ったMacが無いので 個人的にはこの辺まだわかってないところです。
3.0.0でのその他のアップデート
ということで、その他のアップデートでユーザー側として影響がありそうなものを見ていきたいと思います。
以下以外にもいくつかアップデートが含まれていますが、その辺まで知りたい場合は リリースノート参照。
新しい設定: HOMEBREW_BOOTSNAP
export HOMEBREW_BOOTSNAP
と、この変数を定義しておくと、
Shopify/bootsnap
を使ってbrew
コマンド(コア部分はRubyで実装されている)の実行を高速化してくれます。
ただし、現状ではApple Silicon搭載のMacや、
Homebrewでruby
をインストールしている場合には高速化されません。
macOSにもともと入っているrubyがPATHの最上位にくる場合に限り、 ということなので、rubyをHomebrewでインストールしている場合には使えません、残念。
ただ、そのうち対応するかもしれないし、設定しておいても悪さはしない様なので、 今のうちから設定しておいても良いかな、とは思います。
いろいろなコマンドが削除された
何が削除されたか、はちゃんとまとまってないので要確認、ですが、
ファイルの変化だけ見ると古いcask系のコマンドに関するものが消されている、といった感じでした。
(もともとcask
は使えないようになってましたが
1)。
普通にinstall
、uninstall
、update
、upgrade
辺りを使う限りは特に問題になることは無いと思います。
Bash/Zsh/Fish用の補完ファイルが自動生成される様になった
Bashの補完ファイルなどだと$(brew –prefix)/etc/bash_completion.d/brew
にbrew
コマンド用の補完設定がありますが、
このファイルがbrew update
のたびに自動で生成、アップデートされる様になった、とのことです。
新しいコマンド: brew completions
こちらは上のbrew
用の補完ではなく、他のパッケージがそれぞれでインストールする
補完ファイル管理に関するものです。
homebrew-file なんかでも補完ファイルを入れてますが、 今回の設定によると、その様なサードパーティー製のパッケージの補完ファイルに関しては opt-in型になって、デフォルトではインストールされないようになる、と。
$ brew completions --help
Usage: brew completions [subcommand]
Control whether Homebrew automatically links external tap shell completion
files. Read more at https://docs.brew.sh/Shell-Completion.
brew completions [state]:
Display the current state of Homebrew's completions.
brew completions (link|unlink):
Link or unlink Homebrew's completions.
-d, --debug Display any debugging information.
-q, --quiet Make some output more quiet.
-v, --verbose Make some output more verbose.
-h, --help Show this message.
Ref: Homebrew Shell Completion — Homebrew Documentation
なんですが、正直動作がわかってないです。
もともと使えない古い補完があるのが嫌で、サードパーティー製の補完コマンドをopt-in型にしたい、ということだったようです。
Bashとかだと$(brew –prefix)/et/bash_completion.d/の下にリンクされるかどうか、という話になります。
が、いくつか試してみたものの、
$ brew completions state
Completions are not linked.
の状態で新たにインストールしたものもbash_completions.dの下にリンクが貼られていました。
ただ、これ、デフォルトでopt outされた状態になってますが、 余計な補完があって困る、よりも、補完があると思ってたのに補完ファイルがインストールされてない方が嫌だと思う人もいると思うので、 3.0.0にアップグレードしたらすぐに
$ brew completions link
を実行しておいた方が良いのではないかな、と個人的には思います。 パッケージごとに選べるわけでもないので補完使いたければそうするしか無い気がする。
というか、使わないなら単に$(brew --prefix)/etc/bash_completions.d/
の中を
読まないようにすればよいだけな気がする。
それこそ好きなものだけ読むように手動設定することも出来るし。
なんかコマンドの内容を勘違いしてる気はするのでまた理解できたらアップデートします。
brew updateでよりうまいことサーバー側のブランチの変更を扱う
これはGitHubでデフォルトブランチ名がmaster
からmain
に変わったことで、
brewのレポジトリでも変更する予定で
その準備、ということだと思います。
(まだmaster
を使っている状態。)
brew untapしたものは自動でtapしないように
homebrew-cask などはパッケージを探して見つからないときなどに 自動でインストールしてその中から改めてパッケージを探す、という ことが行われます。
他にもいくつか公式パッケージの中には自動でtapされるものがあります。
ただ、敢えてCaskは使わない、と決めてhomebrew-caskをuntapした状態で、 Formulaを探そうとして、見つからないときとかに毎回homebrew-caskが勝手に tapされるのは嫌だな、ということ。
そこで3.0.0からユーザーが手動でuntap
したらそれを覚えておいて、
勝手に再度tap
するようなことはなくなる、ということです。
新しいコマンド: brew casks
インストール可能な Cask一覧を見るためのコマンド。 (Caskファイルがインストールされているものの一覧。)
brew formulae
というFormula一覧を見るコマンドも以前追加されていたようです。
実際にインストールされているものはbrew list --formula
、brew list --cask
などで確認します。
まとめ
Homebrewの3.0.0ということで久しぶりの大きなアップデートで遂にApple Silicon搭載のMacに対応ができました。
これでApple Silicon M1搭載のMacを躊躇する理由も無くなったので早く触ってみたいものです。