macos无法真正禁止单个软件自动升级,但可通过分层控制精准拦截系统级更新:关闭softwareupdate调度、禁用app store系统安装器下载、锁定com.apple.softwareupdate.plist为只读、屏蔽苹果更新域名。

macOS 无法真正“禁止单个软件”自动升级,但能精准拦截系统级更新行为并固化配置——关键在分层控制 + 配置文件锁定。
关闭系统级自动检查与下载(softwareupdate 核心开关)
macOS 的自动升级不是靠每个 App 自己决定,而是由系统服务 softwareupdate 统一调度。关掉它,绝大多数后台静默行为就停了。
- 执行
sudo softwareupdate --schedule off:彻底停用定时检查任务,连 Dock 图标红点都会消失 - 验证是否生效:运行
softwareupdate --schedule,返回Automatic checking is off.才算成功 - 注意:该命令不触碰 App Store 的独立逻辑,仅影响系统原生更新通道
- 若之后误开图形界面设置,此命令仍保持有效——比 GUI 设置更底层、更稳定
禁用 App Store 对 macOS 安装器的自动下载(com.apple.appstore 配置项)
App Store 会悄悄下载 macOS Sequoia Installer 这类大体积安装包,即使你从不点开它——这是独立于 softwareupdate 的另一条通路。
- 打开 App Store → 菜单栏
App Store→设置… - 取消勾选:
自动下载 macOS 更新(该选项在较新版本中明确存在,不是所有系统都显示) - 如无此选项,可终端强制写入:
defaults write com.apple.appstore AutoUpdate -bool false,然后重启 App Store - 该设置不影响普通 App 更新,只针对系统安装器类包,避免占用数十 GB 临时空间
用只读 com.apple.SoftwareUpdate.plist 锁死配置(防 MDM/系统重置)
某些场景下(如企业设备、升级后系统重置),GUI 或命令行设置会被覆盖。创建空且只读的偏好文件,能让系统“放弃写入”,从而维持禁用状态。
- 终端执行:
sudo touch /Library/Preferences/com.apple.SoftwareUpdate.plist - 再执行:
sudo chown root:wheel /Library/Preferences/com.apple.SoftwareUpdate.plist - 最后加锁:
sudo chmod 444 /Library/Preferences/com.apple.SoftwareUpdate.plist - 效果:系统尝试写入更新配置时会静默失败,不会报错,也不会覆盖你的禁用意图
- ⚠️ 注意:此操作后,任何图形界面里的“自动保持 Mac 最新”开关将无法真正开启——它看起来能点,但实际无效
屏蔽更新域名(网络层兜底,应对弹窗/红点残留)
极少数情况(如已触发部分下载流程、或第三方工具干扰),系统仍可能发起连接并弹出提示。此时需从 hosts 层截断通信。
- 编辑:
sudo nano /etc/hosts - 追加以下行(每行一个,不可合并):
127.0.0.1 swscan.apple.com127.0.0.1 swdist.apple.com127.0.0.1 swcdn.apple.com127.0.0.1 mesu.apple.com - 保存后无需重启,立即生效;但会影响 Xcode 等依赖苹果 CDN 的工具联网验证(极少发生,可按需注释)
- 这不是首选方案,而是当红点反复出现、且前几步都确认生效时的最终排查手段
真正难的是分清「谁在升级」:系统更新、安全补丁、App Store 安装器、Xcode CLI 工具、甚至某些第三方应用内建的 updater,它们走的不是同一条路。想锁死某一项,得先看清它从哪扇门进来——否则改了 softwareupdate,App Store 还在下安装器;锁了 hosts,CLI 工具又通过其他域名拉取更新。动手前,先跑一遍 softwareupdate -l 和 defaults read com.apple.appstore,比直接敲 sudo 更省时间。










