我现在已经卸载并安装了 Homebrew 3 次,因为它似乎永远不允许我安装任何东西,因为它在大多数安装结束时拒绝了我的权限。
作为一个例子,我将发布我目前面临的这个 libjpeg 下载场景。
我尝试安装 libjpeg 并获得:
$ brew install libjpeg
==> Downloading https://downloads.sf.net/project/machomebrew/Bottles/jpeg-8d.mountain_lion.bottle.1.tar.gz
Already downloaded: /Library/Caches/Homebrew/jpeg-8d.mountain_lion.bottle.1.tar.gz
==> Pouring jpeg-8d.mountain_lion.bottle.1.tar.gz
Warning: Could not link jpeg. Unlinking...
Error: The brew link step did not complete successfully
The formula built, but is not symlinked into /usr/local
You can try again using `brew link jpeg'
Error: Permission denied - /usr/local/opt/jpeg
'brew link jpeg' 结果
Error: Permission denied - /usr/local/opt/jpeg
这是我的酿酒医生读到的
$ brew doctor
Warning: "config" scripts exist outside your system or Homebrew directories.
./configure scripts often look for *-config scripts to determine if
software packages are installed, and what additional flags to use when
compiling and linking.
Having additional scripts in your path can confuse software installed via
Homebrew if the config script overrides a system or Homebrew provided
script of the same name. We found the following "config" scripts:
/Library/Frameworks/Python.framework/Versions/2.7/bin/python-config
/Library/Frameworks/Python.framework/Versions/2.7/bin/python2-config
/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7-config
Warning: You have unlinked kegs in your Cellar
Leaving kegs unlinked can lead to build-trouble and cause brews that depend on
those kegs to fail to run properly once built. Run brew link on these:
jpeg
这个权限问题使得 brew 无法在任何东西上使用,我非常感谢任何建议。
我能够通过在文件夹上使用 chown
来解决问题:
sudo chown -R "$USER":admin /usr/local
此外,您(很可能)必须在 /Library/Caches/Homebrew
上做同样的事情:
sudo chown -R "$USER":admin /Library/Caches/Homebrew
显然,我以前使用过 sudo
,改变了我对 /usr/local
的文件夹权限,从这里开始,所有使用 brew 的安装都被证明是成功的。
此答案来自 gitHub's homebrew issue tracker
macOS High Sierra 用户的新命令,因为无法在 /usr/local
上执行 chown
:
bash/zsh
:
sudo chown -R $(whoami) $(brew --prefix)/*
fish
:
sudo chown -R (whoami) (brew --prefix)/*
参考:Can't chown /usr/local in High Sierra
sudo chown -R (whoami) (brew --prefix)/*
sudo mkdir /usr/local/Frameworks
,然后是这个答案中出现的 chown 命令。
作为像我一样登陆这里的任何人的第一选择,请遵循以下建议您做的任何事情:
brew doctor
这是最安全的路径,除其他外,它建议我:
sudo chown -R $(whoami) /usr/local
这解决了该权限问题。
OP 就是这样做的,但显然没有得到上述建议;你可能会,而且从那里开始总是更好,然后才寻找非平凡的解决方案,如果它没有帮助。
chown: /usr/local: Operation not permitted
不起作用
如果您使用的是 OSX High Sierra,则无法再使用 chown
。您可以使用:
sudo chown -R $(whoami) $(brew --prefix)/*
我没有 /usr/local/Frameworks
文件夹,所以这为我修复了它
sudo mkdir -p /usr/local/Frameworks
sudo chown -R $(whoami) /usr/local/Frameworks
第一行创建一个新的 Frameworks 文件夹供 homebrew (brew) 使用。第二行为该文件夹提供了您当前的用户权限,这已经足够了。
使用的命令如下:
mkdir - 创建目录 [-p 如果存在则没有错误,根据需要创建父目录] chown - 更改文件所有者和组 [-R 递归操作文件和目录] whoami - 打印有效用户 ID
我有 OSX High Sierra
我还不想弄乱文件夹权限,所以我做了以下事情:
brew doctor
brew upgrade
brew cleanup
然后我能够继续成功安装我的其他冲泡配方。
我遇到了这个问题。一个可行的解决方案是将 /usr/local
的所有权更改为当前用户而不是 root
,方法是:
sudo chown -R $(whoami):admin /usr/local
但实际上这不是正确的方法。主要是如果您的机器是服务器或多用户。
我的建议是如上所述更改所有权并使用 Brew 执行任何您想实现的操作 ..(更新、安装...等),然后将所有权重置为 root:
sudo chown -R root:admin /usr/local
那将解决问题并将所有权设置在适当的设置中。
来自投票最多的 answer 的命令对我不起作用。
它得到了输出:
chown: /usr/{my_username}dmin: 非法用户名
此命令工作正常(/usr/local 的组已经是 admin
):
sudo chown -R $USER /usr/local
sudo chown -R "$USER":admin /usr/local
Error: Running Homebrew as root is extremely dangerous and no longer supported. As Homebrew does not drop privileges on installation you would be giving all build scripts full access to your system.
chown: /usr/local: Operation not permitted
如果您想要比总括 chown -R
稍微更有针对性的方法,您可能会发现 this fix-homebrew
脚本很有用:
#!/bin/sh
[ -e `which brew` ] || {
echo Homebrew doesn\'t appear to be installed.
exit -1
}
BREW_ROOT="`dirname $(dirname $(which brew))`"
BREW_GROUP=admin
BREW_DIRS=".git bin sbin Library Cellar share etc lib opt CONTRIBUTING.md README.md SUPPORTERS.md"
echo "This script will recursively update the group on the following paths"
echo "to the '${BREW_GROUP}' group and make them group writable:"
echo ""
for dir in $BREW_DIRS ; do {
[ -e "$BREW_ROOT/$dir" ] && echo " $BREW_ROOT/$dir "
} ; done
echo ""
echo "It will also stash (and clean) any changes that are currently in the homebrew repo, so that you have a fresh blank-slate."
echo ""
read -p 'Press any key to continue or CTRL-C to abort.'
echo "You may be asked below for your login password."
echo ""
# Non-recursively update the root brew path.
echo Updating "$BREW_ROOT" . . .
sudo chgrp "$BREW_GROUP" "$BREW_ROOT"
sudo chmod g+w "$BREW_ROOT"
# Recursively update the other paths.
for dir in $BREW_DIRS ; do {
[ -e "$BREW_ROOT/$dir" ] && (
echo Recursively updating "$BREW_ROOT/$dir" . . .
sudo chmod -R g+w "$BREW_ROOT/$dir"
sudo chgrp -R "$BREW_GROUP" "$BREW_ROOT/$dir"
)
} ; done
# Non-distructively move any git crud out of the way
echo Stashing changes in "$BREW_ROOT" . . .
cd $BREW_ROOT
git add .
git stash
git clean -d -f Library
echo Finished.
它没有对您的用户执行 chmod
,而是授予 admin
组(您可能属于该组)对 homebrew 使用的 /usr/local
中的特定目录的写入权限。它还会告诉您在执行此操作之前它打算做什么。
这对我有用:
sudo chown -R "$USER":admin /usr/local/Cellar/*
brew cleanup
我用这些命令解决了我的问题:
sudo mkdir /usr/local/Cellar
sudo mkdir /usr/local/opt
sudo chown -R $(whoami) /usr/local/Cellar
sudo chown -R $(whoami) /usr/local/opt
Mac OS 10.13.4
有帮助的唯一事情在我的情况下,我必须创建 sudo mkdir /usr/local/Frameworks
和 sudo chown -R $(whoami) /usr/local/Frameworks
才能链接 python!
在我的情况下, /usr/local/Frameworks 甚至不存在,所以我做到了:
sudo mkdir /usr/local/Frameworks
sudo chown -R $(whoami) /usr/local/Frameworks
然后一切都按预期工作。
这解决了我面前的问题。
sudo chown -R "$USER":admin /Users/$USER/Library/Caches/Homebrew
sudo chown -R "$USER":admin /usr/local
对于多用户 Mac,这对我有用:
sudo chown -R $(whoami):admin $(brew --prefix)/*
首先,在 MacOS Catalina 中,不再允许更改 /usr/local 所有权的基本方法。例如:
$ sudo chown -R "$USER":wheel /usr/local
Password:
chown: /usr/local: Operation not permitted
$ sudo chown -R "$USER" /usr/local
chown: /usr/local: Operation not permitted
$ sudo chown -R $(whoami) /usr/local
chown: /usr/local: Operation not permitted
因此,不能使用上述流行的答案。其次,但是,退后一步,如果主要关注的是安装或升级 Homebrew,而不是想更改 /usr/local 本身的权限,那么它可能是矫枉过正(就像拿大锤敲钉子一样)更改 /usr/local 的权限。它会影响您的整台机器,其他软件也可能正在使用 /usr/local。例如,我在 /usr/local 中有与 maven 和 mySQL 相关的文件。
更精确的解决方案是按照 the Homebrew GitHub site 中给出的说明安装 Homebrew,即
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
它将 Homebrew 安装在 /usr/local 内而不改变 /usr/local 本身的所有权。而是将 Cellar、Caskroom、Frameworks、Homebrew 等安装在 /usr/local 中。在我看来,这似乎是一个更优雅、更精确的解决方案。
permission denied
。
error: unable to unlink old 'Library/Homebrew/cmd/vendor-install.sh': Permission denied
。
对我来说,它工作后
brew doctor
更改权限命令导致另一个错误
chown: /usr/local: Operation not permitted
所有这些建议都可能奏效。在最新版本的 brew doctor 中,提出了更好的建议。
首先 - 通过在命令行中运行它来修复您可能已经对 /usr/local
造成的混乱:
sudo chown -R root:wheel /usr/local
然后获取应该专门针对该用户的路径的所有权:
sudo chown -R $(whoami) /usr/local/lib /usr/local/sbin /usr/local/var /usr/local/Frameworks /usr/local/lib/pkgconfig /usr/local/share/locale
如果您运行 sudo brew update
并阅读您将遇到的所有警告和错误,则所有这些信息都可用...
在 MacOS Mojave 上,我也无权chown
/usr/local 文件夹 (sudo chown -R "$USER":admin /usr/local
)。
但是,sudo chown -R "$USER":admin /usr/local/*
确实为我工作,改变了本地文件夹内所有内容的权限。
希望这将帮助其他人解决同样的问题。
2022 年,这在 Monterey 的 M1 Mac 上对我有用
sudo chown -R $(whoami) $(brew --prefix)/*
其实很简单,执行这个命令:brew doctor
它会告诉你该怎么做,解决权限问题,例如在我的例子中:
这就是问题所在:
Warning: The following directories are not writable by your user:
/usr/local/share/man/man5
/usr/local/share/man/man7
这就是解决方案:
You should change the ownership of these directories to your user.
sudo chown -R $(whoami) /usr/local/share/man/man5 /usr/local/share/man/man7
github 上有一个杀手级脚本,它修复了 /usr/local 和 brew 目录上的权限,任何属于“admin”组成员的人都可以访问。
https://gist.github.com/jaibeee/9a4ea6aa9d428bc77925
这是比选择的答案更好的解决方案,因为如果您将 /usr/local/___ 目录更改为 $USER,那么您会破坏该机器上任何其他自制软件的管理员用户。
以下是我发布此内容时脚本的内容:
chgrp -R admin /usr/local
chmod -R g+w /usr/local
chgrp -R admin /Library/Caches/Homebrew
chmod -R g+w /Library/Caches/Homebrew
chgrp -R admin /opt/homebrew-cask
chmod -R g+w /opt/homebrew-cask
我在 Catalina 上,我收到了这个错误:
touch: /usr/local/Homebrew/.git/FETCH_HEAD: Permission denied
touch: /usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask/.git/FETCH_HEAD: Permission denied
fatal: Unable to create '/usr/local/Homebrew/.git/index.lock': Permission denied
fatal: Unable to create '/usr/local/Homebrew/.git/index.lock': Permission denied
我只需要 chown Homebrew
目录
sudo chown -R "$USER":admin /usr/local/Homebrew
cd /usr/local && sudo chown -R $(whoami) bin etc include lib sbin share var opt Cellar Frameworks
如果您的 Mac 上碰巧有多个帐户,则您当前的帐户与最初拥有 /usr/local
的主要帐户属于不同的用户组,这意味着上述解决方案都不起作用。
您可以通过尝试 ls -la /usr/local
来检查这一点,并查看哪些用户和组有权在目录上写入。就我而言,它是 root wheel
。它可能是root admin
。
我通过使用以下命令将当前用户添加到主帐户拥有的组来解决它。
sudo dseditgroup -o edit -a $(whoami) -t user admin
sudo dseditgroup -o edit -a $(whoami) -t user wheel
在那之后它就像一个魅力。希望它可以帮助那里的人。
使用以下命令卸载 brew 并重新安装,以确保链接到 brew github 以及与本地文件夹的关联权限正常工作:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
这非常有效。我自己没有权限乱搞,只需重新安装 Homebrew 就可以了!
来源:https://gist.github.com/irazasyed/7732946#gistcomment-2298740
sudo chown -R $(whoami) $(brew --prefix)/*
如果您没有最新的 Homebrew:我过去通过强制 Homebrew 以 root 身份运行来“修复”这个问题,这只能通过将 Homebrew 可执行文件的所有权更改为 root 来完成。在某个时候,他们删除了此功能。
而且我知道他们会给出很多警告说它不应该以 root 身份运行,但是来吧,否则它不能正常工作。
我尝试了此页面上的所有内容,最终使用了此解决方案:
brew uninstall --force brew-cask; brew untap $tap_name; brew update; brew cleanup; brew cask cleanup;
我的情况与 OP 类似,但是我的问题是由 brew cask 运行 sudo 引起的,然后我的密码不正确。在此之后,我被阻止安装的权限卡住了。
解决文件夹运行的 Brew 权限错误
brew prune
这将解决问题并且我们不必更改任何目录。
brew cleanup --prune-prefix
就我而言,我在删除和重新安装 SaltStack 时遇到了问题。
运行后:
ls -lah /usr/local/Cellar/salt/
我注意到群主是“员工”。 (顺便说一句,我正在运行 macOS Mojave 版本 10.14.3。)员工组可能与我的工作场所配置有关,但我真的不知道。无论如何,我保留了该组以防止自己进一步破坏任何东西。
然后我跑了:
sudo chown -R "$USER":staff /usr/local/Cellar/salt/
之后,我成功地用这个命令(不是root)删除了它:
brew uninstall --force salt
我使用了这两个命令并保存了我的问题
sudo chown -R $(whoami) /usr/local
sudo chown -R $(whoami) /usr/local/etc/bash_completion.d /usr/local/lib/python3.7/site-packages /usr/local/share/aclocal /usr/local/share/locale /usr/local/share/man/man7 /usr/local/share/man/man8 /usr/local/share/zsh /usr/local/share/zsh/site-functions /usr/local/var/homebrew/locks
不定期副业成功案例分享
sudo chown -R $USER:admin /Library/Caches/Homebrew
来解决我的权限问题。admin
组是每个管理员用户(除其他外,它是每个可以sudo
的 macOS 用户帐户用户),因此通过与chmod -R g+w /usr/local
一起运行chown -R …:admin
(如 @AndreaDeGaetano 所建议的那样),您在这里不会做错任何事,并且与同样使用/usr/local
/brew
的其他用户的问题为零。