zsh compinit:安装Homebrew后Mac上的不安全目录错误消息

问题描述 投票:1回答:2

在我的Mac上安装Homebrew和Homebrew-Cask后(作为管理员使用用户ID'admin',运行MacOS 10.12.6),我收到错误消息

zsh compinit: insecure directories, run compaudit for list.
Ignore insecure directories and continue [y] or abort compinit [n]?

每次我开始zsh。用compaudit投资这个问题,我发现提到了几个不安全的目录,最常见的是Homebrew - 例如/usr/local/share/zsh/site-functions。此目录及其条目具有访问权限0755,这应该没问题,但是 - 例如 - 条目

/usr/local/share/zsh/site-functions/_brew

它是Homebrew中定义zsh完成的文件的符号链接,拥有所有者admin。我的猜测是zsh想在这里看到用户root。

如果这是Linux,我只需将这些文件的所有者更改为root,或者更确切地说,我将首先以root身份完成整个安装。但是,在MacOS 10.12中,他们甚至不允许“管理员”完全控制系统,虽然我可以以管理员身份登录,但我甚至不知道root的密码。

这个问题有一个聪明的解决方案吗?或者,我们可以以某种方式教zsh compinit从不问这个烦人的问题,要么接受不安全的目录,要么跳过它们?或者最好以管理员身份登录,只需从site-functions删除有问题的符号链接?我可以使用完成系统,它不知道如何处理brew命令。

homebrew zsh macos-sierra homebrew-cask
2个回答
0
投票

我发现,错误消息是通过在我的compinit中调用.zshrc生成的,并且可以通过传递-i选项关闭它,即

 compinit -i

虽然这解决了这个问题,但是Ortomala Lokni提出的应该使用用户权限安装Homebrew的论点也值得考虑 - 只有Homebrew不允许我这样做;但这是一个单独的主题的主题。


0
投票

你不应该用sudo安装Homebrew。根据Homebrew FAQ

Homebrew旨在不使用sudo工作。您可以决定使用它,但我们强烈建议您不要这样做。如果您使用过sudo并遇到错误,那么这很可能就是原因。除非您可以在不使用sudo的情况下从头开始重新安装Homebrew,否则请不要提交错误报告。

解决方案是重新安装没有sudo的Homebrew,但用户需要是计算机的管理员,你可以在install script中看到:

elsif !`dsmemberutil checkmembership -U "#{ENV["USER"]}" -G admin`.include?("user is a member")
  abort "This script requires the user #{ENV["USER"]} to be an Administrator."
© www.soinside.com 2019 - 2024. All rights reserved.