在 Homebrew 中安装错误

Posted

技术标签:

【中文标题】在 Homebrew 中安装错误【英文标题】:Installing in Homebrew errors 【发布时间】:2011-06-15 19:21:10 【问题描述】:

正在尝试安装 rvm 和 ruby​​ 1.9.2

我已经安装了 homebrew 和 git,但由于我不断收到权限错误,所以无法获得完整的更新。重新安装雪豹并修复权限。

现在发生了这种情况......

$ brew install wget

错误:无法写入 /usr/local/Cellar

【问题讨论】:

***.com/questions/4804169/… 应该被标记为已接受的答案 - 我担心没有看到这个问题尚未得到回答的访问者会继续前进 【参考方案1】:

您是如何安装 Homebrew 的?他们的official installation instructions 包括运行 ruby​​ 脚本。那应该为您解决权限问题。

如果您不想运行脚本,该页面中有一个名为“为开发人员安装到 /usr/local”的部分,它解释了 /usr/local 目录所需的权限更改。

【讨论】:

我使用了一个脚本并安装了它,但更新仍然有问题。我将用户数据迁移到一台新笔记本电脑上。不得不从 github b/c 做一些变通方法,脚本起初不起作用。【参考方案2】:

sudo chown -R $USER /usr/local

您必须在此处使用该行给自己/usr/local/ 的所有权。在使用官方文档顶部的 ruby​​ one-liner 安装 Homebrew 后,我不得不自己做这件事。对我来说就像一个魅力。这应该是您唯一一次需要使用 Homebrew 来sudo

我不确定红宝石单线是否可以做到这一点。如果是这样,那么我系统上的其他东西就控制了/usr/local

编辑:我完全错过了这个,但@samvermette 没有(请参阅对我的回答的回复):如果您在上面运行此命令并通过自制软件安装了需要特殊用户权限的东西,像mysql 一样,请确保将这些权限归还(因为上面的命令将/usr/local 中的所有内容递归所有权授予您($USER)。对于mysql,它是......

sudo chown -RL mysql:mysql /usr/local/mysql/data

【讨论】:

请注意:此命令将从mysql 用户删除/usr/local/mysql/data 的所有权。在我的情况下,这阻止了 mysql 启动。修复:sudo chown -RL mysql:mysql /usr/local/mysql/data 我通过使用 sudo chown -R $USER /usr/local/Cellar 避免了 mysql 问题,因为 /usr/local/ 已经拥有正确的权限 唉,用户来来去去……也许有一天易卜拉欣会回来标记它。可能是。 (可能不会。) 我不喜欢这个答案。它假定只有一个用户曾经使用过系统,并且该用户应该拥有 /usr/local 的所有内容,尽管问题只是关于自制软件。 brew 不适用于多用户系统吗?这是一个草率的答案,即使它确实有效。此外,它没有解释用户是如何遇到这种情况的。提示 - 我使用规范指令安装了 HomeBrew,然后从 TimeMachine 备份恢复(到另一台机器)。我怀疑是还原改变了文件所有权。 我同意@JasonR.Coombs;人们不应该在不了解实际和安全后果的情况下使用这种草率的解决方案。 /usr/local 中的任何软件现在都可能被您的用户下运行的任何软件覆盖,从而打开一个安全漏洞。您完全有可能通过盲目地运行第一个 chown 命令来搞砸其他事情(除了 MySQL),之后再识别和修复您可能刚刚搞砸的所有事情就为时已晚。【参考方案3】:

我在升级到 Mavericks 后遇到了这个问题,并且在谷歌搜索错误消息时,此页面是最热门的搜索结果。我继续搜索,发现this answer on stack overflow.com。简而言之就是:

sudo chmod a+w /usr/local/Cellar

这解决了我的问题,因为它只更改错误消息中引用的特定路径的权限,似乎不太可能对其他安装产生负面影响。

我将这个答案放在这里,以供其他可能像我一样首先找到此页面的人使用。但是,信用应该归jdi。

【讨论】:

这是否被认为是不安全的,因为现在每个人都可以写信到 /usr/local/Cellar? 对于需要访问其他文件夹(例如/usr/local/bin)的包,此答案失败。【参考方案4】:

编辑:正如 cmets 中所述,将 sudo 与 homebrew 一起使用是个坏主意,所以不要使用以下答案!


如果你用 sudo 执行命令也可以防止这个错误:

$ sudo brew install wget

但请注意使用sudo,因为您可能会犯很多错误。

【讨论】:

这种方法失败,因为后期版本的自制软件不允许以 root 身份调用(通过 sudo)。【参考方案5】:

我建议确保当前用户是拥有 /usr/local 的组的成员。我相信默认情况下,该组是wheel。使自己成为该组的成员:

$ sudo dscl . append /Groups/wheel GroupMembership $USER

虽然有点不雅,但它具有预期的效果 - 允许访问 /usr/local 中仅供提升成员使用(读/写)的项目。这种方法具有上述其他方法的优点,因为它利用了组成员资格,使系统上的多个(授权)用户能够使用自制软件。

【讨论】:

【参考方案6】:

您只能允许管理员用户写入/usr/local/

chgrp -R admin /usr/local
chmod -R g+w /usr/local
chgrp -R admin /Library/Caches/Homebrew
chmod -R g+w /Library/Caches/Homebrew

由于每个属于 Admin 组的用户都可以安装新的依赖项。

【讨论】:

对于多管理员机器来说似乎是一个更好的解决方案(尽管我的 /usr/local/lib 目录也需要 g+x 才能使 aspell 工作)。 为避免出现““brew 链接”步骤未成功完成”错误,您还可以应用 this thread 中的内容,即 sudo chgrp -R admin /usr/local/DDDD + sudo chmod -R g+w /usr/local/DDDD 其中 DDDD 是 bin , share, Library/LinkedKegs, opt 谢谢,我不得不使用“sudo”,所以如果这些命令不起作用,请尝试在它前面加上 sudo【参考方案7】:

卸载并重新安装 HomeBrew 即可解决问题

【讨论】:

【参考方案8】:

在 High Sierra 上,您需要以下命令,因为 chown 不起作用:

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

链接:

https://github.com/Homebrew/brew/issues/3228

【讨论】:

以上是关于在 Homebrew 中安装错误的主要内容,如果未能解决你的问题,请参考以下文章

如何使用Homebrew中安装的python3版本而不是库中安装的版本?

在 macOS Movaje 10.14 中安装 Homebrew + nginx + rtmp

Mac系统中安装homebrew(类似redhat|Centos中的yum;类似Ubuntu中的apt-get)

在 Eclipse 中安装 Android ADT 显示错误

使用作曲家在 Laravel 中安装错误

在 python 中安装 Imblearn 时找不到版本错误