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

Posted

技术标签:

【中文标题】Homebrew:无法符号链接,/usr/local/bin 不可写[关闭]【英文标题】:Homebrew: Could not symlink, /usr/local/bin is not writable [closed] 【发布时间】:2014-12-26 03:56:49 【问题描述】:

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

【问题讨论】:

这不属于stackowerflow.com,而是属于superuser.com或askdifferent.com 【参考方案1】:

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

第一步

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

第 2 步

brew doctor

第 3 步

brew prune or brew cleanup

如果您仍然遇到任何链接问题,假设mysql,只需写

brew link mysql

这会起作用。

【讨论】:

为我为 rabbitmq 工作 “步骤 1”的目的是什么? 酿造医生竖起大拇指!没有做 brew prune,但安装了其他缺少的包,它适用于 mongodb。 调用“brew prune”被禁用。请改用“brew cleanup”。 为我工作。但不是brew prune,而是像@hanumanDev 建议的那样使用brew cleanup。谢谢你们。【参考方案2】:

在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

【讨论】:

把所有的 /usr/local/bin 都归还给当前使用,不会给系统或其他用户带来任何麻烦吗? sudo chown -R whoami:admin /usr/local/bin 不会等同于答案中的命令,而无需将yourusename 替换为您的实际用户名吗? 我还必须递归地 chown usr/local/opt。在那之后它起作用了。 在我的 mac (10.9.5) 上,/usr/local/bin(和朋友)的权限似乎每天都恢复为drwxr-xr-x+root wheel。每次我想brew install 时,我都必须重新配置烫发。我假设操作系统正在重置烫发以保护我?我怎样才能让它停止? (我试过 chflags uchg … 但这会阻止 brew 安装。) 我将我的帐户添加到“wheel”组。这允许我“sudo chmod -R g+w /usr/local”——这允许组“wheel”的成员写入文件夹。似乎比将这些敏感文件夹的所有者更改为安全性低于 root 的帐户更安全。【参考方案3】:

如果您在/usr/local 中已经为您要安装的软件包提供了一个目录,您可以尝试删除该目录。

在我的情况下,我之前安装了我试图在不使用 brew 的情况下安装的软件包,然后将其卸载。以前的安装留下了一个目录/usr/local/<my_package>/。我删除了这个文件夹 (sudo rm -rf /usr/local/<my_package>/),然后 brew link 步骤成功。

【讨论】:

【参考方案4】:

对于不熟悉的人:

sudo chown -R YOUR_COMPUTER_USER_NAME PATH_OF_FILE

【讨论】:

【参考方案5】:

对于那些在运行 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 的工作就像一个魅力!

【讨论】:

我发现这对我有用(没有初始转储命令):github.com/Homebrew/brew/issues/3285#issuecomment-334976806 谢谢!尝试了哈利的最佳答案,没有运气 - 尝试了这个,它就像一个魅力! 为我工作,谢谢!【参考方案6】:

我的问题是

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

【讨论】:

太棒了。为我工作。【参考方案7】:

对于那些正在寻找/usr/local/sbin is not writable error的人:

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

【讨论】:

这对我有用 我还需要将目录添加到我的 ~/.bash_profile:PATH=$PATH:/usr/local/sbin 经过数小时的搜索,这是唯一对我有用的东西。我在高山脉。 它也对我有用(OS X 11.2)。 GNU fortran 突然出现问题......但现在一切都恢复正常了。谢谢这个提示【参考方案8】:

在执行 brew link node 时,我还遇到了以下问题:

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

正在链接 /usr/local/Cellar/node/9.3.0... 错误:Permission denied @ dir_s_mkdir - /usr/local/lib

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

然后再次运行brew install node

【讨论】:

【参考方案9】:

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

所以,请先这样做。

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

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

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

【讨论】:

这为我解决了所有问题,非常值得先做。 所有 brew doctor 所做的只是指出我的酒窖里有不喜欢的小桶......所以这对解决 OP 的问题没有任何帮助 @AlxVallejo 这就是我在收到与 OP 几乎相同的错误时遇到的问题所采取的措施。您从 Brew Doctor 收到的消息对我来说听起来像是一个不同的问题。 “1. 运行 brew update 2. 如果这无助于运行 brew doctor 并遵循其指示 3. 如果这无助于检查堆栈溢出”的工作流程可能仍然适用。【参考方案10】:

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

1.使用终端

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

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

您可以右键单击要更改权限的文件夹/文件,然后打开 Get Info 会在底部显示如下窗口,您可以轻松更改 r/w权限:

如果可能,请记住在临时工作后将权限改回“只读”

【讨论】:

使用 brew doctor - 它会正确识别需要修复的(系统)文件夹。【参考方案11】:

就他们而言,其他答案是正确的,但他们没有回答为什么可能会发生此问题,以及如何解决该根本原因。

原因

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

    Homebrew 安装是由您当前使用的用户以外的用户执行的。 Homebrew 预计只有最初安装它的用户才会想要使用它。 您安装了一些不使用 brew 写入 /usr/local 的软件。这就是brew doctor 建议的原因,如果你运行它的话。

解决方案

多用户自制软件

如果您有多个用户帐户,并且希望多个用户帐户能够使用 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 组中的任何用户成功,假设您已注销并重新登录以应用新的组成员身份(如果您使用多用户路由)。如果您只是纠正了单用户自制软件的问题,则不需要注销并重新登录,因为您的组成员身份都没有改变。

【讨论】:

谢谢!我可能应该阅读更多关于 unix 用户组的信息。我完全不知道它是如何很好地消化推理的。不过听起来很明智,谢谢指点! unix 组比您想象的要简单 - 每个文件都具有可用于拥有该文件的“用户”和“组”以及“其他”的读取、写入和执行权限。如果您设置拥有文件或文件夹的组,并为该文件夹的“组”添加写入权限,则该组中的任何用户都可以写入该文件夹。真的没有比这更多的了。不像 Windows 中的权限那么复杂。 所以这是一种将一组文件的权限系统组合到一个组的简单方法,以便可以轻松添加多个用户以一次性应用所有这些权限? 这解决了我的 brew 链接问题,谢谢。 仍然让我觉得有一个敏感目录有点危险,比如/usr/local/bin group-writable,尤其是。在多用户环境中。这真的是“官方”的酿造方式吗?【参考方案12】:

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

brew doctor

然后这显示了我的错误在哪里,然后这个命令与上面的评论略有不同。

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

【讨论】:

感谢您的明确建议。我倾向于忘记brew doctor 这解决了这里的问题 brew doctor 很好。 工作就像一个魅力,谢谢【参考方案13】:

我发现以下内容与 Sophos Anti-Virus 用户相关:

https://***.com/a/32981184

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

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

【讨论】:

不幸的是我仍然得到这个,并且确实安装了 Sophos,FWIW:|【参考方案14】:

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

这就是我为使符号链接通过此错误所做的工作。 brew 似乎也重置了文件夹的权限,就好像您没有更改任何内容一样

【讨论】:

【参考方案15】:

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

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

【讨论】:

我不敢相信你的回答不那么受欢迎。这肯定比上面的猜测更谨慎。 brew doctor 不会解决问题,它只会告诉你它,当你听医生的建议时,brew 说它做不到。这不是解决方案 也许有人改进了它。现在 brew doctor 建议我运行与最流行的答案类似的 cmd,并且在这样做之后 brew 符号链接可以工作。我在mac上,所以我们看看它能持续多久。 :-) 这非常有用,谢谢。修复了一些其他特殊目录以 chown 以上建议遗漏。 brew doctor 提供了 EXACT 问题并提供了手动解决方案!

以上是关于Homebrew:无法符号链接,/usr/local/bin 不可写[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

列出自制软件包中的所有文件

Homebrew踩坑

mac系统下用nginx服务器部署页面

Homebrew PHP 似乎没有链接。 - 代客

NDS Homebrew:无法在 Visual Express 2008 中编译

LINUX系统里桌面的 unixODBC-2.3.0.tar.gz 怎么把文件放到/usr/loca/下 本人刚接触这个系统对于操作命令不