如何在多用户MacOS Sierra设置上使用自制软件
我有一台Mac电脑,由两名工程师共享。两者都有单独的用户帐户。两者都需要偶尔运行如何在多用户MacOS Sierra设置上使用自制软件,macos,permissions,homebrew,multi-user,Macos,Permissions,Homebrew,Multi User,我有一台Mac电脑,由两名工程师共享。两者都有单独的用户帐户。两者都需要偶尔运行brew update和brew安装… 如何设置此项而不出现以下错误: /usr/local必须是可写的 是的,我可以让UserA在每次他想使用brew时接管/usr/local的权限(和UserB一样),但这似乎是很多不必要的麻烦。请注意:到2020年,这个答案已经过时了。(但不能删除,因为它是公认的答案。) Hombrew在/usr/local中安装软件包,如果不破坏它安装的许多软件包,您将无能为力。为所有用户添
brew update
和brew安装…
如何设置此项而不出现以下错误:
/usr/local必须是可写的代码>
是的,我可以让UserA
在每次他想使用brew时接管/usr/local
的权限(和UserB
一样),但这似乎是很多不必要的麻烦。请注意:到2020年,这个答案已经过时了。(但不能删除,因为它是公认的答案。)
Hombrew在/usr/local
中安装软件包,如果不破坏它安装的许多软件包,您将无能为力。为所有用户添加读写权限,如下所示:
sudo chmod -R +rw /usr/local
sudo -Hu administrator brew install <smth>
请注意,由于这是一个系统文件夹,所有用户将共享相同的brew安装。一个用户可以删除其他用户安装的软件包,依此类推。因此,请确保协调以避免问题。您还可以将组权限更改为admin或您的两个用户所在的其他组:
chgrp -R admin /usr/local
chmod -R g+w /usr/local
原始资料来源:
更新:
在macOS High Sierra中,您不能更改/usr/local
的所有者、组或权限。因此,您必须更改子文件夹的组和权限:
chgrp -R admin /usr/local/*
chmod -R g+w /usr/local/*
更新2018年9月,High Sierra 10.13.6
确定brew前缀的路径,即用于存储与使用自制软件相关的文件的路径
检查系统上需要访问brew
的所有用户是否在管理组中
可选如果用户需要访问brew,则将用户添加到管理组
将需要访问权限/特权才能使用sudo命令
将brew前缀路径设置为由管理组递归拥有
将brew前缀路径设置为可由admin组中的所有用户递归写入
验证brew前缀的权限
brew上述解决方案对我不起作用。但是运行下面的命令对我来说很有效
sudo chown-R$(whoami)$(brew--前缀)/*
来源:最佳解决方案是添加sudoers记录,以允许非特权用户“joe”作为管理用户执行任何与“brew”相关的命令
在/etc/sudoers.d/joe处创建一个包含以下内容的文件:
joe ALL=(administrator) NOPASSWD: /usr/local/bin/brew
然后您可以像这样运行brew:
sudo chmod -R +rw /usr/local
sudo -Hu administrator brew install <smth>
sudo-Hu管理员brew安装
上述方法可以正常工作,但如果您希望新文件自动继承这些权限,请设置继承的ACL(否则,只有倒瓶子的用户才能将其删除)。在此处找到如何执行此操作的提示:
作为root
运行一次(假设组“admin”的所有用户都应该有访问权限):
ls
上的-e
显示ACL
更新:现在我使用特定目录(见上文),因为它失败了(如内存不足)编辑:请使用Vitim的答案,它是正确的:)
macOS Mojave 10.14的黑客解决方案
这是一个编辑版本的的的答案,这对我来说不是现成的
在系统首选项中,转到用户和组,单击左下角的锁定符号以解锁用户/组创建,然后创建名为brew用户组的新组。将所有使用brew的用户添加到组中(如所附的德国macOS屏幕截图)
在终端中,执行以下操作:
echo $(brew --prefix)
echo $(groups $(whoami))
sudo dseditgroup -o edit -a $(whoami) -t user brew-usergroup
sudo chgrp -R brew-usergroup $(brew --prefix)/*
sudo chmod -R g+rwX $(brew --prefix)/*
ls -lah $(brew --prefix)
请注意,这不再改变brew文件夹的权限(与其他答案一样),而是改变brew文件夹的子文件夹/文件。
brew安装
现在应该可以正常工作,不会出现错误。任何试图破解权限或使用sudo
的答案都是错误的
不要使用sudo
,也不要跨用户帐户共享单个brew安装
每个的正确答案是在机器上使用零或一个全局brew安装,对于所有其他用户,安装本地版本的brew
这在Mac上尤其重要,但在Linux上也可以
这可以通过以下方法之一实现
Git方法
:对源回购进行Git签出
Untar-anywhere方法
:将tarball扩展到某个目录中–由您的用户拥有
Git方法
对于git方法,您需要克隆
为我的签出任意选择我的用户主目录:
cd$HOME
git克隆https://github.com/Homebrew/brew.git
./brew/bin/brew点击自制/核心
Untar Anywhere方法
如中所述,在主目录中运行此命令,将创建~/homebrew
mkdir自制&curl-Lhttps://github.com/Homebrew/brew/tarball/master |tar xz——strip 1-C自制
结束
对于任何一种安装方法,您都需要更改路径
,以选择新的brew bin目录,并在shell的点文件中添加类似的内容
export PATH=$HOME/homebrew/bin:$PATH>~/.zshrc#或~/.bashrc
然后运行它来重新加载和测试
exec$SHELL
哪个brew?查看路径中的brew
由于这是新安装,您必须(再次)安装所有所需的brew软件包。为每个用户安装homebrew
根据需要,您可以将其安装在每个用户的主文件夹中
这样,所有包都将保留在您的用户文件夹中,并且不会可见或影响其他用户。如果您删除了该用户,则系统中不会留下任何垃圾,这是一个很好的副作用。因此,全系统的污染被最小化
如果您为m安装了相同的软件包,那么这是以使用更多存储为代价的