自制:无法符号链接,/ usr / local / bin不可写

时间:2014-10-30 07:36:01

标签: homebrew

安装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

15 个答案:

答案 0 :(得分:532)

关注Alex's answer我能够解决这个问题;这似乎是一个非特定于正在安装的软件包但具有homebrew文件夹权限的问题。

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

答案 1 :(得分:182)

我建议运行brew doctor并严肃对待所有警告,而不是运行任何特定命令。您可能会遇到其他问题,可能无法在此问题中捕获这些问题。

此外,随着brew随时间更新,特定命令可能保持有效,也可能不保持有效。但是,brew doctor会确保您获得最新的问题排查。

答案 2 :(得分:71)

其他答案是正确的,但是他们没有回答为什么可能正在发生这个问题,以及如何解决这个根本原因。

原因

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

  1. 自制程序安装是由您当前使用的用户以外的用户执行的。 Homebrew希望只有最初安装它的用户才会想要使用它。
  2. 您安装了一些不使用brew而写入/ usr / local的软件。这是brew doctor建议的原因,如果你运行它。
  3. 解决方案

    Multiuser Homebrew

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

    详细说明可以在online找到,但快速回答如下:

    1. Create a group名为brew:

      1. 打开系统偏好设置
      2. 点击帐户
      3. 点击“+”(必要时先解锁)
      4. 新帐户下,选择群组
      5. 输入 brew
      6. 点击创建群组
    2. 选择 brew 组,然后将要使用brew的用户帐户添加到其中。
    3. 更改/ usr / local文件夹组所有权:sudo chgrp -R brew /usr/local
    4. 更改权限以将写入添加到/ usr / local作为组:sudo chmod -R g+w /usr/local
    5. 更改自制缓存目录组:sudo chgrp -R brew /Library/Caches/Homebrew
    6. 更改自制缓存目录权限:sudo chmod -R g+w /Library/Caches/Homebrew
    7. 单用户自制

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

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

      sudo chown -R $(whoami) /Library/Caches/Homebrew

      验证

      完成这些步骤后,brew doctor应报告 brew 组中任何用户的成功,假设您已退出并重新申请以应用新的群组成员资格(如果您去了多用户路线)。如果您刚刚更正了单个用户自制程序的内容,则无需注销并重新登录,因为您的组成员资格都没有更改。

答案 3 :(得分:57)

对于那些正在寻找/usr/local/someOtherFolderName的人来说,不可写错误:

更新:可能是/usr/local/include,例如sudo mkdir someOtherFolderName。您只需要使用以下命令创建该文件夹:

  • sbin

首先创建sudo文件夹,请注意这需要cd /usr/local权限

  • sudo mkdir sbin

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

  • brew link yourPackageName

  • Player::setName

答案 4 :(得分:30)

我发现在我的特定设置中,以下命令有效

brew doctor

然后,这向我展示了我的错误,然后是与上述评论略有不同的命令。

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

答案 5 :(得分:10)

对于那些在运行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就像一个咒语!

答案 6 :(得分:9)

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

所以,先做这件事。

对于熟悉自制软件的人来说,这可能是正常的做法,但我不是那些人之一。

编辑:我发现我需要按照@ kinnth对同一问题的回答运行brew doctor进行更新。

常规故障排除工作流程可能如下所示:  1.运行brew update  2.如果无法运行brew doctor并遵循其指示  3.如果这无助于检查堆栈溢出

答案 7 :(得分:8)

我发现了同样的问题,我们可以通过三个步骤来解决:-

第1步

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

第2步

brew doctor

第3步

brew prune

如果您仍然遇到任何链接问题,请说mysql,只需输入

brew link mysql

这将起作用。

答案 8 :(得分:6)

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

错误:无法符号链接包含/ node / usr / local / include不可写。

链接/usr/local/Cellar/node/9.3.0 ...错误:权限被拒绝@ dir_s_mkdir - / usr / local / lib

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

再次运行 brew安装节点

答案 9 :(得分:5)

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

<强> 1。使用终端

Google如何使用终端 chmod / chown (更改模式/更改所有者)命令

<强> 2。使用图形“获取信息”

您可以右键单击要更改权限的文件夹/文件,然后打开获取信息,这将显示如下所示的窗口,您可以在其中轻松更改r / w权限: enter image description here

请尽可能将临时工作后的权限更改为“只读”

答案 10 :(得分:3)

我发现以下与Sophos Anti-Virus用户有关:

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版本中。

答案 11 :(得分:2)

我的问题是

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

chown没有帮助,但我跟着运行了brew doctor个建议,这个警告帮助了我:

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

brew prune之后一切正常!

答案 12 :(得分:0)

如果您在Finder中转到该文件夹​​,请右键单击并选择&#34;获取信息&#34;你可以去&#34;共享和权限&#34;文件夹部分允许&#34;阅读&amp;写&#34;到每个人&#34;

这就是我用symlinks传递此错误的方法。 brew也似乎重置了文件夹的权限,就好像你没有改变任何东西

答案 13 :(得分:0)

对于不熟悉的人:

sudo chown -R YOUR_COMPUTER_USER_NAME PATH_OF_FILE

答案 14 :(得分:0)

如果/usr/local中已经有要安装的软件包的目录,则可以尝试删除此目录。

在我的情况下,我以前已经安装了试图在不使用brew的情况下安装的软件包,然后又将其卸载了。先前的安装中剩下一个目录/usr/local/<my_package>/。我删除了该文件夹(sudo rm -rf /usr/local/<my_package>/),然后完成brew链接步骤。