Sat*_*ino 547 macos homebrew libjpeg
我已经卸载并安装了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
Run Code Online (Sandbox Code Playgroud)
'brew link jpeg'导致
Error: Permission denied - /usr/local/opt/jpeg
Run Code Online (Sandbox Code Playgroud)
这是我的酿酒医生所读的内容
$ 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
Run Code Online (Sandbox Code Playgroud)
这个许可问题一直使得任何事情都无法使用brew,我真的很感激任何建议.
Sat*_*ino 916
我能够通过chown
在文件夹上使用来解决问题:
sudo chown -R "$USER":admin /usr/local
Run Code Online (Sandbox Code Playgroud)
你也(很可能)也必须这样做/Library/Caches/Homebrew
:
sudo chown -R "$USER":admin /Library/Caches/Homebrew
Run Code Online (Sandbox Code Playgroud)
显然我曾经sudo
以一种改变我的文件夹权限的方式使用过/usr/local
,从这里开始所有使用brew的安装都证明是成功的.
这个答案来自gitHub的自制问题跟踪器
and*_*g97 382
对macOS High Sierra用户的新命令,因为无法chown
启用/usr/local
:
sudo chown -R $(whoami) $(brew --prefix)/*
参考:https://github.com/Homebrew/brew/issues/3228
Nyc*_*cen 263
作为像我一样在这里登陆的第一个选择,请按照以下建议您做的事情:
brew doctor
Run Code Online (Sandbox Code Playgroud)
这是最安全的道路,除其他外,它建议我:
sudo chown -R $(whoami) /usr/local
Run Code Online (Sandbox Code Playgroud)
这解决了权限问题.
OP就是这么做的,但显然没有得到上述建议; 你可能会,从那里开始总是更好,然后只有在没有帮助的情况下才寻找非平凡的解决方案.
Ric*_*ard 71
如果你在OSX High Sierra上,那就/usr/local
再也不能了chown
.您可以使用:
sudo chown -R $(whoami) $(brew --prefix)/*
Mah*_*raa 27
我有这个问题..一个有效的解决方案是将所有权更改/usr/local
为当前用户而不是root
:
sudo chown -R $(whoami):admin /usr/local
Run Code Online (Sandbox Code Playgroud)
但实际上这不是一个正确的方法.主要是如果您的机器是服务器或多用户.
我的建议是如上所述更改所有权并使用Brew执行任何操作..(更新,安装...等)然后将所有权重置为root,如下所示:
sudo chown -R root:admin /usr/local
Run Code Online (Sandbox Code Playgroud)
这将解决问题,并保持所有权设置正确.
Kar*_*ner 26
我没有/usr/local/Frameworks
文件夹,所以这个修复了它
sudo mkdir -p /usr/local/Frameworks
sudo chown -R $(whoami) /usr/local/Frameworks
Run Code Online (Sandbox Code Playgroud)
我有OSX High Sierra
小智 15
这对我有用:
sudo chown -R "$USER":admin /usr/local/Cellar/*
brew cleanup
Run Code Online (Sandbox Code Playgroud)
sky*_*der 14
来自最高投票回答的命令对我不起作用.
它有输出:
chown:/ usr/{my_username} dmin:非法用户名
这个命令工作正常(/ usr/local组admin
已经是):
sudo chown -R $USER /usr/local
Run Code Online (Sandbox Code Playgroud)
dar*_*rco 12
如果您想要比毯子更有针对性的方法chown -R
,您可能会发现此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.
Run Code Online (Sandbox Code Playgroud)
它不是对chmod
用户执行操作,而是为admin
组(您可能属于该组)提供/usr/local
对该自制程序使用的特定目录的写访问权.它还会在完成之前准确地告诉您它打算做什么.
Ant*_* To 12
我不想使用文件夹权限,所以我做了以下事情:
brew doctor
brew upgrade
brew cleanup
然后我能够继续成功安装我的其他酿造配方.
小智 8
在我的情况下,/ usr/local/Frameworks甚至不存在,所以我做了:
sudo mkdir /usr/local/Frameworks
sudo chown -R $(whoami) /usr/local/Frameworks
Run Code Online (Sandbox Code Playgroud)
然后一切都按预期工作.
这解决了我的问题.
sudo chown -R "$USER":admin /Users/$USER/Library/Caches/Homebrew
sudo chown -R "$USER":admin /usr/local
Run Code Online (Sandbox Code Playgroud)
对于多用户 Mac,这对我有用:
sudo chown -R $(whoami):admin $(brew --prefix)/*
Run Code Online (Sandbox Code Playgroud)
我用这些命令解决了我的问题:
sudo mkdir /usr/local/Cellar
sudo mkdir /usr/local/opt
sudo chown -R $(whoami) /usr/local/Cellar
sudo chown -R $(whoami) /usr/local/opt
Run Code Online (Sandbox Code Playgroud)
首先,对于 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
Run Code Online (Sandbox Code Playgroud)
因此,不能使用上面的流行答案。其次,退一步说,如果主要关心的是安装或升级 Homebrew,而不是想要更改 /usr/local 本身的权限,那么这可能是矫枉过正(就像拿大锤敲钉子一样)更改 /usr/local 的权限。它会影响您的整个机器,其他软件也可能正在使用 /usr/local。例如,我在 /usr/local 中有与 maven 和 mySQL 相关的文件。
更精确的解决方案是按照Homebrew GitHub 站点上提供的安装 Homebrew 的说明进行操作,即
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
Run Code Online (Sandbox Code Playgroud)
它在 /usr/local 内安装 Homebrew 而不改变 /usr/local 本身的所有权。相反,Cellar、Caskroom、Frameworks、Homebrew 等安装在 /usr/local 中。在我看来,这似乎是一个更优雅、更精确的解决方案。
小智 5
所有这些建议都可行.在最新版本的brew医生中,提出了更好的建议.
首先 - /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
Run Code Online (Sandbox Code Playgroud)
如果您运行sudo brew update
然后阅读所有会遇到的警告和错误,所有这些信息都可用...
在 MacOS Mojave 上,我也没有访问chown
/usr/local 文件夹的权限( sudo chown -R "$USER":admin /usr/local
)。
sudo chown -R "$USER":admin /usr/local/*
没有工作对我来说然而,改变一切的权限之内的本地文件夹。
希望这会帮助其他人解决同样的问题。
归档时间: |
|
查看次数: |
335243 次 |
最近记录: |