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:
-
打开系统偏好
点击帐户
点击“+”(必要时先解锁)
在新帐户下选择组
输入 酿造
点击创建组
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 不可写[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
NDS Homebrew:无法在 Visual Express 2008 中编译
LINUX系统里桌面的 unixODBC-2.3.0.tar.gz 怎么把文件放到/usr/loca/下 本人刚接触这个系统对于操作命令不