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)
我试过并且有同样的(我认为)输出:
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 /中创建现在的目录.
sudo mkdir /usr/local/Frameworks
sudo chown $USER /usr/local/Frameworks
Run Code Online (Sandbox Code Playgroud)
然后尝试重新安装python。这对我来说绝对不错。
macOS 上用户的命令
bash/zsh:
sudo chown -R $(whoami) $(brew --prefix)/*
鱼:
sudo chown -R (whoami) (brew --prefix)/*
/usr/local不能再在High Sierra中加入.而是使用
sudo chown -R $(whoami) $(brew --prefix)/*
Run Code Online (Sandbox Code Playgroud)
对于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,设置您想要的权限,和/或使您的用户成为该组的一部分。