错误:在新升级的macOS Mojave上运行Vim时,pathname包含空字节

问题描述 投票:0回答:1

我最近升级到macOS Mojave 10.14.1,当使用原生的TerminaliTerm时,vim命令似乎被打破了。错误看起来像

dudeOnMac:~ freddy$ vim file
dyld: Library not loaded: /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/libruby.2.0.0.dylib
  Referenced from: /usr/local/bin/vim
  Reason: image not found

我发现这个SuperUser帖子并没有完全解决问题。其他一些建议是从头开始重新安装Vim。所以我做了一个

brew update
brew upgrade vim

但是留下了以下错误

==> Upgrading vim 
Error: The following formula
  [#<Dependency: "python" []>, #<Options: []>]
cannot be installed as binary package and must be built from source.
Install the Command Line Tools:
  xcode-select --install

所以我进去并按照上面的建议安装了xcode,但现在又留下了一个新的错误

Error: An unexpected error occurred during the `brew link` step
The formula built, but is not symlinked into /usr/local
pathname contains null byte
Error: pathname contains null byte
Please report this bug:
  https://docs.brew.sh/Troubleshooting
/usr/local/Homebrew/Library/Homebrew/extend/pathname.rb:265:in `initialize'
/usr/local/Homebrew/Library/Homebrew/extend/pathname.rb:265:in `readlink'
/usr/local/Homebrew/Library/Homebrew/extend/pathname.rb:265:in `resolved_path'
/usr/local/Homebrew/Library/Homebrew/keg.rb:422:in `block in oldname_opt_record'
/usr/local/Homebrew/Library/Homebrew/keg.rb:421:in `each'
/usr/local/Homebrew/Library/Homebrew/keg.rb:421:in `find'
/usr/local/Homebrew/Library/Homebrew/keg.rb:421:in `oldname_opt_record'
/usr/local/Homebrew/Library/Homebrew/keg.rb:535:in `optlink'
/usr/local/Homebrew/Library/Homebrew/keg.rb:432:in `link'
/usr/local/Homebrew/Library/Homebrew/formula_installer.rb:801:in `link'
/usr/local/Homebrew/Library/Homebrew/formula_installer.rb:619:in `finish'
/usr/local/Homebrew/Library/Homebrew/formula_installer.rb:586:in `install_dependency'
/usr/local/Homebrew/Library/Homebrew/formula_installer.rb:539:in `block in install_dependencies'
/usr/local/Homebrew/Library/Homebrew/formula_installer.rb:539:in `each'
/usr/local/Homebrew/Library/Homebrew/formula_installer.rb:539:in `install_dependencies'
/usr/local/Homebrew/Library/Homebrew/formula_installer.rb:252:in `install'
/usr/local/Homebrew/Library/Homebrew/cmd/upgrade.rb:187:in `upgrade_formula'
/usr/local/Homebrew/Library/Homebrew/cmd/upgrade.rb:136:in `block in upgrade_formulae'
/usr/local/Homebrew/Library/Homebrew/cmd/upgrade.rb:133:in `each'
/usr/local/Homebrew/Library/Homebrew/cmd/upgrade.rb:133:in `upgrade_formulae'
/usr/local/Homebrew/Library/Homebrew/cmd/upgrade.rb:111:in `upgrade'
/usr/local/Homebrew/Library/Homebrew/brew.rb:102:in `<main>'
macos macos-mojave dyld
1个回答
0
投票

我试图密切关注homebrew维护者页面中的步骤 - Error: pathname contains null byteBroken symlink detection needed,这并没有解释确切的问题。

我进去跑了brew doctor并试图解决一个问题。首先是创建不存在的目录/usr/local/sbin并添加正确的权限

sudo mkdir -p /usr/local/sbin
sudo chown -R $(whoami) /usr/local/sbin

即使在此运行brew upgrade vim显示相同的错误

错误:pathname包含空字节

初始链接中的一个页面提示一些破坏的符号链接可能导致问题,我进去查看/usr/local/opt,其中utils链接到来自Cellar的路径,但readline被破坏而没有指向任何地方

lrwxr-xr-x  1 freddy  admin    26B Apr 18  2017 readline -> 

这似乎是罪魁祸首,使用它删除它

rm -rf /usr/local/opt/readline

并做了一个新的brew upgrade vim现在安装了所需的依赖项并成功安装了vim。我对awk有同样的问题,我不得不使用brew upgrade gawk修复。

© www.soinside.com 2019 - 2024. All rights reserved.