Manjaro升级Neovim 0.7.2-2后报E970无法加载不兼容字节码错误
故障根因
vim/_init_packages.lua: cannot load incompatible bytecode 伴随E970: Failed to initialize builtin lua modules报错,本质是Neovim二进制和加载的Lua字节码版本不匹配,在Manjaro环境下触发该问题的常见诱因:
- 此前手动将下载的预编译包、自行编译的Neovim安装到
/usr/local路径,与pacman安装的系统版Neovim文件混存,程序启动时加载了跨版本的内置模块 - 用户目录下残留旧版本Neovim生成的预编译Lua字节码缓存,新版本LuaJIT无法识别旧格式字节码
常规pacman卸载重装不会清理手动部署的系统级残留,也不会触碰用户目录下的缓存文件,因此重复安装无法解决问题。
修复步骤
按顺序执行以下操作即可解决:
- 卸载包管理器安装的Neovim,移除所有相关依赖
sudo pacman -Rns neovim - 删除手动部署在系统路径的Neovim残留文件
sudo rm -rf /usr/local/bin/nvim /usr/local/share/nvim /usr/local/lib/nvim - 清空用户目录下所有Neovim缓存、状态数据,这一步会删除旧版本留存的不兼容字节码
rm -rf ~/.cache/nvim ~/.local/share/nvim ~/.local/state/nvim - 刷新Shell命令路径缓存,避免命中已删除的旧二进制文件
hash -r - 同步系统软件源后重新安装官方源维护的Neovim包,不建议同时混装源版本和独立发布包
sudo pacman -Syu neovim - 执行版本校验命令,确认启动正常
nvim -v
若确实需要使用官方发布的预编译版本,提前卸载pacman源的Neovim后,将二进制文件放置到
~/.local/bin用户级路径即可,不要部署到/usr/local系统路径,避免后续版本冲突。
内容的提问来源于stack exchange,提问作者Alistercry
相关产品推荐
相关产品推荐

