如何修复MacOS High Sierra上Home-brew的权限

Jon*_*han 53 python bash homebrew

当我尝试将python安装到home-brew上时,它下载了它,然后在最后弹出一条错误消息,阻止它完成.当我再次尝试时,它要求我这样做:

$ brew link python
Run Code Online (Sandbox Code Playgroud)

输入后会出现相同的错误消息:

permission denied @ dir_s_mkdir - /usr/local/lib

我试过这样做:

$ sudo chown -R $(whoami) /usr/local
Run Code Online (Sandbox Code Playgroud)

我收到一条错误消息:"chown:/ usr/local:不允许操作"

小智 93

sudo mkdir /usr/local/Frameworks
sudo chown $(whoami):admin /usr/local/Frameworks    
brew link python3
Run Code Online (Sandbox Code Playgroud)


Chr*_*ris 11

运行它,并遵循它的建议:

brew doctor
Run Code Online (Sandbox Code Playgroud)

就我而言,它希望我运行:

sudo mkdir -p /usr/local/sbin /usr/local/Frameworks
sudo chown -R $(whoami) /usr/local/sbin /usr/local/Frameworks
Run Code Online (Sandbox Code Playgroud)


Niq*_*uit 9

我试过并且有同样的(我认为)输出:

Error: An unexpected error occurred during the `brew link` step
The formula built, but is not symlinked into /usr/local
Permission denied @ dir_s_mkdir - /usr/local/Frameworks
Error: Permission denied @ dir_s_mkdir - /usr/local/Frameworks
Run Code Online (Sandbox Code Playgroud)

所以我以root身份创建了一个目录/ usr/local/Frameworks,而不是更改所有权:

sudo mkdir /usr/local/Frameworks && chown $USER:admin /usr/local/Frameworks
Run Code Online (Sandbox Code Playgroud)

我再试一次brew install python:

Warning: python 2.7.14 is already installed, it's just not linked.
You can use `brew link python` to link this version.
Run Code Online (Sandbox Code Playgroud)

然后brew link python:

Linking /usr/local/Cellar/python/2.7.14... 26 symlinks created
Run Code Online (Sandbox Code Playgroud)

现在在/usr/local/Frameworks/Python.framework/目录中我可以看到链接,例如:

lrwxr-xr-x 1 niquit admin  62 Dec  8 21:41 /usr/local/Frameworks/Python.framework/Headers -> ../../Cellar/python/2.7.14/Frameworks/Python.framework/Headers/
lrwxr-xr-x 1 niquit admin  61 Dec  8 21:41 /usr/local/Frameworks/Python.framework/Python -> ../../Cellar/python/2.7.14/Frameworks/Python.framework/Python*
lrwxr-xr-x 1 niquit admin  64 Dec  8 21:41 /usr/local/Frameworks/Python.framework/Resources -> ../../Cellar/python/2.7.14/Frameworks/Python.framework/Resources/
Run Code Online (Sandbox Code Playgroud)

在你的情况下,我建议手动创建/ usr/local/lib:

sudo mkdir /usr/local/lib && chown $USER:admin /usr/local/lib
Run Code Online (Sandbox Code Playgroud)

做了一个测试mv /usr/local/lib{,.orig},我得到了:

Error: An unexpected error occurred during the `brew link` step
The formula built, but is not symlinked into /usr/local
Permission denied @ dir_s_mkdir - /usr/local/lib
Error: Permission denied @ dir_s_mkdir - /usr/local/lib
Run Code Online (Sandbox Code Playgroud)

就像我之前创建手动目录一样sudo mkdir /usr/local/lib && chown $USER:admin /usr/local/lib,并且成功了brew link python:

Linking /usr/local/Cellar/python/2.7.14... 324 symlinks created
Run Code Online (Sandbox Code Playgroud)

现在我可以找到一些链接:

lrwxr-xr-x 1 niquit admin  54 Dec  8 22:01 python-2.7.pc -> ../../Cellar/python/2.7.14/lib/pkgconfig/python-2.7.pc
lrwxr-xr-x 1 niquit admin  50 Dec  8 22:01 python.pc -> ../../Cellar/python/2.7.14/lib/pkgconfig/python.pc
lrwxr-xr-x 1 niquit admin  51 Dec  8 22:01 python2.pc -> ../../Cellar/python/2.7.14/lib/pkgconfig/python2.pc
Run Code Online (Sandbox Code Playgroud)

我认为Apple在最新更新后增加了安全性,因此无法在没有root权限的情况下在/ usr /中创建现在的目录.


Sha*_*eed 7

sudo mkdir /usr/local/Frameworks

sudo chown $USER /usr/local/Frameworks
Run Code Online (Sandbox Code Playgroud)

然后尝试重新安装python。这对我来说绝对不错。


Raj*_*ain 7

macOS 上用户的命令

bash/zsh:

sudo chown -R $(whoami) $(brew --prefix)/*

鱼:

sudo chown -R (whoami) (brew --prefix)/*


H. *_*rlé 6

/usr/local不能再在High Sierra中加入.而是使用

sudo chown -R $(whoami) $(brew --prefix)/*
Run Code Online (Sandbox Code Playgroud)


Bil*_*han 5

对于MacOS 10.14,在新计算机上全新安装:

brew doctor
Run Code Online (Sandbox Code Playgroud)

它表明:

sudo mkdir -p /usr/local/lib /usr/local/sbin
sudo chown -R $(whoami) /usr/local/lib /usr/local/sbin
Run Code Online (Sandbox Code Playgroud)


小智 0

正如 henrikstroem 所提到的,反引号可能会有所帮助,并且正如 bnaecker 所提到的,特殊属性也可能会阻碍该过程。

您也可以尝试直接以 root 身份运行该命令,看看是否有更好的结果,sudo su -然后chown -R username /usr/local

但你确定这真的是你想要的吗?创建一个具有访问权限的组可能会更有趣(例如chown -R originaluser:group /usr/local,设置您想要的权限,和/或使您的用户成为该组的一部分。