在安装tig时,HomeBrew在安装依赖项时显示以下问题:

Error: The `brew link` step did not complete successfully
The formula built, but is not symlinked into /usr/local
Could not symlink bin/a2x
/usr/local/bin is not writable.

You can try again using:
  brew link asciidoc

根据Alex的回答,我能够解决这个问题;似乎这是一个问题,不特定于软件包正在安装,但自制文件夹的权限。

sudo chown -R `whoami`:admin /usr/local/bin

对于某些包,你可能还需要对/usr/local/share或/usr/local/opt执行这个操作:

sudo chown -R `whoami`:admin /usr/local/share
sudo chown -R `whoami`:admin /usr/local/opt

与其运行任何特定的命令,我建议运行brew doctor并认真对待所有警告。你可能会遇到其他问题,而这些问题在这个问题中可能没有体现出来。

此外,随着brew的更新,某些命令可能仍然有效,也可能不有效。然而,酿造医生将确保您获得最新的故障排除。


如果你打开finder中的文件夹,右键单击并选择“获取信息”,你可以进入文件夹的“共享和权限”部分,并允许“所有人”“读写”

这就是我所做的使符号链接传递此错误。此外,brew似乎也重置了文件夹上的权限,就好像你没有改变任何东西一样


我发现以下与Sophos反病毒用户相关:

https://stackoverflow.com/a/32981184

https://community.sophos.com/products/free-antivirus-tools-for-desktops/f/17/t/10029

简而言之,Sophos正在更改某些/usr/local目录的权限。Sophos已经对此进行了修补,该修复包含在9.4.1版本中。


我发现对于我的特定设置,以下命令是有效的

brew doctor

然后它告诉我我的错误在哪里,然后这个与上面的注释略有不同的命令。

sudo chown -R $(whoami) /usr/local/opt

就目前而言,其他答案是正确的,但它们没有回答为什么会出现这个问题,以及如何解决这个根本原因。

导致

这个问题可能有两个原因:

已使用其他用户执行自制程序安装,而不是您当前使用的用户。Homebrew希望只有最初安装它的用户才会想要使用它。 您安装了一些不使用brew写入/usr/local的软件。这是酿酒医生建议的原因,如果你运行它。

解决方案

多用户家酿

如果您有多个用户帐户,并且希望其中多个帐户能够使用brew,则需要执行几个步骤,否则每次切换用户时都必须不断更改Homebrew文件结构的所有权,这不是一个好主意。

详细的说明可以在网上找到,但简单的答案是:

Create a group named brew: Open System preferences Click Accounts Click the "+" (unlock first if necessary) Under New account select Group enter brew Click Create Group Select the brew group, and add the user accounts you want to use brew to it. change the /usr/local folder group ownership: sudo chgrp -R brew /usr/local change the permissions to add write to /usr/local as group: sudo chmod -R g+w /usr/local change homebrew cache directory group: sudo chgrp -R brew /Library/Caches/Homebrew change the homebrew cache directory permissions: sudo chmod -R g+w /Library/Caches/Homebrew

单用户自制

如果你不想在Homebrew上使用多个用户,那么根据brew doctor的建议,其他答案提供的解决方案可能就足够了:

sudo chown -R $(whoami) /usr/local

sudo chown -R $(whoami) /库/缓存/自制

验证

在这些步骤之后,brew doctor应该报告brew组中的任何用户的成功,假设您已经注销并重新登录以应用新的组成员资格(如果您走的是多用户路线)。如果您只是纠正了单个用户自制程序的错误,那么应该不需要登出和重新登录,因为您的组成员都没有改变。


对我来说,解决方案是运行brew update。

所以,先做这个。

对于熟悉自制啤酒的人来说,这可能是正常的做法,但我不是这样的人。

编辑:我发现我需要通过运行brew doctor来更新,这是@kinnth对同一问题的回答所建议的。

一般的故障排除工作流可能是这样的: 1. 运行brew更新 2. 如果这对运行brew doctor没有帮助,就按照它的指示去做 3.如果这对检查堆栈溢出没有帮助的话


这是因为当前用户不允许在该路径中写入。因此,要更改r/w(读/写)权限,您可以使用1。Terminal,或者2。图形化“获取信息”窗口。

1. 使用终端

谷歌如何从终端使用chmod/chown(改变模式/改变所有者)命令

2. 使用图形化的“获取信息”

你可以右键单击你想要更改权限的文件夹/文件,然后打开获取信息,它会显示一个如下所示的窗口,在底部你可以轻松地更改r/w权限:

如果可能的话,请在临时工作结束后将权限更改为“只读”


在做brew链接节点时,我还遇到了以下问题:

Error: Could not symlink include/node/usr/local/include is not writable.

Linking /usr/local/Cellar/node/9.3.0... Error: Permission denied @ dir_s_mkdir - /usr/local/lib

要解决上述问题,只需转到/usr/local/并检查文件夹“include”和“lib”的可用性,如果这些文件夹不可用,只需手动创建它们。

然后再次运行brew install node


对于那些正在寻找/usr/local/sbin不可写错误:

更新:它可以是/usr/local/someOtherFolderName,例如/usr/local/include。你只需要创建一个文件夹:

sudo mkdir someOtherFolderName

首先创建sbin文件夹,注意这需要sudo权限

cd /usr/local Sudo mkdir sbin sudo chown -R $(whoami) $(brew -prefix)/* 酿造链接你的packagename


我的问题是

Error: Could not symlink share/man/man7/ABORT.7
/usr/local/share/man/man7 is not writable.

Chown并没有帮上忙,但我听从了酿酒医生的建议,这个警告帮助了我:

Warning: Broken symlinks were found. Remove them with `brew prune`:
/usr/local/share/man/man3/* 

酿造后的西梅都工作得很好!


我发现了同样的问题,我们可以分三步解决:-

步骤1

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

步骤2

brew doctor

步骤3

brew prune or brew cleanup

如果你仍然遇到任何链接问题,比如说mysql,就写

brew link mysql

这是可行的。


对于那些在运行Mac OS High Sierra时遇到这个问题的人(在这篇文章发表4年后),这里概述的步骤为我解决了这个问题。基本上只是概述卸载和重新安装brew。

https://medium.com/@mrkdsgn/brew-error-on-macos-high-sierra-check-you-have-permission-to-write-to-usr-local-e8bd1c6a22d4

运行这些步骤后,brew link工作得非常好!


对于那些不熟悉的人:

sudo chown -R YOUR_COMPUTER_USER_NAME PATH_OF_FILE

如果您已经在/usr/local中为正在安装的包创建了一个目录,您可以尝试删除这个目录。

在我的情况下,我之前安装了我试图安装的包,没有使用brew,然后卸载了它。之前的安装留下了一个目录/usr/local/<my_package>/。我删除了这个文件夹(sudo rm -rf /usr/local/<my_package>/),之后酿造链接步骤成功。