Homebrewの2.0.0が2月の2日にリリースされました。
今回の目玉は今までLinuxbrewとして独立して開発されていたLinux用 HomebrewがHomebrew本体に統合されました。
その他にも結構いろいろと変わっているのでちゃんと見ておいたほうが良さそうです。
Homebrew 2.0.0
Linuxbrewとの統合
まずはLinuxbrewの統合です。
これまでLinuxbrew/brew でHomebrewの機能を取り込んでいく形でLinux用に 別途開発が進められていましたが今回のアップデートで Homebrewの中にLinux用の機能も含まれました。
$ sh -c "$(curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/install.sh)"
でインストールするとLinuxbrew/brew ではなく、Homebrew/brew がインストールされるようになっています。
インストールスクリプト自体は独立に Linuxbrew/install を使います。ただこれも Homebrew/install をForkしたもので、Linuxbrew版の方ではMacかLinuxか判断する様な内容もあるので その辺がきちんとできるようになったら Homebrew/install へ統合されるんじゃないかと思います。
今、Linux上でHomebrew版を走らせると
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
To install Linuxbrew, paste at a terminal prompt:
sh -c "$(curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/install.sh)"
と、Linuxbrew版を使ってください、と出ます。
また、Formulaに関しては Linuxbrew/homebrew-cor という Homebrew/homebrew-core とは別のものになるのでちょっと注意が必要です。
Homebrew@Linuxについてはまたちょっと別にまとめます。
公式Formulaからはオプションがなくなった
これまで、
$ brew install vim --with-lua
みたいな感じでオプションが使えました。
今回の変更ではHomebrew自体にはこの機能は残っているものの、 Homebrew/homebrew-core にある公式のすべてのFormulaからオプションが削除されました。
基本的に付加的な機能をつける様なオプションはそのまま入るようになった形なので
それほど心配ないと思います。
Vimの場合だとLuaはrequired
でLuaのインストールとLua入のVimのインストールがbrew install vim
で行われます。
ただ、場合によっては今まで使っていたものと違うものになっている可能性もあるので 今までオプションを使ってインストールしていたものがある場合はちょっと注意が必要です。
もし、公式の状態と違う状態で入れたい場合には、それ専用に作られた サードパーティーのFormulaなり自作Formulaで入れる事になります。
ただ、--HEAD
オプションだけは残っています。
HomebrewではFormulaでデフォルトで提供されるものはすでにコンパイルを行い直接配布していますが、 オプション付きの場合はソースからコンパイルする必要があります。
これがテストを行う際にきちんと確認できず大変だった、ということで 開発者側の意向という部分が大きいようです。
これに関連して、 詳しくは調べてないんですが homebrew-file で作っているBrewfileの中でオプションが正しく保存されていない可能性があります。
公式のものからはすべてオプションが消えていますが、 自作で作っていたものに関してオプションが消えていました。
どこかの段階でHomebrewがbrew info
でただしくオプションを表示しなくなっていたとか
なにかあったのかな、と思うのですが
もしHomebrew-fileを使っていてかつオプションを使っているサードパーティー/自作
Formulaがある場合はちょっとチェックしてみてください。
cleanupが30日ごとに行われるように
brew install
などした際にbrew cleanup
が自動的に行われる様になりました。
デフォルトでは30日ごとに1回起動されるような設定になっています。
これを無効にするには
export HOMEBREW_NO_INSTALL_CLEANUP=1
とします。(実際にはこの変数が定義されてればいいので1でなくてもいいです。)
Homebrewではパッケージをダウンロードしてコンパイルしたりもしますが、 前のバージョンのものは基本的には消さないので 特にCaskとかの場合、でかいアプリの古いファイルがそのまま残ってたりして かなりのディスクを占めている場合があり不満があったようです。
ということで30日ごとにそういったものは削除するようになりました。
(もちろんbrew
関連の(アン)インストール/コマンドをなにか打たない限りは実行されませんが。)
この変更に関連して、brew upgrade --cleanup
などの--cleanup
オプションが削除されました。
Error: Calling 'brew upgrade --cleanup' is disabled! There is no replacement.
また、HOMEBREW_UPGRADE_CLEANUP=1
をセットすることで--cleanup
オプション無しでも
アップグレード時に自動でクリーンアップすることが出来ましたがこれも無効になりました。
Error: Calling 'HOMEBREW_UPGRADE_CLEANUP' is disabled! There is no replacement.
[ERROR]: Failed at command: command brew upgrade --fetch-HEAD
こちらは設定してあると常にこのエラーが出るので.bashrcなどを見直す必要があります。
まとめ
今回はLinuxbrewとの統合が大きく取り立てられてる感がありますが、 Macで使ってる人にとってはオプションがなくなったことがかなり大きい影響がある可能性があります。
これまでオプション付きでインストールしたものがある人は
brew info
でみたりbrew cat
でFormulaそのものを見るなりして
きちんと必要なものがインストールされるのかどうか確かめる必要があると思います。