6

在我的 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命令的完成系统。

4

3 回答 3

2

您不应该使用 sudo 安装 Homebrew。根据自制常见问题解答

Homebrew 设计为无需使用 sudo 即可工作。您可以决定使用它,但我们强烈建议您不要这样做。如果您使用过 sudo 并遇到错误,那么这很可能是原因。请不要提交错误报告,除非您可以在不使用 sudo 从头开始​​重新安装 Homebrew 后重现它。

解决方案是在没有 sudo 的情况下重新安装 Homebrew,但用户需要是计算机的管理员,如您在安装脚本中所见:

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."
于 2019-03-09T07:48:34.820 回答
1

我的 Mac 在 macOS Monterey v12.1 上。

brew install zsh-completions在多次尝试使用 stackoverflow 答案之后,我收到了这条消息,我用source .zshrcand解决了这个问题compaudit | xargs chmod g-w,o-w

希望你的问题也能解决

于 2022-01-04T16:54:46.520 回答
1

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

 compinit -i

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

于 2019-03-09T14:52:41.103 回答