Homebrew 6.0.0 リリースノート

Homebrew 6.0.0 は強化されたセキュリティとパフォーマンスを導入

Homebrew 6.0.0 は、新しいタップ信頼メカニズムと Linux サンドボックスによりサプライチェーンリスクの軽減に注力し、デフォルトの内部 JSON API によって更新速度を大幅に向上させます。このリリースでは macOS 27(Golden Gate)への初期サポートを導入し、brew bundle の機能も拡張されました。

セキュリティ強化

タップ信頼メカニズム

Homebrew 6.0.0 は、サードパーティタップに対して任意のサンドボックス化されていない Ruby コードの実行を防止するための必須信頼モデルを実装します。タップおよびタップに適格な formula や cask は、コードが評価または実行される前に明示的に信頼されなければなりません。公式の Homebrew タップはデフォルトで信頼されたままです。

主な技術的変更点は次のとおりです:

  • Enforcement: 信頼されていないタップはコード実行前にフラグが付けられ、信頼されていないタップの自動タップは無効化されます。
  • Management: 新しい brew tap コマンドにより、ユーザーは信頼を管理でき、リモート URL を介したタップの信頼も可能です。
  • Integration: brew bundletrusted: オプションを尊重するようになり、brew bundle dump は信頼されたエントリを記録します。

Linux サンドボックス

Linux を macOS と同等にするため、Homebrew はビルド、テスト、ポストインストールフェーズで Bubblewrap sandbox を利用するようになりました。現在、開発者向けにデフォルトで有効化されています。この実装には、強化されたインストールフェーズとサンドボックス化された cask 実行フックが含まれます。

セキュリティアドバイザリと修正

このリリースでは、3 つの重大なセキュリティ脆弱性に対処しています:

  • GHSA-7699-qf8c-q47m: POST ダウンロード戦略におけるバイパスを修正し、HTTPS から HTTP へのリダイレクト保護が無視される問題を解決しました。
  • GHSA-6689-q779-c33m: macOS の .pkg ポストインストールにおける Git フックを介したルートコード実行脆弱性を修正しました。
  • GHSA-59v8-x8q4-px5c: macOS インストーラーパッケージがユーザー制御の /var/tmp plist を信頼していた脆弱性を修正し、ローカル攻撃者が Homebrew の所有権を取得できる可能性を排除しました。

パフォーマンスとインフラストラクチャ

デフォルトの内部 JSON API

内部 JSON API がデフォルトとなり、従来のオプトイン方式(HOMEBREW_USE_INTERNAL_API は廃止予定)に取って代わりました。メタデータを単一のダウンロードに統合することで、Homebrew はネットワークリクエストを削減し、更新プロセスを高速化します。

全般的な速度向上

ユーザーは複数の領域で高速化を実感できるでしょう:

  • Startup: Ruby ライブラリのロードと一般的な起動ロジックの調整。
  • Command Speed: brew leaves が約 30% 高速化。
  • Upgrade Process: アップグレード時にボトルタブの取得を並列化。

機能アップデート

brew bundle の改善

brew bundle は大幅に機能が拡張されました:

  • Parallel Installation: Formula のインストールがデフォルトで並列ジョブで実行されるようになりました。
  • New Extensions: npmkrew、Windows の winget のサポートを追加。
  • Enhanced Cleanup: npmcargogouv 拡張のクリーンアップサポートを追加。

ユーザーエクスペリエンスとデフォルト設定

ユーザー調査に基づき、Homebrew は透明性を高めるためにいくつかのデフォルト設定を変更しました:

  • Ask Mode: 開発者向けのデフォルトになりました。brew installbrew upgrade は依存関係の概要を表示し、続行前に確認が必要です。
  • brew info: 出力がより一貫性を持ち、新しい「Binaries」セクションで実行ファイルを一覧表示し、再帰的なランタイム依存情報が明確になりました。

新しいコマンド

  • brew exec: npx に似た新しいコマンドで、formula の環境をサポートします。
  • brew vulns: インストール済みパッケージの既知の脆弱性をチェックする新しい tap とサブコマンドです。
  • brew as-console-user: MDM や root 環境下で Homebrew を正しく実行するために設計されています。

プラットフォームサポートと廃止予定

macOS 27 (Golden Gate)

Homebrew は macOS 27 の初期サポートを追加しました。特に、macOS 27 が Intel サポートを終了するため、Homebrew は macOS Intel x86_64 の段階的廃止を行います:

  • 2026年9月: Tier 3 に移行(CI サポートなし、新しいバイナリボトルなし)。
  • 2027年9月: 完全にサポート終了。関連コードはすべて削除されます。

brew-rs 実験

brew-rs(Ruby フロントエンドを Rust に移行する実験)は終了しました。ベンチマークでは、Rust フロントエンドは限定的なキャッシュされたボトル取得シナリオでのみ効果があり、代表的なフルインストールの改善には至らないことが示されました。パフォーマンス向上の取り組みは Ruby の最適化と I/O タイミングの改善に戻ります。

コミュニティの洞察と反論

リリースはパフォーマンスとセキュリティの向上で概ね好評でしたが、コミュニティの議論ではいくつかの争点が指摘されました:

  • Intel Deprecation: Intel サポートの廃止スケジュールが過激であることに懸念を示すユーザーがいて、多くの Mac サーバーが古い Intel ハードウェア上で稼働していることが指摘されました。
  • Version Pinning: 特定の環境を壊す「強制アップグレード」を回避するため、より堅牢なピン留めとロールバック機構を求める声が続いています。
  • Alternative Tooling: 言語固有ランタイム(Python、Node.js)のバージョン管理や環境全体の再現性向上のため、miseNix などのツールへの移行を検討する開発者もいます。

"私はフル OS レベルの開発環境を mise に切り替えました… 'repackage' のための余計なコードはゼロ、バージョン遅延もゼロです。任意のバージョンのパッケージをインストールでき、作業フォルダーごとにアクティブなものを動的に調整できます。"

"最近 Nix から Homebrew に戻しました… Brew は取り扱うパッケージのサポートがより優れているようです… Mac のサポートが良い… ユーザー体験も向上しています。"

Sources