如何安全地解决自制软件和 zsh 对 /usr/local/share/zsh 所有权的冲突需求?

Jac*_*ord 12 macos homebrew file-permissions zsh

在使用 macOS Catalina 更新将我的 shell 从 切换bash到之后zsh,Homebrew 和 zsh 正在为他们需要/usr/local/share/zsh/site-functions/usr/local/share/zsh拥有的方式而战。

zsh 更喜欢/usr/local/share/zsh/**/*由 拥有root,否则会引发烦人的错误

zsh compinit: insecure directories and files, run compaudit for list.
Ignore insecure directories and files and continue [y] or abort compinit [n]?
Run Code Online (Sandbox Code Playgroud)

每次我以 root 身份登录时,例如通过sudo -s.

compaudit以 root 身份运行,然后chown root'd 和chmod g-w'd 列出了它列出的所有目录。那个满意,zsh但现在homebrew不高兴。

任何brew installupgrade失败

Error: The following directories are not writable by your user:
/usr/local/share/zsh
/usr/local/share/zsh/site-functions

You should change the ownership of these directories to your user.
  sudo chown -R $(whoami) /usr/local/share/zsh /usr/local/share/zsh/site-functions

And make sure that your user has write permission.
  chmod u+w /usr/local/share/zsh /usr/local/share/zsh/site-functions
Run Code Online (Sandbox Code Playgroud)

brew doctor 给出与警告相同的消息。

两者之间有妥协吗?或者我可以安全地抑制这些警告之一?如果是这样,如何?

小智 5

我刚刚通过在我的文件中添加以下行来使该消息不会出现.zshrc

ZSH_DISABLE_COMPFIX="true"
Run Code Online (Sandbox Code Playgroud)

如果不起作用,请尝试在文件的第一行添加该行.zshrc


小智 1

在你的 .zshrc 中的某个地方有compinit一个调用。将其更改为compinit -u将使警告静音的值。

/usr/share/zsh/5.7.1/functions/compinit 负责该警告(更改 5.7.1 以匹配您的 zsh 版本)