安装Brew时出现“权限被拒绝”错误(在运行chown -R `whoami`后)。

10
$ brew install fontconfig
Error: Permission denied - /Library/Caches/Homebrew/Formula/fontconfig.brewing

$ sudo chown -R `whoami` /usr/local

$ brew install fontconfig
Error: Permission denied - /Library/Caches/Homebrew/Formula/fontconfig.brewing

不确定接下来该怎么做。运行了brew doctor以解决一些现有的问题,但似乎无法超越这一点。


你不需要使用 chown 命令更改系统目录的所有者。你可能想要执行 sudo brew install fontconfig 命令。 - devnull
5
Homebrew不希望您在执行操作时使用“sudo”。例如:错误:懦弱地拒绝 'sudo brew install' 您可以使用sudo运行brew,但前提是brew可执行文件的所有者是root。 但是,这既不被推荐,也完全不受支持,因此请自行承担风险。 - kyletaylored
尝试使用Disk Doctor修复文件夹权限。 - Ast Derek
2
可能是Homebrew安装问题的重复。 - trojanfoe
2个回答

23

trojanfoe的回答有所帮助。出现了一个许可问题,我没有被分配到Library/Logs文件夹,但某种程度上Library/Caches/Homebrew文件夹不存在。所以我只创建了子文件夹Formula,并更改了权限,一切都安装得很好。这实际上清除了我遇到的大量错误。

谢谢大家。

更新

@fet的一行代码非常有效。

mkdir -p ~/Library/Caches/Homebrew/Formula

15
对我也起作用了。一句话翻译:mkdir -p ~/Library/Caches/Homebrew/Formula(创建目录)。 - fet
1
我也试过了,但我不知道为什么。 - Jorge Bucaran
这里也修复了!这是Homebrew的一个bug吗...? - Juanjo Salvador

2

如果其他人遇到了类似以下错误:

$ brew upgrade
==> Upgrading 1 outdated package, with result:
libtool 2.4.6
==> Upgrading libtool
Error: Permission denied - /usr/local/lib/libltdl.7.dylib

请确保你的目录,本例中为 /usr/local/lib,具有足够的权限让你访问它。我遇到了一个问题,即只分配给了 root:admin

$ ls -la /usr/local/lib/ | grep "libltdl.7"
lrwxr-xr-x   1 username  admin        43 Oct 12  2014 libltdl.7.dylib -> ../Cellar/libtool/2.4.2/lib/libltdl.7.dylib

我将其更改为myusername:admin,然后就可以顺利升级了。

cd /usr/local/lib
sudo chown `whoami`:admin .

希望这能帮到你!

2
这是一个不错的解决方案,但不安全!请参见https://dev59.com/9GQn5IYBdhLWcg3w9bCi - redolent
1
@redolent - 非常好的观点,我同意!不幸的是,似乎brew正在寻找这个(从您发布的链接中)-“可能很疯狂,但这就是brew本身建议的:$ brew update Error: The /usr/local directory is not writable. Even if this directory was writable when you installed Homebrew, other software may change permissions on this directory. Some versions of the "InstantOn" component of Airfoil are known to do this. You should probably change the ownership and permissions of /usr/local back to your user account. sudo chown -R $(whoami):admin /usr/local" - ph1ash
那么基本上brew希望以那种方式获取权限? - redolent

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