在Mac OS X 10.10上通过Homebrew安装git出现错误:Error: Permission denied - /usr/local/lib/perl5/site_perl/5.18.2。

20

嗨,我刚尝试在我的Mac上通过Homebrew安装Git - 似乎有些问题。我曾经安装了GitHub for Mac应用程序,但我尝试将其移除了。我系统中当前的Git版本是:

Nielsk@~: $ git --version
git version 1.9.3 (Apple Git-50)

如果我尝试通过Homebrew安装Git,会发生以下情况:

Nielsk@~: $ brew install git
==> Downloading https://downloads.sf.net/project/machomebrew/Bottles/git-2.1.3.y
######################################################################## 100,0%
==> Pouring git-2.1.3.yosemite.bottle.tar.gz
==> Caveats
The OS X keychain credential helper has been installed to:
  /usr/local/bin/git-credential-osxkeychain

The 'contrib' directory has been installed to:
  /usr/local/share/git-core/contrib

Bash completion has been installed to:
  /usr/local/etc/bash_completion.d

zsh completion has been installed to:
  /usr/local/share/zsh/site-functions
Error: An unexpected error occurred during the `brew link` step
The formula built, but is not symlinked into /usr/local
Permission denied - /usr/local/lib/perl5/site_perl/5.18.2
Error: Permission denied - /usr/local/lib/perl5/site_perl/5.18.2

我该怎么解决这个问题?


如果您使用 sudo brew install git 作为提升用户进行安装,会发生什么? - Michael Petch
2
为什么我要在brew中使用sudo,这不是它的本意吧? - Niels Kristian
1
当我评论这个问题时,我在想Macports,但你用Homebrew是正确的 - 使用sudo甚至不被支持。 - Michael Petch
5个回答

52

我也遇到了同样的问题。我认为我们应该更改可读权限,以确保任何一个目录被"所有人"读取。因此,我尝试了以下命令:sudo chown -R $USER:admin /usr/local 然后执行: brew link --overwrite git 对我来说有效,希望对您也有用。


4
你很可能之前安装了一些非Homebrew的软件到/usr/local目录,或者在某个时候你用sudo命令向/usr/local目录写入了文件。修改权限是你应该做的事情,也是Homebrew安装程序要做的事情。在Homebrew的issues页面上有一个关于这个问题的主要讨论,你可以在这里找到它。Homebrew的维护者Mike McQuaid明确表示,更改/usr/local的权限是首选方法。你会看到他建议像Jonyzfu一样更改权限。 - Michael Petch
3
@Jonyzfu,虽然您的命令是正确的,但我认为您的推理是错误的。sudo chown -R $USER:admin /usr/local 并不意味着 /usr/local 中的所有内容都可以被所有人读取。'-R' 表示 递归。这个命令所做的事情是更改 用户,使得该命令中的 $USER 用户和 admin 组成为所有者。$USER 是一个变量,它保存了在运行命令时作为登录用户的用户名。如果您不是 admin 组的成员或者您运行命令时使用的用户,实际目录/文件权限可能会限制您的读写权限。 - Michael Petch
@MichaelPetch 我在全新的Macbook Pro(Yosemite 10.10.2)上遇到了同样的权限问题。我根本没有安装其他任何东西到/usr/local - Vojtech Vitek - golang.cz
在全新安装的El Capitan上出现了同样的问题,而且在此之前我没有安装任何东西。但看起来已经解决了。 - Verena Haunschmid
我在使用NPM时遇到了同样的问题,但是通过这种方法解决了。请记得将brew link --overwrite git更改为brew link --overwrite npm。 - Guy Lowe
显示剩余2条评论

9
从High Sierra开始,不允许更改/usr/local的所有权。但是,您仍然可以更改/usr/local中的子目录的权限。
在我的情况下,我必须在/usr/local中创建Frameworks并执行sudo chown -R $(whom) Frameworks。之后,请按照brew doctor所说的做。
更好的方法是创建任何需要的子目录,然后运行 sudo chown -R $(whoami) $(brew --prefix)/*

8

如果您使用的是新版El Capitan操作系统,您需要更新权限:

打开终端并输入以下命令:

$ sudo chown -R $(whoami):admin /usr/local 
$ brew doctor 
$ brew update
$ brew link --overwrite git

上述解决方案同样适用于其他的brew installs,如node等。如果在brew安装过程中遇到错误,请替换最后一行命令。

5

我安装 git 时遇到了类似的 permission denied 错误,直到我清理了一些东西:

$brew doctor
   .....   << long output of issues, so you run:
$brew prune
$brew doctor
   .....   << less issues now, so manually clean up
$brew update 
$brew install git 

这个解决方案是否也适用于你的错误?


0

我按照brew doctor的建议去做了,确实有所帮助:

sudo mkdir -p /usr/local/sbin
sudo chown -R $(whoami) /usr/local/sbin

MacOS 10.14.4


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接