我也经常遇到这个问题。它总是涉及installd
,最重要的是,installd
安装/更新 Apple 应用程序,如 iWork(IIRC,它是 iWork 独有的;至少我还没有遇到第三方应用程序的情况)。
我相信它与 iTerm2 或 oh-my-zsh 无关(尽管我也同时使用两者)。我认为这是一个 shell 兼容性问题——Apple 的安装程序脚本可能会调用您的默认 shell
$SHELL -c command...
Run Code Online (Sandbox Code Playgroud)
它在bash
但未经过测试zsh
,因此当zsh
以这种方式调用时,会出现微妙的 shell 兼容性问题。当您检查有问题的过程时(不幸的是,AFAIK 活动监视器没有向您显示完整的命令;我htop
用于此目的,您可能会使用ps
或其他),您会看到类似的内容
zsh -c defaults delete com.apple.helpd com.apple.helpd.sdmMapsCreated
Run Code Online (Sandbox Code Playgroud)
这支持我的猜测(嗯,我的猜测实际上是从这些观察中得出的,准确地说。*因此,在这种情况下,解决方案只是自己运行命令
defaults delete com.apple.helpd com.apple.helpd.sdmMapsCreated
Run Code Online (Sandbox Code Playgroud)
然后你杀死有问题的进程。installd
自动继续(可能会像这样进入下一个卡住的过程)。经过多轮打磨,您会发现安装成功。我知道这很烦人,但这是我发现的唯一工作方式(可靠)。
*实际上我无法理解如何zsh -c
卡在诸如defaults delete
. 不确定是否与我的环境有关。(我已经在我的 PATH 中将 GNU coreutils 和类似的东西放在 BSD 东西的前面,但我很确定我从来没有搞砸过default
。)也许在default
内部使用 BSD utils?但是同样,我可以使用 zsh 在我的终端中以交互或非交互方式运行相同的命令,就好了。这真是莫名其妙(上面的解决方案不受影响)。欢迎任何意见。
归档时间: |
|
查看次数: |
2553 次 |
最近记录: |