告别~!烦人的 homebrew 强制更新

Homebrew 使用中的"踩坑"和"填坑"经验总结!


1. Homebrew 自动更新问题

问题:执行 brew install 或 upgrade 时,Homebrew 强制运行 update,耗费时间。

解决方案(按推荐程度排序):

  1. 导出环境变量(推荐): 在 ~/.zshrc 或 ~/.bashrc 中添加:

    bash

    ini 复制代码
    export HOMEBREW_NO_AUTO_UPDATE=1

    全局禁用自动更新,需手动运行 brew update 检查更新。

  2. 使用 alias: 在 ~/.zshrc 或 ~/.bashrc 中添加:

    bash

    ini 复制代码
    alias brew="HOMEBREW_NO_AUTO_UPDATE=1 brew"

    效果同上,但仅对 brew 命令生效。

  3. 单次禁用: 临时禁用自动更新:

    bash

    ini 复制代码
    HOMEBREW_NO_AUTO_UPDATE=1 brew install <formula>
  4. 使用 Homebrew/aliases:

    bash

    ini 复制代码
    brew alias install_no_autoupdate='!HOMEBREW_NO_AUTO_UPDATE=1 brew install'

    然后用 brew install_no_autoupdate 替代 brew install。

补充:

  • 禁用自动更新后,需定期手动运行 brew update 以确保获取最新公式。
  • 如果需要临时启用自动更新,可运行 unset HOMEBREW_NO_AUTO_UPDATE。

  1. Cask 和 App Store 应用混淆问题

问题:Cask 和 App Store 都将应用安装到 /Applications,导致:

  1. 无法区分安装来源。
  2. 同一应用可能被覆盖。

解决方案:

  • 设置 Cask 安装路径: 在 ~/.zshrc 或 ~/.bashrc 中添加:

    bash

    ini 复制代码
    export HOMEBREW_CASK_OPTS="--appdir=~/Applications/_"

    Cask 应用将安装到 ~/Applications/_/,与 /Applications 分离。

作者的应用管理建议:

  • App Store:安装到 /Applications。
  • Cask:安装到 ~/Applications/_/。
  • 破解应用:安装到 ~/Applications/#/。
  • JetBrains IDE:通过 JetBrains Toolbox 管理(Toolbox 本身用 Cask 安装)。
  • 开源/免费应用:安装到 ~/Applications。

补充:

  • 确保 ~/Applications/_ 和 ~/Applications/# 目录存在,可手动创建:

    bash

    javascript 复制代码
    mkdir -p ~/Applications/_ ~/Applications/#
  • 为避免权限问题,检查目录权限:

    bash

    bash 复制代码
    chmod -R u+rwX ~/Applications

  1. Cask 批量更新问题

问题:老脚本不再适用,需更高效的 Cask 应用更新方式。

解决方案:

  • 安装 cask-upgrade:

    bash

    bash 复制代码
    brew tap buo/cask-upgrade
  • 使用命令:

    • 更新所有可更新的应用:

      bash

      复制代码
      brew cu
    • 更新特定应用:

      bash

      xml 复制代码
      brew cu <app>
    • 常用选项:

      • -a:包含自动更新的应用。
      • -f:强制更新版本号为 latest 的应用。
      • -y:自动确认所有更新提示。

补充:

  • 项目地址:buo/homebrew-cask-upgrade

  • 运行 brew cu 前,建议先运行 brew update 确保 Cask 仓库最新。

  • 如果遇到更新失败,可尝试单独更新应用并检查日志:

    bash

    css 复制代码
    brew cu <app> --verbose

  1. 国内网络导致 Homebrew 速度慢

问题:brew update 和 brew install 因网络问题速度慢。

解决方案:

  1. 换源(推荐):

    • 参考清华镜像源指南:

      • brew update 慢:替换 Homebrew 核心仓库源。

      • brew install 慢:替换 Homebrew Bottles 源。

      • 配置步骤(以清华源为例):

        bash

        bash 复制代码
        # 替换 core 仓库
        git -C "$(brew --repo)" remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git
        git -C "$(brew --repo homebrew/core)" remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-core.git
        git -C "$(brew --repo homebrew/cask)" remote unstoppable https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-cask.git
        # 替换 Bottles 源
        echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles' >> ~/.zshrc
        source ~/.zshrc
      • 清华源地址:mirrors.tuna.tsinghua.edu.cn.

    • 其他可选源:中科大、阿里云等。

  2. 代理:

    • 设置代理(替换为自己的代理地址和端口):

      bash

      arduino 复制代码
      export all_proxy=socks5://<host>:<port>
    • 适用于有稳定代理的用户,速度通常更快。

补充:

  • 换源后首次运行 brew update 可能较慢,后续会显著提升。

  • 若源失效,可切换回官方源:

    bash

    bash 复制代码
    git -C "$(brew --repo)" remote set-url origin https://github.com/Homebrew/brew.git
  • 代理设置可能影响其他工具,完成后可取消:

    bash

    bash 复制代码
    unset all_proxy

  1. SHA256/Checksum 不匹配问题

问题:

  • Error: SHA256 mismatch(brew)或 Error: Checksum mismatch(cask),因仓库校验值与实际文件不一致。

解决方案:

  1. 清理缓存(优先尝试):

    bash

    bash 复制代码
    rm -rf ~/Library/Caches/Homebrew
    brew install <formula/app>

    适用于发行者未更新版本号但修改了文件的情况。

  2. 手动修改校验值(若缓存清理无效):

    • Brew:

      • 编辑公式文件:

        bash

        bash 复制代码
        nano /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/<formula>.rb
      • 将 sha256 值替换为实际文件的校验值(可通过 shasum -a 256 获取)。

    • Cask:

      • 编辑 Cask 文件:

        bash

        bash 复制代码
        nano /usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask/Casks/<app>.rb
      • 更新 sha256 值。

    • 保存后重新运行 brew install 或 brew cask install。

  3. 注意事项:

    • 禁用自动更新:防止修改被覆盖:

      bash

      ini 复制代码
      export HOMEBREW_NO_AUTO_UPDATE=1
    • 保留编辑器:安装成功后撤销修改(避免 Git 冲突)。

    • 恢复仓库(若冲突):

      bash

      bash 复制代码
      cd /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core
      git reset --hard
      cd /usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask
      git reset --hard

补充:

  • 计算实际文件校验值:

    bash

    css 复制代码
    shasum -a 256 /path/to/downloaded/file
  • 若问题反复出现,检查是否为网络问题导致文件下载不完整,可尝试代理或换源。

  • 长期修改校验值不推荐,可能影响安全性,建议向 Homebrew 仓库提交 issue。


常见问题解答

  1. 如何恢复 Homebrew 默认设置?

    • 移除自定义环境变量:

      bash

      bash 复制代码
      unset HOMEBREW_NO_AUTO_UPDATE
      unset HOMEBREW_CASK_OPTS
      unset HOMEBREW_BOTTLE_DOMAIN
    • 重置仓库:

      bash

      perl 复制代码
      brew update-reset
  2. 如何检查 Homebrew 健康状态?

    bash

    复制代码
    brew doctor

    按提示修复问题。

  3. Cask 已被废弃,如何处理?

    • 自 Homebrew 2.6.0(2020年12月)起,Cask 已整合到 Homebrew,无需单独安装。
    • 旧命令 brew cask install 自动转为 brew install --cask 。
    • 更新脚本或命令以兼容新语法。

总结

Homebrew 在 macOS 环境下的常见问题及解决方案,涵盖自动更新、Cask 管理、网络优化和校验错误等。推荐优先使用环境变量方式禁用自动更新、配置清华源提升速度,并通过 cask-upgrade 简化 Cask 应用管理。对于校验问题,清理缓存是首选,手动修改需谨慎操作。

相关推荐
爱喝奶茶的企鹅3 小时前
Ethan独立开发产品日报 | 2025-04-24
人工智能·程序员·开源
SimonKing11 小时前
惊!未实现Serializable竟让第三方接口回调全军覆没
前端·程序员·架构
哔哩哔哩技术13 小时前
世界知识产权日 | 2025年度哔哩哔哩技术专利评选结果出炉!
程序员
Lx35215 小时前
跨国团队协作的十二时辰:时区、文化、代码的三重奏
程序员
TF男孩1 天前
中年程序员,看不惯大公司,去小公司了
程序员
xiezhr1 天前
程序员的快乐其实很简单
程序员·代码规范
陈随易1 天前
pnpm v10防恶意软件立大功,Bun一个PR最高7万奖金
前端·后端·程序员
CodeSheep2 天前
稚晖君公司的薪资和招人标准
前端·后端·程序员
桦说编程2 天前
编程原则不是目的,而是手段
设计模式·程序员·代码规范