跳转到内容

系统升级检查清单 ​

每年秋天一个大版本。升不升、什么时候升,取决于你靠这台机器做什么。

这一篇给出一份可以照着走的清单。核心不是「要不要升级」的立场,而是升级前你应该知道哪些事,升级后应该检查哪些事。

开始之前 ​

需要读过版本与兼容性。升级前的备份环节要求你已经有一份验证过的备份。

先认清一件事:大版本降级很麻烦 ​

小版本更新(如 26.1 到 26.2)风险低,通常可以直接装。

大版本升级不同:它基本是单向的。 想回到旧版本,需要抹掉磁盘重装旧系统,再从备份恢复数据——而且新版本创建的数据在旧系统上未必能用。

所以升级前那份备份不是走过场,它是你唯一的退路。

升级前 ​

1. 兼容性核对 ​

按重要性排序,逐个确认:

检查项怎么确认
吃饭的应用去开发者官网看是否已声明支持新版本
需要驱动的外设打印机、声卡、绘图板、加密狗,看厂商页面
开发工具链Xcode、运行时版本管理器、容器工具
系统扩展类软件虚拟机、网络工具、杀毒软件、输入法
受管理的设备由单位管理时,先问 IT

最后一行之外,风险最高的是第四行。深度依赖系统机制的软件在大版本更新后出问题的概率远高于普通应用。

不确定就等。发布后一两个月,各家的兼容性情况会清楚得多,第一个补丁版本也出来了。没有任何东西会因为你晚一个月升级而损失。

2. 记录现状 ​

sh
sw_vers

sw_vers 输出当前的系统名称、版本号和构建号。抄下来——出问题需要求助时,别人第一句就会问这个。

sh
launchctl list | grep -v "^-" > ~/Desktop/launchd-before.txt

导出当前正在运行的后台任务,grep -v "^-" 排除掉没在运行的(-v 表示反向匹配)。升级后对比,能看出哪些任务掉了,见 launchd。

再去「系统设置 → 隐私与安全性」把各类别下的应用抄一份。下一节会解释为什么。

3. 备份与快照 ​

sh
tmutil localsnapshot

手工建一个本地快照,见 APFS 快照。这能应对「升级后想撤销某个小改动」,但不能替代完整备份。

然后接上备份盘完成一次时间机器备份,并确认它真的完成了(看时间机器设置里的最近备份时间,不是看菜单栏图标)。

4. 空间与电源 ​

大版本升级需要相当多的可用空间——安装器本身、解压空间、旧系统的保留部分。留出至少几十 GB。

sh
df -h /System/Volumes/Data

笔记本接上电源。升级过程中断电可能需要进恢复模式修复。

5. 挑时间 ​

升级要花一到两小时,之后还有一段修补授权、等待索引重建的时间。不要在需要用这台机器交付工作的当天升级。

升级后:按这个顺序检查 ​

新系统启动后,先别急着用,按顺序过一遍。

隐私授权大概率被重置 ​

这是升级后问题最集中的地方。部分类别的授权会在大版本更新后被清空或失效,表现通常是静默失败——程序不报错,只是不工作了。

对照升级前抄的清单,逐个检查「系统设置 → 隐私与安全性」下的:辅助功能、输入监控、完全磁盘访问权限、屏幕录制、自动化。

典型症状:改键工具不生效(Karabiner)、窗口脚本毫无反应(Hammerspoon)、备份工具报错访问被拒。机制见 TCC 隐私授权。

后台任务 ​

sh
launchctl list | grep -v "^-" > ~/Desktop/launchd-after.txt
diff ~/Desktop/launchd-before.txt ~/Desktop/launchd-after.txt

diff 比较升级前后的差异。少了的任务需要重新加载。

命令行环境 ​

sh
brew doctor
brew bundle check --verbose

大版本升级后,Homebrew 经常需要重装部分依赖。brew doctor 会指出需要处理的问题。

Xcode 命令行工具常常需要重新安装:

sh
xcode-select --install

没装过或已损坏时它会弹出安装提示;已经装好则会提示已安装,这是正常的。

索引重建 ​

升级后 Spotlight 会重建索引,这期间搜索结果不全、CPU 占用偏高、电池更快。这是正常的,不需要处理,等它跑完即可,通常几小时。

现在就去清理缓存或者装优化软件,只会让这个过程更久,见优化传言辨析。

逐项验证 ​

打开你最依赖的三到五个应用,各做一件真实的事——不是打开看看,而是真的完成一次日常操作。打印一页、导出一个文件、连一次服务器。

别急着删旧版安装器 ​

确认一切正常之前,如果你保留了旧版本的安装器,先留着。完全确认新系统可用后再清理。

一份可打印的清单 ​

升级前
□ 关键应用兼容性已确认
□ 外设驱动已确认
□ 已记录 sw_vers 输出
□ 已导出 launchd 列表
□ 已抄录隐私授权清单
□ 时间机器备份已完成(看最近备份时间)
□ 已做一次恢复验证
□ 可用空间充足、已接电源
□ 今天不需要用它交付工作

升级后
□ 隐私授权逐类别核对
□ launchd 列表对比无缺失
□ brew doctor 无严重问题
□ 命令行工具可用
□ 关键应用各完成一次真实操作
□ 记录新的 sw_vers

检查结果 ​

sh
sw_vers

版本号是新的,说明升级完成。

sh
launchctl list | grep -v "^-" | wc -l

和升级前的数量相近,说明后台任务没有大面积丢失。

sh
tmutil latestbackup

能输出最近一次备份的路径,说明时间机器在升级后仍然正常工作。备份盘没插时会报错,这是预期行为。

动手练习 ​

即使现在不打算升级,这份准备工作也值得做一次:

  1. 执行 sw_vers,把输出记在你的设备笔记里。
  2. 导出当前的 launchd 列表到一个安全的位置。
  3. 抄录一份隐私授权清单。
  4. 列出你最依赖的五个应用,逐个去官网查它们当前声明支持到哪个 macOS 版本。
  5. 回答:如果今天升级后发现第 4 题里某个应用不能用,你多久能回到现在的状态?

成功标准是第 5 题能给出一个具体的时间,而不是「应该能恢复吧」。给不出,说明退路还没准备好——这比兼容性本身更值得先解决。

返回维护与调优