Homebrew多用户设置

19
我在尝试修复多用户的Homebrew安装问题,并在strug.de上找到了一篇指南,旨在解决这个问题。
我创建了一个名为brew的用户组,将我的两个用户添加到该组中,并运行此命令以调整权限:
sudo chgrp -R brew /usr/local
sudo chmod -R g+w /usr/local
sudo chgrp -R brew /Library/Caches/Homebrew
sudo chmod -R g+w /Library/Caches/Homebrew
sudo chgrp -R brew /opt/homebrew-cask
sudo chmod -R g+w /opt/homebrew-cask

假设我在用户账户A登录时执行了这个操作。几天后,我登录到用户账户B并尝试通过Cask安装Dropbox。这很容易实现,因为我们之前修复了权限,使得brew组也可以在这些文件夹中写入。
再过几天,我回到用户账户A并想要摆脱Dropbox。我运行以下命令,但遇到了权限错误:
$ brew cask install dropbox --force
==> Downloading https://www.dropbox.com/download?plat=mac&full=1
Already downloaded: /Library/Caches/Homebrew/dropbox-latest
==> Symlinking App 'Dropbox.app' to '/Users/friedmann/Applications/Dropbox.app'
Error: Permission denied - /opt/homebrew-cask/Caskroom/dropbox/.metadata/latest/20150217070443.598

  Most likely, this means you have an outdated version of homebrew-cask. Please run:

      brew update && brew upgrade brew-cask && brew cleanup && brew cask cleanup

  If this doesn’t fix the problem, please report this bug:

      https://github.com/caskroom/homebrew-cask/issues

/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:245:in `mkdir'
[...]

为了修复用户B的问题,我必须再次运行chgrpchmod(如上所述)。但是,这种解决方法并不被真正欣赏,因为我不想在我的用户账户之间来回切换时“随机”运行所有命令。
是否有任何我遗漏或按照指南做错的地方?
我不确定指南的作者是如何解决这个问题的。

1
刚刚发现了brewdo - 一个sudo和brew的组合。然而,它对我来说太“hacky”了。我使用bork(一个很棒的DSL)来管理我的brew公式,不幸的是,brewdo在那里也没有得到支持。 - frdmn
你链接的网站在2020年已经失效了。 - martin-martin
4个回答

18
我从几篇文章中整理出以下内容,因为我在一个地方找不到所有需要的东西,例如创建组的命令。
在我的macOS Mojave 10.14.4 (18E226)上运行良好。 brew-multiuser.sh:
#!/bin/bash

# Create a new group, brew
sudo dseditgroup -o create brew

# Change owner to brew group on brew assets
sudo chgrp -R brew $(brew --prefix)/*

# Change permissions to brew group
sudo chmod -R g+w $(brew --prefix)/*

# Add a user to the brew group
sudo dseditgroup -o edit -a userOne -t user brew

# Add another user to the brew group
sudo dseditgroup -o edit -a userTwo -t user brew

# Validate links, etc.
brew doctor

# Make any corrections from the `brew doctor` warnings, such as relinking.

# Run brew doctor to validate fixes
brew doctor

# Make sure it's working without error, with an update
brew update

3
在将自己添加到brew组并运行brew doctor之间,您需要启动一个新的shell,以便更新您的组。 - gmarmstrong
这篇帖子应该得到更多的点赞!非常感谢。在我的情况下,按照上述步骤之后,我不得不清空Casks目录以使权限生效。 - undefined

6

我在Catalina 10.15.2上进行配置,按照以下步骤操作:

注意

我使用“系统首选项”中的“用户和组”设置来创建brew组(在创建新帐户时选择该组)。我为该组添加了执行权限,以便非管理员用户可以访问dart2native可执行文件。

我还使用Cakebrew来管理所有配方,一旦配置正在运行。我发现一个警告,即如果A用户锁定文件,则他们需要运行清理命令才能为B用户准备干净的homebrew。

当使用brew cask install <appname>时,如果其中一个用户不是管理员,则你可能会遇到问题,在这种情况下,管理员用户可能需要进行安装。

除去这些警告之外,一切似乎都很正常。

设置

(假设Allen是管理员,Stan不是)

  • 创建brew组并添加Allen和Stan
  • brew doctor(Allen检查是否正确安装brew)
  • sudo chgrp -R brew $(brew --prefix)/*(更改homebrew安装目录的组)
  • sudo chmod -R g+w+x $(brew --prefix)/*(允许组成员在此目录中读取、写入和执行)
  • brew doctor(Stan检查是否可以使用homebrew)

(来源:https://medium.com/@leifhanack/homebrew-multi-user-setup-e10cb5849d59


4

我知道这个问题有点老,但我的回答可以帮助到其他遇到类似问题的人。

对于多用户使用homebrew-cask,帮助我解决问题的方法是设置Caskroom文件夹的权限:

sudo chgrp -R brew /opt/homebrew-cask/Caskroom
sudo chmod -R g+w /opt/homebrew-cask/Caskroom

然后,brew cask install dropbox 就可以正常使用了。

这对我来说似乎有效,但是由于某些原因,只有所有者才能执行“brew update”。你有什么想法吗? - timhc22
1
此外,也许值得在这个答案中添加一个更新,因为他们现在已经将目录更改为 /usr/local。 - timhc22

1
除了Gregorio的回答之外,我发现我还必须:
sudo chgrp -R brew /usr/local/Cellar
sudo chmod -R g+w /usr/local/Cellar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接