首页 文章

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

提问于
浏览
287

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

13 回答

  • 70

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

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

  • 3

    我的问题是

    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 之后一切正常!

  • 5

    在做 brew link node 时另外我也遇到了以下问题:

    错误:无法使用符号链接/ node / usr / local / include不可写 .

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

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

    并再次运行 brew install node

  • 502

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

    UPDATE: 可能是 /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

  • 7

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

    所以,先做这件事 .

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

    编辑:我发现我需要通过运行 brew doctor 进行更新,正如@ kinnth对同一个问题的回答所建议的那样 .

    一般的故障排除工作流程可能如下所示:1 . 运行 brew update 2.如果这不能帮助运行 brew doctor 并按照其指示3.如果这无助于检查堆栈溢出

  • 0

    我找到了我的特定设置以下命令

    brew doctor
    

    然后,这向我展示了我的错误,然后从上面的评论中略微不同的命令 .

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

    Alex' 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
    
  • 45

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

    步骤1

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

    第2步

    brew doctor
    

    第3步

    brew prune
    

    如果你仍然遇到任何链接问题,让我们说 mysql ,只需写

    brew link mysql
    

    这会奏效 .

  • 24

    这是因为当前用户不允许在该路径中使用 write . 因此,要更改r / w(读/写)权限,您可以使用1. terminal,或2. Graphical "Get Info" window .

    1. Using Terminal

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

    2. Using graphical 'Get Info'

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

    Remember to change the permission back to "read only" after your temporary work, if possible

  • 2

    我发现以下与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版本中 .

  • 4

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

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

    运行这些步骤后, brew link 就像一个魅力!

  • 4

    其他答案是正确的,只要他们去,但他们不回答为什么可能发生这个问题,以及如何解决这个根本原因 .

    原因

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

    • 自制安装是使用您当前使用的用户以外的用户执行的 . Homebrew希望只有最初安装它的用户才会想要使用它 .

    • 您安装了一些不使用brew而写入/ usr / local的软件 . 这是 brew doctor 建议的原因,如果你运行它 .

    解决方案

    Multiuser Homebrew

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

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

    • Create a group命名为brew:

    • 打开系统首选项

    • 单击“帐户”

    • 单击"+"(必要时先解锁)

    • 在新帐户下,选择组

    • 输入brew

    • 单击“创建组”

    • 选择brew组,然后添加所需的用户帐户使用酿造它 .

    • 更改/ usr / local文件夹组所有权: sudo chgrp -R brew /usr/local

    • 更改权限以将写入添加到/ usr / local作为组: sudo chmod -R g+w /usr/local

    • 更改自制缓存目录组: sudo chgrp -R brew /Library/Caches/Homebrew

    • 更改自制缓存目录权限: sudo chmod -R g+w /Library/Caches/Homebrew

    单用户自制软件

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

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

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

    验证

    完成这些步骤后, brew doctor 应报告brew组中的任何用户的成功,假设您没有必要,因为您的组成员身份都没有更改 .

  • 1

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

    此外,随着brew随时间更新,特定命令可能保持有效,也可能不保持有效 . 但是, brew doctor 将确保您获得最新的故障排除 .

相关问题