告别~!烦人的 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 应用管理。对于校验问题,清理缓存是首选,手动修改需谨慎操作。

相关推荐
陈随易1 天前
Element Plus 2.10.0 重磅发布!新增Splitter组件
前端·后端·程序员
陈随易1 天前
2025年100个产品计划之第11个(哆啦工具箱) - 像哆啦A梦口袋一样丰富的工具箱
前端·后端·程序员
大模型教程1 天前
RAG 实战指南(五):RAG 信息检索:如何让模型找到‘对的知识’
程序员·llm
redreamSo1 天前
AI Daily | AI日报:科学家怒揭 AI 科研黑幕; 清华:AutoMat让电镜流程大提速; AI辩论:81.7%概率让你信服
程序员·aigc·资讯
玄玄子1 天前
webpack学习指南
前端·webpack·程序员
AI大模型1 天前
大模型系列炼丹术(六) - 别只会用Greedy!6种主流LLM解码策略全面解析,附适用场景
程序员·llm
LLM大模型1 天前
LangChain篇-提示词工程应用实践
人工智能·程序员·llm
再学一点就睡2 天前
🌆 一个人的城市,一群人的代码:前端小白的两个月“渡劫”实录
程序员
suke2 天前
MinIO社区版"挥刀自宫":Web管理功能全砍,社区信任岌岌可危
后端·程序员·开源
AI大模型2 天前
大模型系列炼丹术(五):LLM自回归预训练过程详解
程序员·llm