Homebrew是Mac中很強大的一個指令,相當于Ubuntu中的apt-get,當我們需要在Mac中安裝某些特定的環境時,就需要用到brew指令。
1. 安裝指令
首先是一般情況下的安裝指令:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
2. 存在的問題
然后按照提示多數情況即可安裝成功。
但是如果都是這樣,那么寫這篇文章就沒有意義了,我在執行后上述指令后會安裝失敗,返回類似這樣的錯誤:
error: could not lock config file /usr/local/Homebrew/.git/config: Permission denied
Failed during: git init -q
3. 解決問題
這篇文章就是為了解決這個問題,以下操作參考mac Homebrew /usr/local寫入權限問題
出現這個錯誤的原因是因為沒有/usr/local/目錄的權限,而安裝brew或者brew update時需要向這個文件夾下寫入文件
于是執行修改權限指令: sudo chown -R <用戶名> /usr/local
但是你會得到這樣的錯誤: chown: /usr/local: Operation not permitted
原因在于蘋果從 OS X El Capitan 10.11 系統開始使用了 Rootless 機制,可以將該機制理解為一個更高等級的系統的內核保護措施,系統默認將會鎖定 /system、/sbin、/usr 這三個目錄。
終端輸入
csrutil status
可以看到這樣的結果
System Integrity Protection status:enabled
說明rootless默認打開,此時無法通過sudo命令,對/system、/sbin、/usr 這三個目錄進行修改。
打開、關閉Rootless機制
- 重啟 Mac
- 開機時后按下 Command+R,進入恢復模式。
- 在頂端的菜單欄的實用工具中找到并打開 Terminal/終端
- 輸入指令:
csrutil disable
- 此時rootless已經關閉,退出恢復模式,正常進入系統。在終端輸入:
csrutil status
可以看到System Integrity Protection status:disabled
則說明關閉Rootless機制成功,然后就可以更改目錄權限啦 - 再次執行指令:
sudo chown -R <用戶名> /usr/local
,命令完成后無提示,說明修改成功 - 建議修改完成之后,為了系統安全,將rootless重新開啟。開啟方式同關閉方式一樣,在恢復模式的Terminal輸入:
crsutil enable
處理好 /usr/local 的權限問題后我們就可以正常安裝Homebrew了