作者:gc(at)sysin.org,主页:www.sysin.org

请访问原文链接:https://sysin.org/article/Disable-macOS-Update/,查看最新版。原创作品,转载请保留出处。

随着 macOS Big Sur 11.3 的发布,macOS 11 可靠性和性能已经大幅提升,下一个版本 11.4 笔者考虑直接屏蔽了。等到 11.5,Big Sur 更新的使命基本完成了。是时候屏蔽自动更新了!

提示:

以下步骤不是完全必要,但是全部执行可以确保解决顽固性的更新通知角标出现。

本文针对 macOS Big Sur,更低的版本有限适用。

如果是新安装系统,暂时不要联网,确保完美屏蔽更新。

1. 取消自动更新选项

请选取苹果菜单  > “系统偏好设置”,然后点按 “软件更新”。

取消勾选:“自动保持我的 Mac 最新”

参看:在 Mac 上更改 “软件更新” 偏好设置

2. macOS Big Sur 如何进行自动更新

路径:检测 > 通知 > 下载

  • 检测:进程 /usr/libexec/nsurlsessiond 访问 Apple 相关 URL 检测软件更新;

  • 通知:进程 /System/Library/PrivateFrameworks/SoftwareUpdate.framework/Versions/A/Resources/SoftwareUpdateNotificationManager.app/Contents/MacOS/SoftwareUpdateNotificationManager 负责通知,产生系统更新标记(小红点);

  • 下载:进程 /System/Library/PrivateFrameworks/MobileSoftwareUpdate.framework/Support/softwareupdated 负责下载软件更新。

所以要屏蔽自动更新和更新标记出现,解决方案如下:

检测(屏蔽网络访问) > 通知(取消执行权限) > 下载(屏蔽网络访问)。

3. 屏蔽网络访问

3.1 编辑 hosts 文件,添加如下内容

手动编辑:打开终端,执行命令 sudo vi /etc/hosts,添加以下条目;

127.0.0.1 swscan.apple.com
127.0.0.1 swcdn.apple.com
127.0.0.1 swdist.apple.com

推荐使用 SwitchHosts!(免费软件)。

一般使用该步骤即可发生作用,自动更新已经被屏蔽。

3.2 或者(或同时)使用防火墙软件屏蔽

推荐 Little Snitch,这是一个商业软件

  • 新建规则 1:禁止下载更新相关的数据

    Process Name:/usr/libexec/nsurlsessiond

    Deny Outgoing Connections

    To: Any Server

  • 新建规则 2:禁止 Big Sur 下载进程网络访问

    Process Name:/System/Library/PrivateFrameworks/MobileSoftwareUpdate.framework/Support/softwareupdated

    Deny Outgoing Connections

    To: Any Server

备注:在 macOS Catalina 进程 /System/Library/CoreServices/Software Update.app/Contents/Resources/softwareupdated 负责下载软件更新。

4. 清除系统更新标记(红点 1)

4.1 临时清除系统更新标记

如果已经检测到更新,可以使用如下方法临时去除更新通知标记。

打开 “终端”,执行如下命令:

defaults write com.apple.systempreferences AttentionPrefBundleIDs 0
Killall Dock

4.2 修改权限(一般可以忽略)

在 macOS Big Sur 相对于之前的版本,系统完整性保护进一步增强,无法在“恢复模式”下修改下述文件的权限。操作略嫌复杂,以下步骤仅供参考。

  1. 确保 FileVault 已经禁用(默认禁用),在 ” >> 系统偏好设置... >> 安全性和隐私 >> 文件保险箱” 查看。

  2. 进入恢复模式(启动到 recoveryOS),打开终端执行如下命令:

    参看:关于 macOS 恢复功能:重启电脑,在黑屏的时候按住 command + R 进入恢复模式(可以按住 command + R 不放,直到 apple logo 画面出现)即可进入恢复模式,然后点击菜单栏,“实用工具 >> 终端”。

    csrutil authenticated-root disable
  3. 正常重启到 macOS。

  4. 通过执行 mount 命令查找要挂载的设备(这里定义为 <DISK_PATH> ):

    $ mount
    /dev/disk1s5s1 on / (apfs, sealed, local, read-only, journaled)

    注意:这里的 / 目录的的设备名称显示 /dev/disk1s5s1,那么应该挂载的设备名称是 /dev/disk1s5,s1 表示 “Snapshot 1”(APFS 快照):

  5. 创建一个新目录用于挂载(这里定义为 <MOUNT_PATH> ):

    例如:~/mount

    mkdir -p -m777 ~/mount
  6. 执行挂载:

    sudo mount -o nobrowse -t apfs <DISK_PATH> <MOUNT_PATH>

    例如使用上面的值:

    sudo mount -o nobrowse -t apfs /dev/disk1s5 ~/mount
  7. 在 <MOUNT_PATH> 下修改文件。

    例如:

    cd ~/mount
    sudo chmod 644 System/Library/PrivateFrameworks/SoftwareUpdate.framework/Versions/A/Resources/SoftwareUpdateNotificationManager.app/Contents/MacOS/SoftwareUpdateNotificationManager
  8. 执行 sudo bless --folder <MOUNT_PATH>/System/Library/CoreServices --bootefi --create-snapshot

  9. 重启系统生效。

提示:在 macOS Catalina 中只需要在 recoveryOS 操作即可,步骤如下:

  1. 进入恢复模式(启动到 recoveryOS):

    重启电脑,在黑屏的时候按住 command + R 进入恢复模式(可以按住 command + R 不放,直到 apple logo 画面出现)

    参看:关于 macOS 恢复功能

  2. 打开 “终端”(Utilities (实用工具) -> Terminal(终端)):

    # 切换到系统所在卷,默认名称是 “Macintosh HD”
    cd /Volumes/Macintosh\ HD
    # 如果修改了名称,假如系统卷名称是 Mac
    cd /Volumes/Mac
  3. 取消 SoftwareUpdateNotificationManager 可执行权限(默认权限位是 751):

    检测系统更新时该进程一直在运行,即使屏蔽了网络访问,仍然可能出现通知标记,所以修改它的可执行权限来禁止它运行。

    chmod 644 System/Library/PrivateFrameworks/SoftwareUpdate.framework/Versions/A/Resources/SoftwareUpdateNotificationManager.app/Contents/MacOS/SoftwareUpdateNotificationManager
  4. 退出终端,重启电脑,操作完毕。

5. 如果需要更新

不建议补丁打补丁的方式安装,可以使用完整软件包升级或者全新安装:

  • 下载本站 macOS 镜像,完整安装。

    macOS 下载汇总

    macOS Big Sur

  • 或者取消上述第 3 条的屏蔽,访问 App Store 下载 macOS 完整软件包,下载后会自动保存在“应用程序”下面,直接安装即可。

6. 禁用 App Store 更新

6.1 确保 App Store > 偏好设置... 中取消勾选“自动更新”(默认)

6.2 清除更新标记(数字角标)

如果已经检测到更新,App Store 图标上出现红点数字,打开终端执行如下命令可以清除:

defaults write com.apple.appstored.plist BadgeCount 0
Killall Dock

参考:https://developer.apple.com/documentation/devicemanagement/appstore

6.3 禁用全局 App 更新

编辑 hosts 文件,添加如下内容:

手动编辑:打开终端,执行命令sudo vi /etc/hosts,添加以下条目;

127.0.0.1 gsp64-ssl.ls.apple.com

备注:因网络环境差异,地址可能有所差异,如果无效请反馈。使用防火墙屏蔽进程可以彻底解决该问题。

推荐使用 SwitchHosts!(免费软件)。

或者(或同时)使用防火墙软件屏蔽:

推荐 Little Snitch,这是一个商业软件

  • 新建规则 1:禁止下载更新相关的数据

    Process Name:/usr/libexec/nsurlsessiond

    Deny Outgoing Connections

6.4 禁用单个 App 更新

打开 Finder (访达),浏览到侧边栏 Applications(应用程序),找到不需要更新的 App,点击右键 “显示包内容”,此时出现 Content 文件夹,展开该文件夹,可以看到下面有个 _MASReceipt 文件夹,直接将 _MASReceipt 文件夹删除,即可禁用该 App 自动检测 App Store 软件更新。

如何彻底禁止 macOS Big Sur 自动更新,去除更新标记和通知的更多相关文章

  1. 如何在 Mac 和虚拟机上安装 macOS Big Sur、Monterey 和 Ventura

    请访问原文链接:https://sysin.org/blog/how-to-install-macos/,查看最新版.原创作品,转载请保留出处. 作者主页:www.sysin.org 名词解释: 硬件 ...

  2. 如何彻底禁止 macOS Monterey 自动更新,去除更新标记和通知

    请访问原文链接:如何彻底禁止 macOS Monterey 自动更新,去除更新标记和通知,查看最新版.原创作品,转载请保留出处. 作者主页:www.sysin.org 随着 macOS Montere ...

  3. 升级 macOS Big Sur 差点丢了我多年的珍藏文件(夹)!!!

    原来升级 macOS Big Sur 过程中会转移根目录下的个人文件(夹). 春节期间升级了一下 macOS ,升级之前就比较担心丢数据,然而怕什么来什么.升级之后发现根目录下的个人文件(夹)都不见了 ...

  4. macOS Big Sur 11.4 (20F71) 正式版(DMG、ISO、IPSW),百度网盘下载

    本站提供的 macOS Big Sur 软件包,既可以拖拽到 Applications(应用程序)下直接安装,也可以制作启动 U 盘安装,或者在虚拟机中启动安装. 请访问原文链接:https://sy ...

  5. 如何屏蔽 iOS 软件自动更新,去除更新通知和标记

    适用于 iOS.iPadOS 和 watchOS,即 iPhone.iPad 和 Apple Watch 通用. 请访问原文链接:https://sysin.org/article/Disable-i ...

  6. macOS Big Sur 11.3 (20E232) 正式版发布,百度网盘下载

    本站提供的 macOS Big Sur 软件包,即可以直接拖拽到 Applications(应用程序)下直接安装,也可以制作启动 U 盘安装,或者直接在虚拟机中启动安装. 请访问原文链接:https: ...

  7. grunt配置太复杂?发布一个前端构建工具,简单高效,自动跳过未更新的文件

    做前端项目,如果没有一个自动化构建工具,手动处理那简直就是坑爹O(∩_∩)O.于是上网了解了下,grunt用的人不少,功能也挺强大.看了一下grunt的配置(包括gulp),感觉稍显复杂.当时项目结构 ...

  8. 一键自动发布ipa(更新svn,拷贝资源,压缩资源,加密图片资源,加密数据文件,加密lua脚本,编译代码,ipa签名,上传ftp)

    一键自动发布ipa(更新svn,拷贝资源,压缩资源,加密图片资源,加密数据文件,加密lua脚本,编译代码,ipa签名,上传ftp) 程序员的生活要一切自动化,更要幸福^_^. 转载请注明出处http: ...

  9. 启用“关闭自动根证书更新”,解决Windows系统各种卡顿的问题(Visual studio 卡、远程桌面mstsc卡、SVN卡)

    最近,发现在Win7下面一系列操作都会出现卡顿的情况: 1.  Visual studio 启动调试和关闭调试时,都会卡上半分钟左右 2.  使用远程桌面mstsc.exe,点击连接时,也会卡上半分钟 ...

随机推荐

  1. gateway调用Fegin失败问题解决

    起因 新项目用的是springcloud2.0,网关用gateway替换了zuul. gateway动态路由跟zuul有本质上的区别.这就涉及到webflux这一套大东东了.简单来说,gateway是 ...

  2. 【pytest官方文档】解读fixtures - 3. fixtures调用别的fixtures、以及fixture的复用性

    pytest最大的优点之一就是它非常灵活. 它可以将复杂的测试需求简化为更简单和有组织的函数,然后这些函数可以根据自身的需求去依赖别的函数. fixtures可以调用别的fixtures正是灵活性的体 ...

  3. HUAWEI防火墙双出口据链路带宽负载分担

    组网图形 组网需求 通过配置根据链路带宽负载分担,使流量按照带宽的比例分担到各链路上,保证带宽资源得到充分利用. 如图1所示,企业分别从ISP1和ISP2租用了一条链路,ISP1链路的带宽为100M, ...

  4. 【Java】说说你对ThreadLocal的理解

    思路: 0.ThreadLocal是什么?有什么用? 1.ThreadLocal用在什么地方? 2.ThreadLocal的一些细节 3.ThreadLocal的最佳实践 一.ThreadLocal用 ...

  5. UVA10020(最小区间覆盖)

    题意:       给你一个区间[0,m]和一些小的区间[l,r]让你选择最少的小区间个数去把整个区间覆盖起来. 思路:       算是比较经典的贪心题目吧(经典于难度没什么对应关系),大体思路可以 ...

  6. POJ1548最小路径覆盖

    题意:       给你一个DAG,然后问你最少多少条路径能覆盖所有需要覆盖的点. 思路:       最小路径覆盖,太明显了,每个点向它右下方的点连边,然后...没啥难的地方,不说了. #inclu ...

  7. android The content of the adapter has changed but ListView did not receive a notification 错误的解决方案

    使用了AsyncTask在后台刷新适配器,并且通知ui线程更新ListView,运行时发现时不时的出现 如题 的错误, 导致程序崩溃,解决方法如下: 1.建立一个缓冲数据集,这个数据集就是填充适配器的 ...

  8. jupyter中那些神奇的第三方拓展魔术命令

    1 简介 无论是jupyter notebook还是jupyter lab,都可以使用ipython中的众多自带魔术命令来实现丰富的辅助功能,诸如%time之类的. 这些都已经是老生常谈的知识没什么好 ...

  9. PHP基础-常用的数组相关处理函数

    一 数组键/值操作有关的函数 1. array_values()//获取数组中所有的值 $lamp=array("os"=>"linux", " ...

  10. 中国排名前100的IC设计公司

    中国排名前100的IC设计公司 北京地区大唐微电子技术有限公司北京北大众志微系统科技有限责任公司北京中星微电子有限公司中国华大集成电路设计中心  北京中电华大电子设计有限责任公司  北京清华同方微电子 ...