Homebrew:不能符号链接,/ usr / local / bin不可写
在安装HomeBrew
, 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
在Alex的回答之后,我能够解决这个问题。 似乎这是一个问题非特定于正在安装的软件包,但homebrew
文件夹的权限。
sudo chown -R `whoami`:admin /usr/local/bin
对于某些软件包,您可能还需要对/usr/local/share
执行此操作。
sudo chown -R `whoami`:admin /usr/local/share
我不build议运行任何特定的命令,而是build议运行brew doctor
并认真对待所有警告。 您可能会遇到其他问题,在此问题中可能无法捕获这些问题。
另外,随着brew的更新随着时间的推移,特定的命令可能会也可能不会保持有效。 但是, brew doctor
会确保您能及时排除故障。
其他的答案是正确的,但是他们没有回答为什么会出现这个问题,以及如何解决这个根本原因。
原因
这个问题有两个可能的原因:
- 自制程序安装是使用除当前使用的用户之外的用户执行的。 Homebrew希望只有最初安装它的用户才会使用它。
- 您安装了一些可以在不使用brew的情况下写入/ usr / local的软件。 这是
brew doctor
build议的原因,如果你运行它。
解
多用户自制软件
如果您有多个用户帐户,并且您希望多个用户中的一个能够使用brew,则需要执行几个步骤,否则每次切换用户时都需要不断更改Homebrew文件结构的所有权,这不是一个好主意。
详细的说明可以在网上find,但快速的答案是这样的:
-
创build一个名为brew 的组 :
- 打开系统首选项
- 点击帐户
- 点击“+”(必要时先解锁)
- 在新帐户下select组
- 进入酿造
- 点击创build组
- selectbrew组,然后添加您想要使用的用户账户brew。
- 更改/ usr / local文件夹组的所有权:
sudo chgrp -R brew /usr/local
- 更改权限以添加写入/ usr / local作为组:
sudo chmod -R g+w /usr/local
- 改变自制caching目录组:
sudo chgrp -R brew /Library/Caches/Homebrew
- 改变自制caching目录权限:
sudo chmod -R g+w /Library/Caches/Homebrew
单用户自制软件
如果你不想使用多于一个用户的自制软件,那么根据brew doctor
的build议,其他答案提供的解决scheme可能就足够了:
sudo chown -R $(whoami) /usr/local
sudo chown -R $(whoami) /Library/Caches/Homebrew
validation
在完成这些步骤之后, brew doctor
应该报告酿造组中的任何用户报告成功,假设您已经注销并返回以应用新的组成员(如果使用了多用户路由)。 如果您只是为单一用户自制软件纠正了一些问题,那么不需要注销并重新login,因为您的组成员身份都没有更改。
我发现我的特定设置下面的命令工作
brew doctor
然后,这告诉我,我的错误是什么,然后这个稍微不同的命令从上面的评论。
sudo chown -R $(whoami) /usr/local/opt
对我来说,解决scheme是运行brew update
。
所以,请做这个。
对熟悉自制的人来说,这可能是正常的做法,但我不是那些人之一。
编辑:我发现我需要通过运行brew doctor
来更新,正如@ kinnth对这个问题的回答所build议的。
一般的故障排除工作stream程可能如下所示:1.运行brew update
2.如果这样做无法运行brew doctor
并按照其指示进行操作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版本中。
这是因为当前用户不允许写入该path。 因此,要更改读写权限,您可以使用1.terminal,或2.graphics“获取信息”窗口。
1.使用terminal
Google如何从terminal使用chmod / chown (更改模式/更改所有者)命令
2.使用graphics“获取信息”
你可以右键点击你要更改权限的文件夹/文件,然后打开获取信息 ,它会显示一个如下所示的窗口,在其底部可以轻松更改读写权限:
如果可能的话,请记住在临时工作之后将权限更改回“只读”
如果你在find文件夹,右键单击并select“获取信息”,您可以转到文件夹的“共享和权限”部分,并允许“读写”到“所有人”
这是我做什么使符号链接通过这个错误。 也酿造似乎重置文件夹上的权限也就好像你没有改变任何东西