因为某些原因,很久很久没有动过电脑写代码。今天在安装Python Ta-Lib库时发现需要安装Ta-Lib cpython的支持(大概是这个意思吧),所以需要先进行一步操作
brew install ta-lib
然而电脑版本升太快,新版本的macOS引入一个名为SIP(System Integrity Protector)的机制,导致homebrew无法使用。卸载后重装也没办法再次安装,会报出一个
Failed during: git init -q
的错误。在查询过程中,发现了一个比较好的解决方案。原文来自:How to fix permission issues on Homebrew in OS X El Capitan?我仅仅是搬运翻译一下。
当你升级到Mac OS X El Capitan(来自本人注:包括以后的macOS High Sierra以及macOS Mojave)后,就无法再使用Homebrew了。作为一个经常使用homebrew 的人来说,我完全理解这种感受。
导致这些权限问题的原因是因为苹果对Mac OS X El Capitan(同上)做出的一种名为SIP(System Integrity Protector,系统完整保护)的新改变。更多SIP的信息可以直接前往本文的结尾。
如何解决Homebrew在Mac OS X El Capitan(同上)的权限问题:
如果你已经创建了usr/local
目录,直接在终端中运行这行指令:
sudo chown $(whoami):admin /usr/local && sudo chown -R $(whoami):admin /usr/local
(本人:然鹅,我并不能~~~~,直接上后面的步骤了)
第一步
重启计算进进入恢复模式(在启动时按住Cmd+R),然后进入到终端中(是的你以后都必须进入到恢复模式,因为这是目前关闭SIP的唯一途径)
第二步
在终端中输入以下指令
csrutil disable
第三步
重启回到系统中
第四步
一旦Mac重启,打开终端,运行以下指令
sudo mkdir /usr/local && sudo chflags norestricted /usr/local && sudo chown $(whoami):admin /usr/local && sudo chown -R $(whoami):admin /usr/local
(本人注:有/usr/local 文件的把前面mkdir /usr/local
删掉就好)
第五步
以上操作完成后,你将需要重启进入到恢复模式中,然后在终端输入以下指令
csrutil enable
第六步
现在重启进入到系统中
第七步
你就能对/usr/local
文件进行写入,homebrew也会正常使用了。
请注意
你如果不需要安装homebrew在usr/local
或者其他系统保护的文件中,无视以上操作。
更多关于SIP- System Integrity Protector
有了SIP,你就不能对/usr
,/System
,和/bin
文件进行写入,哪怕你拥有root权限或者你已经以root用户登录。
根据苹果的文档,/usr/local
文件将有root:未来的macOS系统更新都会有之前一样的轮转限制权限(原文:wheel restricted permissions,PS:这段翻译得真的烂)。
Homebrew的团队已经获悉了这个问题,他们将会在不久的将来添加brew doctor的检查,会提醒了关于这些事情的警告。