1. 先聊一聊7.0 这波更新为什么值得你放下手头的事看一眼我是在一次例行的brew update时注意到版本号跳到 7.0 的。当时瞄了一眼发布说明第一反应是哦又一个大版本但往下看两行人直接坐直了——一个存在了十几年、一直以命令行工具就该待在终端里为荣的项目突然宣布引入了图形界面同时明确写了 Intel Mac 的官方支持进入一年倒计时。这两件事放在一起对整个 macOS 开发工具链的影响比表面上看起来大得多。Homebrew 这个包管理器从 2009 年出现到今天几乎所有 macOS 上做开发的人都在跟它打交道。它帮你装 Python、Node、Git、FFmpeg管理各种命令行工具和库。过去它一直坚持极简哲学一个 Ruby 脚本、一堆 Formula 定义文件、终端里敲命令。哪怕 Apple Silicon 已经全面普及它也始终没想过做 GUI。所以这次所谓的长出 GUI不是加了个花哨的图表页面那么简单而是 Homebrew 在用户定位上的一次明显转向。更值得注意的是 Intel Mac 的倒计时。从 PowerPC 迁移到 Intel再从 Intel 迁移到 Apple SiliconHomebrew 一直跟随苹果的架构变化做适配。但官方宣布未来一年后停止支持这种话还是第一次明确写出来。这意味着什么、对用 Intel Mac 的人有什么影响、现在装不上 Homebrew 又该怎么排查我结合自己这段时间的实操整理成了这篇东西。无论你是刚好在 Intel Mac 上遇到安装报错还是想升级 7.0 又担心踩坑或者只是好奇命令行工具做 GUI 会做成什么样这篇应该都能给出一些可落地的参考。2. 命令行工具第一次长出 GUIbrew gui 到底做了什么为什么值得用2.1 我拿到手后的第一印象升级到 7.0 后终端里多了一个brew gui子命令。运行它会拉起一个原生窗口整体是用 SwiftUI 写的界面风格和 macOS 系统设置非常统一不是那种套个 WebView 的伪 GUI。启动速度很快基本没有等待感这让我有点意外。打开后主界面是一个仪表盘核心信息分成四块功能模块主要作用替代的 CLI 命令包列表与依赖图查看所有已安装包、版本、依赖关系能按依赖层级展开brew list、brew deps --tree更新中心展示可用更新可以勾选需要升级的包单独或批量升级brew outdated、brew upgrade服务管理管理后台服务比如 MySQL、Redis的状态、启动、停止、开机自启brew services健康报告把brew doctor的检查结果分类展示问题能直接看到影响范围和修复建议brew doctor依赖关系可视化是最让我觉得这 GUI 没白做的功能。以前排查依赖冲突我只能用brew deps --tree在终端里看一大坨树形结构眼睛都快分叉了。现在在图形界面上可以直接点击某个包看它被谁依赖、又依赖了谁还能一键跳转到该包的 Formula 信息页。2.2 GUI 和 CLI 的分工逻辑一开始我也担心Homebrew 做 GUI是不是要向门槛越来越低妥协但实际用下来的感受是官方对这两者的边界想得很清楚。CLI 依然是核心操作方式。凡是需要脚本化、批量处理、远程操作、通过管道传递给其他命令的场景终端里永远更快。但另外一些场景比如我机器里到底装了哪些包各占了多大磁盘为什么更新到一半提示依赖冲突哪些服务处于异常状态这类信息查看型、诊断型的工作放进 GUI 反而比命令行效率高得多。说白了GUI 解决的从来不是执行命令这件事而是理解状态这件事。以前要看懂整个 Homebrew 环境需要手动把多个命令的输出拼在一起脑补现在一张图表就给你画清楚了。所以 7.0 的 GUI 不是替代品而是 CLI 的可视化辅助层。另外提一句brew gui目前不是所有平台都默认启用。Apple Silicon 的 macOS 上是默认装好的Intel Mac 上虽然能用但因为架构原因部分图表渲染表现会差一点Linux 上则需要手动安装 GUI 依赖。如果你执行brew gui提示没有这个子命令先brew update brew upgrade再检查一下是否安装了对应用户界面组件。3. Intel Mac 的一年倒计时官方支持策略到底意味着什么3.1 从时间线上看这个倒计时并不突然如果你一直在关注 Homebrew 的更新节奏会发现这次表态其实铺垫了很久。我梳理了一下大致的时间线时间节点Homebrew 的相关动作对 Intel Mac 的影响2020 年Apple Silicon 发布后Homebrew 开始提供 arm64 预编译包Intel 仍是主流双架构并行2021 年默认安装路径切换为/opt/homebrew仅 Apple Silicon 自动使用两套目录并存Intel 继续用/usr/local2023 年大量 Formula 开始将最低 macOS 版本要求提升到 12 或 13旧版 Intel Mac 系统装不上新包2025 年7.0 发布明确一年后停止 Intel 支持所有 x86_64 预编译包进入下线倒计时所以这不是拍脑袋做出的决定而是整个生态在过去几年里持续向新架构倾斜的必然结果。从官方角度来看维护 x86_64 的打包、测试和 CI 矩阵成本越来越高而使用 Intel Mac 做开发的用户比例逐年下降两边的资源配置必然要做取舍。3.2 停止支持后实际会发生什么很多人听到停止支持会以为Homebrew 立刻就不能用了其实不是这么回事。按照 Homebrew 历来的惯例和这次发布说明里的措辞一年后停止支持的主要是这几个方面不再提供新版本的 x86_64 预编译二进制包bottle——以后 Intel 用户装新软件就只能源码编译速度慢且容易失败。官方 CI 不再覆盖 Intel 架构——这意味着后续的 Formula 更新不会在 Intel 机器上做完整测试能不能跑全靠缘分。Homebrew 本身的基础更新也只对 Apple Silicon 和 Linux 做兼容承诺。大量上游依赖如果开始放弃 x86_64Homebrew 即使想支持也无能为力。但已经装好的 Homebrew 和已经安装的包不会消失。只要系统不更新、依赖不变化你现有的环境可以继续用相当长时间。真正的转折点在于当你想装一个以前没装过的新包或者想把某个旧包升级到新版本时会发现预编译包已经没有了只能走源码编译这条路。3.3 怎么判断自己是不是受影响人群在终端跑一行命令就能确认uname -m如果输出是x86_64那你目前用的就是 Intel 架构。再叠加一个条件——如果这台 mac 的系统版本还停在 macOS 12 或 13那几个别没有源码编译能力的 Formula 基本已经装不了了。如果你属于这种情况我的建议是分三步走先跑brew list和brew bundle dump把现有环境完整记录下来然后盘点自己日常工作里到底依赖哪些包有没有可能用云主机或 Docker 替代最后确定未来一年内是否需要继续在这台机器上装新软件如果不需要停在当前版本就是最稳的选择。4. Intel Mac 安装不了 Homebrew从实际报错说起4.1 一次真实的安装卡壳现场前阵子有个朋友正好找我帮忙他在一台 2019 年的 Intel MacBook Pro 上装 Homebrew折腾了整整两天都没成功。他把终端里显示的报错截图发给我第一眼红字就很典型连接脚本地址时直接Failed to connect to raw.githubusercontent.com port 443后面跟着一堆无法解析或超时的提示。这类问题很容易让人误以为是 Homebrew 本身出问题了尤其最近Intel Mac 安装不了 Homebrew的讨论变多很多人第一反应就是官方是不是把 Intel 渠道给关了。但实际上那天我们排查下来发现只是单纯网络层面的问题默认安装脚本要走外网而普通家庭网络访问源站经常超时。这不是 Homebrew 停止支持 Intel 的问题而是没走对安装通道。另外还有一种情况就是系统版本确实太老。如果 Intel Mac 的系统停留在 macOS 11 或更早而最新安装脚本要求的最低系统版本已经提高那么脚本会直接拒绝执行。这个倒是真的和停止支持有关系属于正常的系统兼容门槛。4.2 高频报错对照表与排查思路我把这段时间遇到的和身边朋友踩过的安装报错整理了一下大致分成了五类每类都有对应的处理路径报错特征常见原因判断方法处理方式Failed to connect ... port 443网络无法访问脚本源站ping 或 curl 测试源站地址使用镜像脚本或统一镜像源地址安装xcode-select: error或提示装 Xcode CLT缺少命令行开发者工具运行xcode-select -p提示非路径即未装先执行xcode-select --install装完再重试Permission denied集中在/usr/local下目录权限不属于当前用户ls -ld /usr/local查看 owner将目录属主改为当前用户sudo chown -R $(whoami) /usr/localfatal: not in a git directory旧版本残留文件不完整检查/opt/homebrew或/usr/local里是否只剩部分文件备份剩余配置后清空目录重新安装安装脚本直接提示系统版本过低系统版本不满足要求查看安装脚本最上方的版本判断逻辑升级系统或使用旧版安装方式先说第一类网络问题我现在的习惯是直接用镜像方式装。比如使用清华源或中科大源在终端里先设置好镜像环境变量再执行官方安装脚本具体写法是export HOMEBREW_BREW_GIT_REMOTEhttps://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git export HOMEBREW_CORE_GIT_REMOTEhttps://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-core.git export HOMEBREW_BOTTLE_DOMAINhttps://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles然后再走官方安装脚本。这样既能保证安装流程本身是官方的又能绕开网络不通的问题相当于是换了一条更通畅的路而不是走什么旁门左道。第二类权限问题在 Intel Mac 上特别常见因为 Intel 架构默认安装目录是/usr/local这个目录在旧系统里经常被之前装的软件改过权限归属。一旦当前用户没有写权限安装过程就会出现各种奇怪的Permission denied。处理方法就是确认当前用户对目录有完整权限。第三类残留问题也很隐蔽。很多安装失败根本不是装不上而是之前卸载不彻底留下的半损坏状态。判断方法很简单执行安装命令后错误信息里如果一直出现git相关的报错基本就是旧目录残留。这时候先备份好已有资料再用官方卸载脚本走一遍把残留清理干净再重新安装。排查这类问题时我个人的原则是一次只解决一个报错解决完重新跑一遍安装脚本不要一次性堆叠改动。很多人装不上 Homebrew其实是被多个报错叠加给绕晕了。稳住节奏一个一个来大部分机器都能顺利装上。5. 升级到 7.0 以后我建议你第一时间做的六件事5.1 先备份再升级别嫌麻烦不管是从 6.x 跨版本升级到 7.0还是全新安装我强烈建议第一步先做备份。为什么因为跨大版本升级往往是 Homebrew 内部结构变化最剧烈的阶段万一升级过程中某个依赖出错你还可以快速恢复原状。备份 Homebrew 环境不用备份整个目录只需要导出包清单就够了。在升级前执行brew bundle dump --fileBrewfile-backup这会把当前所有通过 Homebrew 安装的 formula 和 cask 写进一个文件里。将来就算 Homebrew 整个坏掉重新安装后执行一句brew bundle --fileBrewfile-backup就能把这些东西全部装回来。这个习惯我一直在用关键时刻真的能救命。备份完以后再正常执行升级brew update brew upgrade这里有一点要特别提醒如果brew upgrade过程中有某个包编译报错不要冲动执行brew upgrade --force强上。先看报错是缺依赖还是缺编译工具大多数情况下是某个新版本要求更高的 macOS 版本升级系统或者暂时固定旧版本就行。5.2 升级后逐项验证新环境升级完成后建议按下面这个顺序做一遍完整验证等于给新版本做一次全面体检第一运行brew doctor看有没有报告的异常项。7.0 的brew doctor比旧版本检查的项目更多尤其是对 Intel Mac 用户它会直接提示当前架构所处的支持阶段。第二运行brew config确认几个关键信息HOMEBREW_PREFIX是不是你预期的目录、HOMEBREW_ARCH是x86_64还是arm64、macOS 版本是多少。这些信息决定了后续装包时的行为。第三试一下brew gui把 GUI 界面打开看看依赖图是否能正常渲染。如果 GUI 打不开或者图表空白不要慌先检查是不是没更新到最新版或者系统版本不满足 GUI 的要求。第四执行brew outdated看看是否还有没升级完的包。如果有些包显示pinned状态说明它是被有意固定版本的升级时会被跳过这是正常现象。第五确认环境变量没有失效。有些人之前手动改过.zshrc里的 PATH升级后安装目录没有变化就不受影响但如果是从旧版本跨版本升级最好重新加载一下 shell 配置文件避免出现明明装了终端却提示找不到命令的情况。第六处理包升级后产生的旧版本缓存。升级完后顺手运行一次brew cleanup可以清掉旧版本安装包释放磁盘空间。特别是那些长期不清理的机器升级完往往能多出几个 GB 的空间立竿见影。这六件事做完你的 7.0 环境基本就处于一个稳定可用的状态了。6. Homebrew 的坑我基本都踩过一遍了这几个经验最值得记住6.1 卸载残留和权限问题的正确姿势搜索热词里homebrew 卸载残留能排那么靠前说明这不是少数人的问题。Homebrew 卸载不干净是很多后续怪异问题的根源。很多人以为卸载 Homebrew 就是删掉/opt/homebrew或/usr/local目录这是不对的。Homebrew 安装时会在系统中创建多个组件包括配置目录、缓存目录、日志目录、Cask 安装的 App 等。最省事的做法是使用官方提供的卸载脚本它会把核心文件清干净。但官方脚本也不是万能的它不会动你在该目录下自己建的其他项目这样反而安全不会误删你的个人文件。如果你已经处于卸了但没卸干净的状态又不想再跑一遍卸载脚本也可以手动检查这几个位置/opt/homebrew或/usr/local主程序目录~/Library/Caches/Homebrew缓存文件~/Library/Logs/Homebrew日志文件~/Library/LaunchAgents可能残留的服务自启项另外权限问题值得单独拿出来说一遍永远不要用sudo brew。Homebrew 的安装逻辑是在不提升权限的前提下管理自身目录你一旦用sudo brew执行过某些命令它产生的文件 owner 就是 root后续普通用户再操作就会出现权限拒绝。真遇到权限问题正确做法是修正目录 owner而不是遇到一次就 sudo 一次。6.2 几个值得长期坚持的维护习惯踩了这么多年的坑我慢慢总结出几个使用 Homebrew 的习惯分享出来供参考。第一个习惯是升级前先看变更。大版本升级前我会先看一眼官方发布的变更说明或者 changelog不用看得多仔细重点看有没有 breaking change、有没有弃用命令。很多时候升级完东西坏了不是 Homebrew 的问题而是某个 formula 调整了配置方式你还在用旧参数。第二个习惯是别盲目执行brew cleanup -s。-s参数是清理旧版本缓存正常情况下是安全的但如果你机器上有某个包需要回滚到旧版本旧版本缓存被清掉后就回不去了。所以做清理之前最好确认近期不会回滚版本。我一般只在确定环境稳定一周后才做彻底清理。第三个习惯是理解自动更新机制。Homebrew 每次执行brew install的时候默认会先自动brew update这在网速一般的时候会拖慢操作体验。如果你很确定自己的本地仓库已经是最新的可以临时设置环境变量HOMEBREW_NO_AUTO_UPDATE1跳过自动更新等需要的时候再手动执行brew update。但不建议长期关闭否则本地仓库慢慢落后某一天突然更新时反而容易出问题。第四个习惯是关注依赖变更。升级某个包之前用brew info 包名看一下它当前依赖了什么、版本要求是什么。尤其在 Intel Mac 上依赖的架构支持情况直接决定你升级后能不能正常运行。先用一条命令看信息再花钱花时间升级这个操作成本很低但收益很大。7. 我在实际使用中的一点体会从 2009 年的一个 Git 仓库到今天的 7.0Homebrew 陪很多开发者走过了从新手到老手的过程。这次 GUI 的加入和 Intel Mac 的倒计时让我感受到一个软件生态在成熟期的典型节奏一边努力降低新用户的上手门槛一边果断抛弃历史包袱。我个人的看法是Intel Mac 用户不必恐慌一年倒计时不意味着马上不能用了但它是一个明确信号提醒你该为未来做规划了。Apple Silicon 用户则可以放心升级 7.0GUI 带来的可视化体验确实能提升日常维护效率。最后分享一个小技巧如果你在一台机器上管理多个版本的包开发环境经常出现装了没关系卸了很痛苦的情况建议定期用brew bundle dump生成 Brewfile 并提交到自己的仓库里。这能让你的 Homebrew 环境像代码一样可回溯、可恢复。环境管理这件事越早养成好习惯后面遇到的麻烦就越少。