答案1
我也经常遇到这个问题。它总是installd
与installd
安装/更新 Apple 应用程序有关,例如 iWork(如果我没记错的话,它是 iWork 独有的;至少我还没有遇到过第三方应用程序出现这种情况)。
我认为这与 iTerm2 或 oh-my-zsh 无关(尽管我也使用这两个)。我认为这是 shell 兼容性问题 — Apple 的安装程序脚本可能调用了您的默认 shell
$SHELL -c command...
它已在 上进行了测试,bash
但未在 上进行测试zsh
,因此当以zsh
这种方式调用时,会出现微妙的 shell 兼容性问题。当您检查有问题的进程时(不幸的是,据我所知,活动监视器不会向您显示完整的命令;我htop
为此使用,您可能也会使用ps
或任何其他命令),您将看到类似
zsh -c defaults delete com.apple.helpd com.apple.helpd.sdmMapsCreated
这支持了我的猜测(好吧,准确地说,我的猜测实际上是从这些观察中得出的)。*因此,在这种情况下,解决方案就是自己运行命令
defaults delete com.apple.helpd com.apple.helpd.sdmMapsCreated
然后你杀死有问题的进程。installd
自动继续(可能像这样转到下一个卡住的进程)。经过多轮磨合后,你会发现安装成功完成。我知道这很烦人,但这是我发现的唯一可行的方法(可靠)。
* 我实在搞不懂为什么zsh -c
会卡在诸如 之类的东西上defaults delete
。不确定是不是我的环境出了问题。(我在 PATH 中将 GNU coreutils 和类似的东西放在了 BSD 东西的前面,但我很确定我从未弄乱过default
。)也许default
在内部使用 BSD 实用程序?但同样,我可以在 zsh 的终端中以交互方式或非交互方式运行相同的命令,没问题。这真是令人困惑(上面的解决方案不受影响)。欢迎任何意见。
答案2
我经常遇到同样的问题,它总是与 installd 进程有关,更新 AppStore 应用程序。先终止 installd,然后终止 zsh 进程会有所帮助(但会禁用 AppStore 的功能,直到重新启动为止)。