zsh 问题:compinit:503:没有这样的文件或目录:/usr/local/share/zsh/site-functions/_brew

Posted

技术标签:

【中文标题】zsh 问题:compinit:503:没有这样的文件或目录:/usr/local/share/zsh/site-functions/_brew【英文标题】:zsh problem: compinit:503: no such file or directory: /usr/local/share/zsh/site-functions/_brew 【发布时间】:2021-04-21 03:26:06 【问题描述】:

我正在使用苹果 M1 MacBook pro。

当我安装了我的 zsh。当我将export PATH="/opt/homebrew/bin:$PATH" 添加到我的 ~/.zshrc 文件中时。此错误显示在我的终端中:

joe :: share/zsh/site-functions » source ~/.zshrc
compinit:503: no such file or directory: /usr/local/share/zsh/site-functions/_brew
compinit:503: no such file or directory: /usr/local/share/zsh/site-functions/_brew_cask

但是,我检查并发现这两个文件确实存在。 谁能告诉我问题出在哪里?

这是我的 ~/.zshrc 文件:

Last login: Sat Jan 16 14:53:34 on console
compinit:503: no such file or directory: /usr/local/share/zsh/site-functions/_brew
compinit:503: no such file or directory: /usr/local/share/zsh/site-functions/_brew_cask
[oh-my-zsh] Random theme 'jnrowe' loaded
Ξ ~ → cd ~
Ξ ~ → source .zshrc

compinit:503: no such file or directory: /usr/local/share/zsh/site-functions/_brew
compinit:503: no such file or directory: /usr/local/share/zsh/site-functions/_brew_cask
# export MANPATH="/usr/local/man:$MANPATH"
[oh-my-zsh] Random theme 'cypher' loaded
joe :: ~ » chmod 755 /usr/local/share/zsh
chmod 755 /usr/local/share/zsh/site-functions

joe :: ~ » sudo chmod 755 /usr/local/share/zsh
Password:
joe :: ~ » sudo chmod 755 /usr/local/share/zsh/site-functions
joe :: ~ » ls
#ZSH_DISABLE_COMPFIX=true

# If you come from bash you might have to change your $PATH.
# export PATH=$HOME/bin:/usr/local/bin:$PATH

#Homebrew
export PATH="/opt/homebrew/bin:$PATH"
export PATH="/opt/homebrew/sbin:$PATH"
#Homebrew END

#Wget
export LDFLAGS="-L/opt/homebrew/opt/openssl@1.1/lib"
export CPPFLAGS="-I/opt/homebrew/opt/openssl@1.1/include"
#Wget END

 #Path to your oh-my-zsh installation.
export ZSH="/Users/caizhuoyue/.oh-my-zsh"

# Set name of the theme to load --- if set to "random", it will
# load a random theme each time oh-my-zsh is loaded, in which case,
# to know which specific one was loaded, run: echo $RANDOM_THEME
# See https://github.com/ohmyzsh/ohmyzsh/wiki/Themes
ZSH_THEME="random"

"~/.zshrc" 114L, 3999C




【问题讨论】:

您(或您运行 zsh 的用户)是否有权读取这些文件? 我想是的,我在这些文件上使用了chmod 755 【参考方案1】:

原来这些文件是另外两个不存在的文件的别名。

这是因为 M1 macbook 的 Homebrew 在/opt/homebrew/ 下,但 zsh 认为它仍在/usr/local 下。

所以我删除了这两个别名,并创建了新的别名来指向文件的实际位置:/opt/homebrew/completions/zsh/_brewand/opt/homebrew/completions/zsh/_brew_cask

然后我用source ~/.zshrc。没有错误信息。问题解决了!

【讨论】:

我猜你的意思是 symlink,当你说 'aliases_?文件没有别名...... 另外,正如 ***.com/a/65924342/4764498 中所指出的,与其手动删除符号链接,运行 brew cleanup 更方便/更可靠(这将删除任何损坏的符号链接,包括这些符号链接)。所以我认为这应该是公认的答案。 我删除了符号链接_brew_cask,运行brew doctor,然后运行brew cleanup。没有其他东西对我有用 @user1934428 在 Mac OS 上,文件有别名。 support.apple.com/guide/mac-help/… @RayBaxter:很有趣。文件别名与符号链接相比有什么区别/优势?为了达到这个目的,我只需要创建一个符号链接。【参考方案2】:

我遇到了类似的问题。我运行了brew cleanup,它修复了符号链接。

【讨论】:

如果您想以空运行的方式运行清理,请先查看预期效果:brew cleanup -n 在发帖时我认为 brew cleanup 不起作用【参考方案3】:

根据https://github.com/Homebrew/homebrew-core/issues/45009

试试

sudo chown -R $(whoami):admin /usr/local/* \ && sudo chmod -R g+rwx /usr/local/*

然后

brew cleanup

【讨论】:

谢谢。这对我有用。否则我会出错。 不完全一样的问题。您应该从 compinit 收到有关此安全权限的警告。以上解决了这个问题。但是,应该仍然有效。【参考方案4】:

没错,解决此问题的最简单方法是运行:brew cleanup

只是,如果您同时保留 arm 和 x86 版本,请不要忘记使用 x86 brew 版本运行此命令。

这是我的一个非常低级的错误,在我终于意识到我需要使用之前,我尝试了无数次使用默认的 brew 命令失败(我通过脚本安装它并且它已经链接到新的 arm 版本) x86 brew 执行cleanup 命令。

【讨论】:

如果你同时运行你应该使用 arch 命令来检测架构然后使用 if-else 语句来加载路径、fpaths、符号链接等以匹配使用的版本并将所有这些放入你的.zshrc 然后打开终端以使用 amd64 或使用 Rosetta 加载英特尔。您实际上可以复制您的终端应用程序并为每个应用程序设置一组。小心任何后台服务。【参考方案5】:

我在卸载 brew 后遇到了这个问题。如果您已经这样做了,只需将其删除:

rm -rf /usr/local/share/zsh/site-functions/_brew

【讨论】:

【参考方案6】:
brew install zsh-completions

修复它。

【讨论】:

【参考方案7】:

更详细一点的方法是:

brew doctor
brew cleanup
source ~/.zshrc

或者一行:

brew doctor && brew cleanup && source ~/.zshrc

在此之后,您可以查看使用源后是否出现任何错误。

【讨论】:

【参考方案8】:

升级到 macOS Bigsur 后遇到类似问题。做完brew update

【讨论】:

【参考方案9】:

我在更新点文件时遇到了同样的问题。

在 M1 上,我从 Intel brew 升级到 Intel 和 ARM brew,然后再升级到 ARM 版本。对我来说问题是由两个指向不再存在的 Intel 版本的符号链接引起的,而不是 ARM 版本。

我通过将符号链接更改为指向 ARM 版本的正确位置来修复它。

ln -fsv /opt/homebrew/completions/zsh/_brew /usr/local/share/zsh/site-functions/_brew

ln -fsv /opt/homebrew/completions/zsh/_brew /usr/local/share/zsh/site-functions/_brew_cask

因此

lrwxr-xr-x    35 xxxx  2 Jun 16:02  _brew -> /opt/homebrew/completions/zsh/_brew
lrwxr-xr-x    35 xxxx  2 Jun 16:01  _brew_cask -> /opt/homebrew/completions/zsh/_brew

我认为 _brew_cask 指向同一个 _brew 是可以的,因为木桶已被合并。

【讨论】:

第一行缺少-site-functions 为我工作。 (是的,- 不见了) 我修正了错字,应该很好。谢谢你的回答。 感谢指正。很高兴它帮助了一些人。是的,有时在 Mac 上,双连字符会变成双宽连字符,我还没有找到原因,但可能是第三方工具。我下午去看看。 哎呀,不错的发现!在我的 M1 上为我修复了它。【参考方案10】:

@sinestandly 在其他方法失败后,上面的答案对我有用。我跑了brew install zsh-completions,然后跑了brew cleanupcleanup 停止抛出错误,我不再收到错误消息 compinit:503: no such file or directory: /usr/local/share/zsh/site-functions/_brew_cask

谢谢你,@sinestandly!

【讨论】:

我从 Intel 迁移到 Apple Silicon (M1),这些解决了问题。谢谢! brew install zsh-completionsbrew cleanup 之所以起作用,是因为 zsh-completions 实际上为 _brew 重新创建了符号链接,这与我在替换丢失或不正确链接的答案中给出的相同。但是,由于 _brew 符号链接已从 zsh-completions 中删除,它只使用 fpaths。它还删除了一些其他功能,因为它只是复制了 brew 所做的事情。以防万一有人发现这不能按预期工作。

以上是关于zsh 问题:compinit:503:没有这样的文件或目录:/usr/local/share/zsh/site-functions/_brew的主要内容,如果未能解决你的问题,请参考以下文章

为 Zsh 上的每一行添加时间戳

Mac下在zsh中配置adb命令

升级oh_my_zsh报错

在非交互式 shell 中展开别名

zsh:找不到命令:php

如何检查之前的 Zsh 提示符中是不是没有输入任何内容