ZSH Compinit:安装Hommerbrew后,Mac上的不安全目录错误消息



在我的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上投资这个问题时,我发现有几个不安全目录,其中最大程度与自制的目录 - 例如/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命令。

我的Mac在MacOS Monterey v12.1。

我在brew install zsh-completions之后收到了此消息,并且在使用stackoverflow答案进行了许多尝试之后,我用source .zshrccompaudit | xargs chmod g-w,o-w解决了这个问题。

我希望您的问题也能解决

我发现,错误消息是由我的.zshrc中的compinit的呼叫生成的,并且可以通过传递-i选项(即。

 compinit -i

虽然这解决了问题,但Ortomala Lokni提出的论点应该使用用户特权安装自制酿造者,也值得考虑 - 只有自制者不允许我这样做;但这是单独线程的主题。

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

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

解决方案是在没有sudo的情况下重新安装自制啤酒,但是用户需要在安装脚本中看到的计算机管理员:

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."

最新更新