HomeBrewの1.9.0アップデートを掘り下げてみる

macOS用パッケージマネージャHomeBrewにて大きめのアップデートが行われました。

更新内容が実際にどんなものなのか、1つ1つ掘り下げてみることにします。

1.9.0アップデート

Homebrew 1.9.0

Homebrew 1.9.0 has beta support for Linux and Windows 10 ...

LinuxとWindows10(Windows Subsystem for Linux)を、Linuxbrewを通してベータサポートしました。ルート権限でのアクセスは必要としません。詳細はLinuxbrew.mdに記載されています。

% sh -c "$(curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/install.sh)"
% test -d ~/.linuxbrew && eval $(~/.linuxbrew/bin/brew shellenv)
% test -d /home/linuxbrew/.linuxbrew && eval $(/home/linuxbrew/.linuxbrew/bin/brew shellenv)
% test -r ~/.bash_profile && echo "eval \$($(brew --prefix)/bin/brew shellenv)" >>~/.bash_profile
% echo "eval \$($(brew --prefix)/bin/brew shellenv)" >>~/.profile

実行手順は以下のようになります。

% brew install hello

macOSと同じ手順で実行できるようになるところが大きなポイントでしょう。

brew cleanup is run periodically if ...

brew cleanupはHOMEBREW_INSTALL_CLEANUPに値が設定されている場合は定期的に実行されるようになりました。古いformulaによるディスクスペースの占有を、意識せずに解消可能になります。

また、formulaの

  • reinstall
  • install
  • upgrade

時にcleanupするトリガーとしても機能します。

brew upgrade --cleanupHOMEBREW_UPGRADE_CLEANUPの定義時動作はHOMEBREW_INSTALL_CLEANUP設定での動作に置き換わることになります。これは2.0.0で標準となります。

Homebrew 1.9.0 no longer runs on 32-bit Intel CPUs.

32bitのIntelCPU(Intel Core DuoとIntel Core Solo)上での動作を対象としなくなります。

brew update no longer migrates legacy keg symlinks,...

update時のレガシーなkegの移行(シンボリックリンク・tap name・リポジトリ位置・キャッシュ位置あるいはキャッシュエントリ)が行われなくなります。

該当するkegについては見当がつきませんでした。

brew prune has been replaced by and is now run as part of brew cleanup.

brew prunebrew cleanupの一部として置き換えられます。

個別にpruneを実行する必要がなくなるわけです。

brew cask --version has been replaced with brew --version and brew cask search with brew search --cask.

brew cask --versionがbrew --versionに置き換わり、brew cask searchbrew search --caskに置き換わります。

% brew --version
Homebrew 1.9.0
Homebrew/homebrew-core (git revision e00f; last commit 2019-01-10)
Homebrew/homebrew-cask (git revision e704; last commit 2019-01-10)

The HOMEBREW_BUILD_FROM_SOURCE environment variable has been deprecated...

HOMEBREW_BUILD_FROM_SOURCEは非推奨となりました。--build-form-sourceを個別インストール時にわたすことが推奨されます。

必要になるケースとしては以下の記事が参考になります。

brew install on macOS uses the same CFLAGS for bottles and building from source.

macOS上でのbrew installはbottleとソースからのビルド(--build-from-source)時に同じCFLAGSを使うようになります。

Homebrew/homebrew-core requires all formulae to be open source by the OSI definition.

homebrew-coreはすべてのformulaeにOpen Source Initiativeのオープンソースであることを要求します。

バイナリのみのformulaeはhomebrew/caskにすべきということでしょう。

Our policy is that formulae in the core tap (homebrew/core) must be open-source with an OSI-approved license and either built from source or produce cross-platform binaries (e.g. Java, Mono). Binary-only formulae should go to homebrew/cask.

via:https://github.com/Homebrew/brew/blob/master/docs/Acceptable-Formulae.md

brew link --force will not link software already provided by macOS.

brew link --forceはmacOSで既に提供されているソフトウェアにはリンクしなくなります。

brew link openssl --forceが失敗すること等も背景にあるようです。

まとめ

色々と思い切った更新が入った感じです。LinuxやWindowsがサポート対象になる点で反響が多かったようですが、それ以外の点でもmacOSでHomeBrewを使っている人には色々とインパクトがあると思われます。

homebrewが前提となっている手順書等が存在する場合は、一度見直した方がよいかもしれません。