在 Mac 上卸载 UTM
卸载 UTM 前,先正常关闭并备份想保留的每台虚拟机,默认 VM 目录是 ~/Library/Containers/com.utmapp.UTM/Data/Documents,也可以把 VM 移到其他位置或外置硬盘。Mole 列出虚拟机容器但不默认勾选,卸载 Homebrew cask 时不带 zap,勾选容器或自己执行 Homebrew zap 会删掉容器内的 VM,不会因此删掉存放在容器外的 VM,本页覆盖官方 DMG、Homebrew cask utm 和 UTM 公开源码所述使用相同身份的 Mac App Store 构建。
先备份虚拟机
先保存工作,从每台虚拟机里的操作系统正常关机并确认已停止,强制断电有损坏磁盘的风险,再在 VM 列表中右键点每台虚拟机,用 Finder 显示其 .utm 包,核对实际保存位置。退出 UTM 后,把完整包复制到容器之外的其他文件夹或硬盘,打开副本核对内容,复制到同一容器中的第二份仍会随容器删除。虚拟机操作说明和关机控制说明记录了这些步骤。
退出 UTM,关闭正在运行的虚拟机
虚拟机已正常停止并完成备份、UTM 也已退出后,在 Finder 的「应用程序」中把 UTM.app 移到废纸篓,Homebrew 用户也可以用下方普通 cask 命令,UTM 没有另外要移除的登录项或 helper。
UTM 的数据放在哪里
| 位置 | 里面是什么 | 如何处理 |
|---|---|---|
~/Library/Containers/com.utmapp.UTM/Data/Documents |
默认位置的虚拟机包,以及你保存在这个容器内的其他文档 | 继续之前先备份。 Mole 只列出整个容器、不默认勾选,还是先把虚拟机复制出来 |
~/Library/Group Containers/*.com.utmapp.UTM |
UTM 与其助手进程共享的数据 | 会列出但默认不勾选,随应用一起删除是安全的 |
~/Library/Application Scripts/*com.utmapp* |
UTM 助手进程的沙盒脚本支持文件 | com.utmapp.UTM 默认勾选,带团队前缀的组文件夹会列出但默认不勾选,随应用一起删除是安全的 |
~/Library/Preferences/com.utmapp.UTM.plist |
应用偏好设置 | 默认勾选,删除是安全的 |
~/Library/Saved Application State/com.utmapp.UTM.savedState |
保存的窗口状态 | 默认勾选,删除是安全的 |
~/Library/Caches/com.utmapp.UTM |
应用级缓存 | 可重新生成;Mole 的「清理」页把它当成普通应用缓存列出 |
~/Library/Containers/com.utmapp.UTM/Data/Library/Caches |
沙盒容器内部的缓存 | 可重新生成,处理方式同上 |
~/Library/Containers/com.utmapp.UTM/Data/tmp |
沙盒容器内部的临时文件 | 可重新生成,处理方式同上 |
这三处缓存 / 临时文件路径和 Data/Documents 是分开的:Mole 的「清理」页只会碰这三处,从不进入存放虚拟机的 Documents 文件夹。
检查结果
在终端运行下面的只读命令:
pgrep -ilf utm
ls -d ~/Library/Containers/com.utmapp.UTM
ls -d ~/Library/Containers/com.utmapp.UTM/Data/Documents
命令没有报错时,pgrep 没有输出只说明没有完整命令行匹配 utm,命令行不含这段文字的 QEMU 进程不在检查范围内。ls -d 只能确认容器或其 Data/Documents 目录存在,不能证明里面有完整的虚拟机包,要核对实际 .utm 包和前面做好的独立备份,提示「No such file or directory」只说明这处路径不存在,不涉及其他位置的虚拟机,权限或其他读取错误表示结果还不能确定。
用 Homebrew 安装时
UTM 的容器里放着你的虚拟机,所以 Mole 卸载 utm 这个 cask 时从不带 --zap,不管你勾了什么。自己运行 brew uninstall --cask --zap utm 会执行这个 cask 自己的 zap 清单,把 ~/Library/Containers/com.utmapp*、~/Library/Group Containers/*.com.utmapp.UTM、~/Library/Application Scripts/*com.utmapp*,以及偏好设置和保存的窗口状态全部移进废纸篓,不管你在 Mole 审查界面里勾没勾都会执行。这意味着 Data/Documents 里的每一台虚拟机都会跟着容器一起进废纸篓。先把虚拟机复制出来,或者直接跳过 zap 这一步:
brew uninstall --cask utm
Mole 会列出什么
~/Library/Containers/com.utmapp.UTM(内含 Data/Documents 及其中每一台虚拟机)会列出但不默认勾选,因为 Mole 把它当作你的数据而不是应用状态。~/Library/Application Scripts/com.utmapp.UTM、偏好设置和窗口状态默认勾选,组容器 ~/Library/Group Containers/WDNLXAD4W8.com.utmapp.UTM 和同名的 Application Scripts 文件夹会列出,但默认不勾选。上面那三处缓存 / 临时文件路径会单独出现在「清理」页,同样默认勾选,按普通可再生缓存处理;「清理」本身从不进入 Data/Documents。
这次检查覆盖了什么
测试用的 UTM 是通过 Homebrew cask utm 安装的,2026 年 9 月 17 日用一个开发版 Mole 卸载。那个构建当时已开启完全磁盘访问权限,残留审查界面被跳过,卸载直接执行;官网直装版用户仍会看到上文描述的审查列表。Group Container、沙盒容器、Application Scripts 三行都被干净移除,除了上面列出的内容没有发现新的残留。这次测试没有创建任何虚拟机,所以没有直接验证过「删除一个装满内容的 Data/Documents 文件夹」的实际情形;上文关于容器默认勾选的说明来自阅读 Mole 扫描器代码,不是根据实际删除一台虚拟机得到的结论。
