leesamsik
V2EX  ›  macOS

macOS 屏蔽更新的方法

  •  
  •   leesamsik · 1 day ago · 1814 views

    我的设备是 M2Pro 的 MBP ,目前系统停在 15.8 不准备再升级了。27 的系统更新提示实在是烦人,最近发现把 Beta 版更新开关打开,然后选择“macOS Sequoia Public Beta 版”就不会有 macOS27 的更新提示了。操作简单且不用更改系统设置,需要的 V 友可以试试

    15 replies    2026-09-20 21:55:03 +08:00
    Superoutman
        1
    Superoutman  
    PRO
       1 day ago via iPhone
    晚上回去试试
    hangzhou
        2
    hangzhou  
       1 day ago
    xi't 系统已经下载好了,不想升级怎么办。问 gpt 说是只能关机或启用 caffeinate -dimsu 命令,不让电脑进入睡眠。现在只要待机就会自动升级系统
    leesamsik
        3
    leesamsik  
    OP
       1 day ago
    @hangzhou 系统设置 > 通用 > 储存空间,检查“macOS”或“应用程序”分类下的安装包文件,删除
    shintendo
        4
    shintendo  
       1 day ago
    但是那个 beta 更新很频繁,也挺烦的
    ech2o
        5
    ech2o  
       1 day ago
    @hangzhou #2 没下载好啊,大版本安装包只能手动点击升级才下载,不信你去 update 文件夹看看
    bokix
        6
    bokix  
       1 day ago
    我之前是让 codex 写了一个 plist ,会屏蔽更新的,应该是这个帖子: https://www.v2ex.com/t/1160516#reply18
    yoyoyoyolol
        7
    yoyoyoyolol  
       1 day ago
    AI 时代全是漏洞,不更新有风险。前段时间 iOS18.6 之前的设备有个漏洞,打开一个病毒网页就可以把你本地的 keychain 都偷走了
    leesamsik
        8
    leesamsik  
    OP
       1 day ago via iPhone
    @bokix #6 收藏学习了,回头试试
    leesamsik
        9
    leesamsik  
    OP
       1 day ago via iPhone
    @shintendo #4 所以把 beta 测试选到自己所在的这个版本,更新的频率不高。
    leesamsik
        10
    leesamsik  
    OP
       1 day ago via iPhone
    @yoyoyoyolol #7 事实是这样,如果系统更新既能补漏,又不姑姑带来其他问题的话,没人会成天研究怎么屏蔽更新,大部分人其实都想无脑 OTA
    q534
        11
    q534  
       16h 48m ago
    我的方法,host 里面写一条:127.0.0.1 gdmf.apple.com ,既可以接受系统组件的更新比如 safari27 ,又不会收到系统本身更新的提示🫡
    n2Day
        12
    n2Day  
       16h 29m ago
    ttkanni
        13
    ttkanni  
       16h 18m ago via iPhone
    只加 host 不行,代理开了 TUN 还要在代理里写拦截规则,不然屏蔽会失效。
    ErZhou
        14
    ErZhou  
       12h 42m ago
    15.3 也可以吗
    vovov
        15
    vovov  
       3h 43m ago
    我写了一个脚本 toggle_apple_hosts.sh ,终端执行 sudo sh toggle_apple_hosts.sh 可自动切换是否更新系统,执行后重启电脑,小红点即可消失:

    ```bash
    #!/bin/bash

    # 确保脚本以 root 权限运行
    if [ "$EUID" -ne 0 ]; then
    echo "权限不足,请使用 sudo 运行此脚本: sudo $0"
    exit 1
    fi

    HOSTS_FILE="/etc/hosts"
    # 使用其中一个需要切换的域名作为状态判断基准
    CHECK_DOMAIN="swdist.apple.com"

    # 检查 hosts 文件中是否已存在这些域名
    if ! grep -q "$CHECK_DOMAIN" "$HOSTS_FILE"; then
    echo "错误:未在 $HOSTS_FILE 中找到相关域名,请先按照配置更新 hosts 文件。"
    exit 1
    fi

    # 检查当前是否已被注释 (行首以 # 开头并包含该域名)
    if grep -q "^#.*$CHECK_DOMAIN" "$HOSTS_FILE"; then
    echo "当前状态: [已放行] 系统更新(规则被注释)。"
    echo "正在切换为 -> [拦截] 模式 (仅拦截系统更新,保留 App Store)..."

    # 仅取消注释特定的 6 个域名(同时生效于 IPv4 和 IPv6 )
    sed -i '' -e '/swdist.apple.com/ s/^#*//' \
    -e '/swdownload.apple.com/ s/^#*//' \
    -e '/swcdn.apple.com/ s/^#*//' \
    -e '/gdmf.apple.com/ s/^#*//' \
    -e '/xp.apple.com/ s/^#*//' \
    -e '/mesu.apple.com/ s/^#*//' "$HOSTS_FILE"
    else
    echo "当前状态: [已拦截] 系统更新(规则生效中)。"
    echo "正在切换为 -> [放行] 模式..."

    # 仅为特定的 6 个域名添加注释(同时生效于 IPv4 和 IPv6 )
    sed -i '' -e '/swdist.apple.com/ s/^/#/' \
    -e '/swdownload.apple.com/ s/^/#/' \
    -e '/swcdn.apple.com/ s/^/#/' \
    -e '/gdmf.apple.com/ s/^/#/' \
    -e '/xp.apple.com/ s/^/#/' \
    -e '/mesu.apple.com/ s/^/#/' "$HOSTS_FILE"
    fi

    # 刷新 DNS 缓存
    echo "正在刷新 macOS DNS 缓存..."
    dscacheutil -flushcache
    killall -HUP mDNSResponder

    echo "切换完成!"
    ```
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1186 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 93ms · UTC 17:38 · PVG 01:38 · LAX 10:38 · JFK 13:38
    ♥ Do have faith in what you're doing.