安装Homebrew后在Mac上出现zsh compinit: insecure directories错误提示

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


1
你能够接受一个回答吗?这样问题就不会保持开放状态了。 - Marlon Richert
3个回答

6

我的Mac电脑使用的是macOS Monterey v12.1操作系统。

我在安装brew install zsh-completions后遇到了问题,在查阅了许多stackoverflow答案后,我通过执行source .zshrccompaudit | xargs chmod g-w,o-w来解决这个问题。

希望这样可以帮到你解决问题。


2
我发现错误消息是由我的.zshrc中的compinit调用生成的,可以通过传递-i选项来关闭它。"最初的回答"
 compinit -i

虽然这解决了问题,但Ortomala Lokni提出的使用用户权限安装Homebrew的论点也值得考虑 - 只是Homebrew不允许我这样做; 但这是一个单独主题的话题。
最初的回答:虽然这个方法解决了问题,但是我们也应该考虑Ortomala Lokni提出的使用用户权限安装Homebrew的建议。只是Homebrew并不允许我们这样做,这个问题需要在另一个讨论串中继续探讨。

2
您不应该使用sudo安装Homebrew。根据Homebrew FAQ

Homebrew旨在无需使用sudo即可正常工作。您可以选择使用它,但我们强烈建议不要这样做。如果您使用了sudo并遇到错误,则很可能是原因。除非您可以在重新安装Homebrew时不使用sudo复现它,请不要提交错误报告。

解决方案是在没有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."

我不想以管理员身份安装它,但是当我从我的用户帐户安装它时(通过/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"),安装脚本会中止并显示消息“此脚本要求用户ronaldfischer为管理员”。那么我该如何安装它呢? - user1934428
前往“系统偏好设置”面板 -> “用户与群组”,点击锁以进行更改,然后选择用户并单击“允许用户管理此计算机”。 - Ortomala Lokni
我知道如何使我的用户帐户具有管理员权限,但这正是我想避免的:出于安全原因,我通常不想拥有管理员特权。当然,我可以将我的用户变成管理员,然后安装Homebrew,然后取消管理员特权,但这对我来说似乎是一个相当奇怪的解决方案。那么,这是否意味着对于我使用brewbrew cask安装的每个其他程序,我都必须再次玩这个游戏-使我成为管理员,进行安装,然后再次取消管理员权限? - user1934428
1
我刚刚找到了一个安装Homebrew并使用用户权限的配方。我会尝试一下。 - user1934428

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接