由于本人实在不喜欢今年 macOS 26 的液态玻璃效果,所以准备把所有设备都固定在上个版本。
屏蔽 macOS 更新,是用屏蔽本机和检查更新主机之间连接的方式,让系统更新无法连接更新服务器。理论上是大多版本都通用的。
屏蔽更新
屏蔽设备连接 swscan.apple.com 即可。macOS 会连接这个主机来检查更新。
这个操作会让所有受“设置-软件更新”管理的软件,全都无法更新。
比如 Safari 和 CommandLineTools,以及 Logic 的部分资源等。
下面三种方案,选择一个就可以。请额外阅读其他问题。
hosts 方案
打开终端,运行下面的命令即可(运行时需要输入密码)。
1 | echo "127.0.0.1 swscan.apple.com" | sudo tee -a /etc/hosts |
然后刷新 DNS 缓存,在终端中依次运行下面的命令
1 | sudo dscacheutil -flushcache |
现在回到设置→软件更新,就会显示无法检查更新了。
如需临时更新一下,使用 sudo vi /etc/hosts,删掉新增的这一行即可。
防火墙方案
要使用能管理某个程序的连接的防火墙,比如 Little Snitch(付费软件)。
也有开源的替代品 Lulu 能达到同样的效果,相较于 Little Snitch,Lulu 更简单,但功能有限。
使用方式大同小异,阻止/System/Library/CoreServices/Software Update.app/Contents/Resources/softwareupdated对 swscan.apple.com 的连接即可。
相比用 hosts 屏蔽,这个更加灵活方便一点。
下面是上述两个软件的详细步骤
Little Snitch 详细步骤
- 打开规则管理(程序主窗口),并新建规则。
- 在显示 Any Process 的输入框中,粘贴下面这行内容并回车。
/System/Library/CoreServices/Software Update.app/Contents/Resources/softwareupdated - Action 选择 Deny,Direction 选择 Outgoing。
- To 选择 Hostnames,并在下面填入
swscan.apple.com。 - 确认创建规则。
Lulu 详细步骤
- 打开程序主窗口,选择“规则”选项卡,点击“查看规则”进入规则管理窗口。并新建一个规则。
- 程序路径部分,粘贴下面这行内容
/System/Library/CoreServices/Software Update.app/Contents/Resources/softwareupdated - 在远程地址/域名部分,填入
swscan.apple.com,行为选择禁止。 - 保存规则。
完成后,回到设置→软件更新,就会显示无法检查更新了。
如需临时恢复更新,禁用这个规则即可。
DNS 服务器规则
只适用于自建 DNS 服务器,只限于连接这个 DNS 服务器时有效。
将 swscan.apple.com 解析至任意错误 IP 即可。
其他问题
文中提到的主机名,在在企业网络上使用 Apple 产品文章有记录。
如果同时使用VPN或代理软件
一些代理软件的全局模式(GLOBAL)会拦截所有请求,发往代理服务器通信。部分软件还会绕过本机的 DNS,统一使用代理服务器。
这样就导致 macOS 检查更新的流量,无法被防火墙或 hosts 管理。
如果你用全局模式,那没办法。
如果你用直连模式(DIRECT),搭配防火墙,将 PacketTunnel 与 swscan.apple.com 建立的通信禁止即可。
如果你用规则模式(RULE),修改你的规则,将与 swscan.apple.com 修改至 DIRECT,然后搭配防火墙,将 PacketTunnel 与 swscan.apple.com 建立的通信禁止即可。
如果你用 Shadowrocket,将全局路由修改为“配置”,然后修改配置文件,在配置文件设置的通用-跳过代理中,加入 swscan.apple.com 即可。
如果依然有红点角标
屏蔽更新后,如果仍然有红点角标,并且由于检查不到更新导致角标去不掉的话:
暂时放行 swscan.apple.com,然后打开系统设置-软件更新,此时应该会跳出下个版本的更新按钮。
点击更新,系统应该会弹窗,让你同意一份许可协议,什么都不要点。
现在你可以任选一个步骤操作:
- 重新屏蔽
swscan.apple.com,然后点击许可协议的拒绝按钮。 - 从左上角 Apple 按钮中,打开强制退出,然后强制退出设置 App 即可(之后记得把
swscan.apple.com重新屏蔽)。
文章更新
2026 年 3 月 13 日:
发现苹果似乎更改了部分端点的返回,导致屏蔽 swdist 无效。
因此改为屏蔽swscan,测试有效,文章已更新。