我有一台由两位工程师共享的Mac。两者都有单独的用户帐户。两者都需要偶尔运行brew update
和brew install...
。
如何在不出现错误的情况下进行设置:
/usr/local must be writable!
?
是的,我可以UserA
每次想要使用brew时都接管/usr/local
的权限(与UserB
相同),但这似乎有很多不必要的麻烦
答案 0 :(得分:57)
您还可以将群组权限更改为管理员或您的两个用户所在的其他群组:
chgrp -R admin /usr/local
chmod -R g+w /usr/local
原始来源:https://gist.github.com/jaibeee/9a4ea6aa9d428bc77925
<强>更新强>
在macOS High Sierra中,您无法更改/usr/local
的所有者,群组或权限。因此,您必须更改子文件夹的组和权限:
chgrp -R admin /usr/local/*
chmod -R g+w /usr/local/*
更新 2018年9月,High Sierra 10.13.6
brew
的所有用户是否位于管理组需要访问/权限才能使用 sudo 命令
echo $(brew --prefix)
echo $(groups $(whoami))
sudo dseditgroup -o edit -a $(whoami) -t user admin
sudo chgrp -R admin $(brew --prefix)
sudo chmod -R g+rwX $(brew --prefix)
ls -lah $(brew --prefix)
答案 1 :(得分:9)
Hombrew在/usr/local
中安装软件包,没有打破它安装的许多软件包,你无能为力。为所有用户添加读写权限,如下所示:
sudo chmod -R +rw /usr/local
请注意,由于这是一个系统文件夹,因此所有用户都将共享相同的brew安装。一个用户可以删除其他人已安装的软件包,依此类推。所以一定要协调以避免问题。
答案 2 :(得分:5)
这是user4815162342的答案的编辑版本,开箱即用对我来说不起作用。
brew-usergroup
的新组。将所有使用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 install
现在应该可以正常工作了,没有错误。
答案 3 :(得分:1)
最好的解决方案是添加sudoers记录,以允许非特权用户“ joe”以管理用户身份执行任何与“ brew”相关的命令。
在/etc/sudoers.d/joe中创建一个文件,内容如下:
joe ALL=(administrator) NOPASSWD: /usr/local/bin/brew
然后您可以像这样运行brew:
sudo -Hu administrator brew install <smth>
答案 4 :(得分:1)
上面的方法工作正常,但是如果您希望新文件自动继承那些权限,请设置一个继承的ACL(否则,只有倒瓶的用户才能删除它)。找到的提示可以在这里进行:https://gist.github.com/nelstrom/4988643
root
运行一次(假设“ admin”组的所有用户都应具有访问权限):
cd /usr/local
chmod -R +a "group:admin allow list,add_file,search,add_subdirectory,delete_child,readattr,writeattr,readextattr,writeextattr,readsecurity,file_inherit,directory_inherit" *
chgrp -R admin *
chmod -R g+rwX *
ls -lae .
-e
上的ls
显示ACL。
答案 5 :(得分:1)
如果您没有安装命令行工具:
xcode-select --install
根据brew文档,您可以使用以下命令将其安装在主文件夹中:
cd $HOME
mkdir homebrew && curl -L 'https://github.com/Homebrew/brew/tarball/master' | tar xz --strip 1 -C homebrew
echo 'export PATH="$HOME/homebrew/bin:$PATH"' >> .bash_profile
exit
cd $HOME
mkdir homebrew && curl -L 'https://github.com/Homebrew/brew/tarball/master' | tar xz --strip 1 -C homebrew
echo 'export PATH="$HOME/homebrew/bin:$PATH"' >> .zprofile
exit
然后,您可以运行brew doctor
以确保安装正确
答案 6 :(得分:0)
以上提到的每个答案对于High Sierra都是错误的。除了莫哈韦沙漠魔鬼一个,我都尝试过。
正确的答案是通过签出其git repo并将其brew二进制文件添加到您的路径中,从而在用户本地使用brew安装。不要对您的主要用户或初次用户Brew安装的所有权或权限感到困惑。
您将需要Homebrew / homebrew-core和Homebrew / brew。简单地说:
cd $ HOME && git clone Homebrew / homebrew-core && git clone Homebrew / brew
接下来,在此shell实例中更改此PATH实例的路径,并在.bashrc / .zshrc中添加此路径,然后更改其路径,然后重新启动(退出并重新输入)登录shell,以进行后续步骤:
export PATH = $ HOME / brew / bin:$ PATH
然后
酿造和酿造啤酒的医生
您实际上需要安装该用户可用的所有Brew软件包,因为它们现在与计算机上的第一个Brew用户具有单独的副本。
例如。
简单安装htop
答案 7 :(得分:0)
这是 Homebrew 维护者的 official answer。
除此之外,我建议再做 3 个步骤。假设您有一个拥有 niki
目录的管理员用户 /usr/local/*
,并且您以另一个管理员用户 niki_at_work
的身份登录。
~/brew.sh
:#!/bin/bash
comm="brew $@"
su niki -c "$comm"
chmod +x ~/brew.sh
.zshrc
或等效项:alias brew="~/brew.sh"
现在您可以像往常一样从 niki_at_work
冲泡(它会询问 niki
的密码):
brew update
brew install swiftlint
如果您想为 brew ex 使用专门的管理员用户。 brewadmin
你应该首先 chown brew dirs:
sudo chown -R brewadmin:admin /usr/local/*
答案 8 :(得分:-1)
上述解决方案对我不起作用。但是运行下面的命令对我有用。
sudo chown -R $(whoami) $(brew --prefix)/*
来源:https://github.com/Homebrew/brew/issues/3228#issuecomment-333858695