rcmdnk's blog

20210206_homebrew300_200_200

Mac/Linuxのパッケージ管理ツールHomebrewの3.0.0がリリースされました。

メジャーアップデートになりますが、今回はApple Silicon搭載のMacへの対応が メインのアップデートになっています。

Homebrewの歴史

せっかくのメジャーアップデートなのでちょっと過去のアップデートを振り返り。

過去の大きなアップデートは

  • 0.1: 2009年5月21日
  • 1.0.0: 2016年9月21日
  • 2.0.0: 2019年2月2日
  • 3.0.0: 2021年2月5日

となっています。

最初のメジャーリリースは2016年ですが、それより前にかなり使われてた印象はあります。

私自身は2013年頃にGitの最新版を使いたくて入れたようです。

この頃はまだ MacPortsも結構使われていた感じがありました。

Googleによる検索数を見るとこんな感じ。

20210206_trend.jpg

Homebrewの方だけMacとの組み合わせで少し不平等な比較ですが、 Homebrewで探してしまうとビールの自家醸造の話が出てきてしまって2009年以前も多くて雑音が多いのと、 逆にMacPortsの方はMacが入ってるのでわざわざmacports macと入れる人が居なくてそれだと検索数が無いので homebrew macmacportsでの比較ですが、それぞれで相対的な増減を見てもらえれば、と。

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)。

普通にinstalluninstallupdateupgrade 辺りを使う限りは特に問題になることは無いと思います。

Bash/Zsh/Fish用の補完ファイルが自動生成される様になった

Bashの補完ファイルなどだと$(brew –prefix)/etc/bash_completion.d/brewbrewコマンド用の補完設定がありますが、 このファイルが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型にしたい、ということだったようです。

Update shell completions · Issue #10223 · Homebrew/brew

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 --formulabrew list --caskなどで確認します。

まとめ

Homebrewの3.0.0ということで久しぶりの大きなアップデートで遂にApple Silicon搭載のMacに対応ができました。

これでApple Silicon M1搭載のMacを躊躇する理由も無くなったので早く触ってみたいものです。

Sponsored Links
Sponsored Links

« Nature Remo mini v.s. SwitchBotHub mini MH-Z19BとRaspberry Pi Zeroで二酸化炭素濃度を測定する »