OS X El Capitan では System Integrity Protection (SIP) (rootless とも呼ばれる) という機能が導入され, /usr
や /System
といった重要なディレクトリへの書き込みを制限します. 通常 /usr/local
にインストールされる Homebrew もこの影響を受けるため, これを回避する方法を紹介します.
2016/9 追記: macOS Sierra で Homebrew を使う方法
概要
対応方法は Homebrew の公式ドキュメント (削除済み) で紹介されています. Homebrew をデフォルトの /usr/local
以外にインストールしている場合は特に対応は必要ありません.
WWDC 2015 では /usr
は SIP の対象になるが, /usr/local
は開発者が使用できるようになっていると紹介されました. しかし, OS X をアップデートする度に ただし, El Capitan で Homebrew を利用するためにははじめに一度だけ /usr/local
のパーミッションが root:wheel restricted
になってしまうようで, アップデートの度に修正が必要です./usr/local
のパーミッションを修正する必要があります.
対応
/usr/local
が既に存在する場合
Homebrew をすでにインストールしている場合はこちらに該当します. /usr/local
のパーミッションを変更すれば OK です.
sudo chown -R $(whoami):admin /usr/local
/usr/local
が存在しない場合
OS X 10.11.1 に含まれる com.apple.pkg.SystemIntegrityProtectionConfig.14U2076
のアップデートによって SIP を無効化しなくても /usr/local
のディレクトリを作成できるようになったようです. 以下のコマンドで /usr/local
を作成して適切なパーミッションを設定します.
sudo mkdir /usr/local && sudo chflags norestricted /usr/local && sudo chown -R $(whoami):admin /usr/local
上記の方法がうまくいかない場合は, 以下の手順に従って一度 SIP を無効化して試してみて下さい.
SIP の無効化
OS X を終了し Command + R を押下しながら起動してリカバリーモードに入ります. csrutil disable
を実行して SIP を無効化します.
パーミッションの設定
OS X を通常起動し, /usr/local
の作成とパーミッションの設定を行います.
sudo mkdir /usr/local && sudo chflags norestricted /usr/local && sudo chown -R $(whoami):admin /usr/local
SIP の有効化
再度 OS X を終了し Command + R を押下しながら起動してリカバリーモードに入ります. csrutil enable
を実行して SIP を有効化します.
更新履歴
- 2016/3/20 最新の情報に更新
- 2016/6/14 macOS Sierra について追記
参考
- El Capitan & Homebrew (この記事は公式資料をもとに作成したものです. 削除済みのドキュメントのため古いコミットを参照しています. 公式資料のライセンスはこちらです.)