【问题标题】:zsh compinit: insecure directories error message on Mac, after installing Homebrewzsh compinit:安装 Homebrew 后 Mac 上的不安全目录错误消息
【发布时间】:2019-07-27 23:01:29
【问题描述】:

在我的 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


【解决方案1】:

您不应该使用 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."

【讨论】:

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

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

 compinit -i

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

【讨论】:

    猜你喜欢
    • 2012-11-25
    • 1970-01-01
    • 2021-11-14
    • 2017-09-27
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 2021-04-05
    相关资源
    最近更新 更多