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/_brew
and/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 cleanup
。 cleanup
停止抛出错误,我不再收到错误消息 compinit:503: no such file or directory: /usr/local/share/zsh/site-functions/_brew_cask
。
谢谢你,@sinestandly!
【讨论】:
我从 Intel 迁移到 Apple Silicon (M1),这些解决了问题。谢谢!brew install zsh-completions
brew cleanup
之所以起作用,是因为 zsh-completions 实际上为 _brew 重新创建了符号链接,这与我在替换丢失或不正确链接的答案中给出的相同。但是,由于 _brew 符号链接已从 zsh-completions 中删除,它只使用 fpaths。它还删除了一些其他功能,因为它只是复制了 brew 所做的事情。以防万一有人发现这不能按预期工作。以上是关于zsh 问题:compinit:503:没有这样的文件或目录:/usr/local/share/zsh/site-functions/_brew的主要内容,如果未能解决你的问题,请参考以下文章