Fra*_*z L 50 macos homebrew docker
Homebrew 在使用 macOS Monterey 时出现此错误:
Error: Permission denied @ apply2files - /usr/local/lib/docker/cli-plugins
Run Code Online (Sandbox Code Playgroud)
我该如何修复它?
Fra*_*z L 140
如此处所写https://flaviocopes.com/homebrew-fix-permission-denied-apply2files/,
如果您最近删除了 Docker,则必须手动重新创建 Docker 文件夹:
mkdir -p /Applications/Docker.app/Contents/Resources/cli-plugins
Run Code Online (Sandbox Code Playgroud)
然后运行
brew cleanup
Run Code Online (Sandbox Code Playgroud)
你应该已经解决了这个问题!
之后,您可以删除Application文件夹中的Docker应用程序
Aus*_*lff 29
正如@JW 所指出的,上面接受的答案......
mkdir -p /Applications/Docker.app/Contents/Resources/cli-plugins
Run Code Online (Sandbox Code Playgroud)
然后运行
brew cleanup
Run Code Online (Sandbox Code Playgroud)
并不适合所有人(也不适合我)。他们的建议是有效的:
相反,我删除了 sudo rm -r /usr/local/lib/docker/cli-plugins,它是指向该(不存在的)Docker.app 子目录的符号链接。
这是要运行的代码:
sudo rm -r /usr/local/lib/docker/cli-plugins
Run Code Online (Sandbox Code Playgroud)
正如 JW 建议的,此链接解释了更多信息:https ://github.com/Homebrew/homebrew-core/issues/45009
我尝试了公认的解决方案,但它对我不起作用。
我最终用以下命令解决了这个问题:
$ brew cleanup
Error: Permission denied @ apply2files - /usr/local/lib/docker/cli-plugins
$ brew doctor
...
Warning: Broken symlinks were found. Remove them with `brew cleanup`:
/usr/local/lib/docker/cli-plugins
...
$ sudo chown -R "$(whoami)":admin /usr/local/lib
$ brew cleanup
Run Code Online (Sandbox Code Playgroud)
列出文件详细信息
ls -la /usr/local/lib/docker/cli-plugins
揭示了
lrwxr-xr-x 1 root admin 55 Mar 22 2022 /usr/local/lib/docker/cli-plugins -> /Applications/Docker.app/Contents/Resources/cli-plugins
/usr/local/lib/docker/cli-plugins是一个链接(别名)/Applications/Docker.app/Contents/Resources/cli-pluginsroot具有w写入权限(也允许在清理过程中删除)root用户,那么您将看到此问题取决于您的系统需要什么
如果您没有或需要 docker(可能只是将其删除),则只需删除链接本身
sudo rm -r /usr/local/lib/docker/cli-plugins
Run Code Online (Sandbox Code Playgroud)
为什么sudo?因为只能root访问该链接,而您(当前用户,由 标识whoami)则无权访问该链接。这就是您首先看到此错误的原因。
为什么-r?因为您想递归删除整个文件夹。
如果您使用 docker,但意外删除了/Applications/Docker.app/Contents/Resources/cli-plugins文件夹或更改了权限,则这也适用,然后通过再次创建此文件夹来修复它,以便链接可以指向现有文件夹。
mkdir -p /Applications/Docker.app/Contents/Resources/cli-plugins
brew cleanup
Run Code Online (Sandbox Code Playgroud)
然后
rm -rf /Applications/Docker.app/Contents/Resources/cli-plugins
Run Code Online (Sandbox Code Playgroud)
或者,因为您创建了整个路径,这意味着您/Applications/Docker.app无论如何都不需要
rm -rf /Applications/Docker.app
Run Code Online (Sandbox Code Playgroud)
递归地更改文件夹的权限lib为什么?因为usr/local/lib无论如何都是针对本地用户的。您可以访问它,而不是root独占访问任何项目。
请参阅https://askubuntu.com/questions/138547/how-to-understand-the-ubuntu-file-system-layout
sudo chown -R "$(whoami)":admin /usr/local/lib
PS:可能有更多方法可以解决此问题,但建议消除根本原因。