1. 先搞清楚HomeBrew解决的到底是什么问题在mac上装软件很多人第一反应就是去官网下dmg然后拖进Applications文件夹。这个流程单看没问题但只要你装过几个软件就会发现麻烦接踵而至命令行工具有时候根本没有图形安装包你得自己配环境变量软件升级了你不一定知道哪天想卸载某个软件发现它残留了一堆配置文件散落在各个目录里更难受的是同一个工具的不同依赖版本之间打架你手动清都清不干净。HomeBrew就是来治这个病的。它是macOS上最主流的软件包管理工具用一套统一的命令来解决软件的安装、升级、卸载和依赖管理。命令行工具、开源库、桌面应用只要仓库里有一条命令就能搞定。相当于mac系统里的应用商店但是比应用商店更底层、更高效覆盖的软件量级也大得多。这个工具对于以下几种人几乎是刚需用命令行做开发的需要装各种语言环境、数据库、Git工具链需要快速安装和更新常用开源软件的被手动安装折腾过想统一管理软件生命周期的人文章后面我会从环境检查、标准安装、国内镜像加速、失败排查、常用操作写到卸载清理全程基于实际安装和使用的经验不是照抄官方文档。2. 安装前别急着跑脚本先把这三个环境问题确认掉HomeBrew安装脚本本身并不复杂大多数失败其实都出在安装前的环境上。我在多台Mac上装过它有顺利一遍过的也有卡了半小时反复报错的。后来总结下来真正需要提前确认的只有三件事命令行工具链、网络环境和芯片架构。2.1 Command Line Tools是躲不开的前置依赖HomeBrew很多核心组件需要编译工具链没有Command Line ToolsCLT的话安装过程会在装依赖的时候报错。CLT是Apple给开发者提供的命令行工具集合包括编译器、Git、SSH客户端这些基础组件但它跟Xcode不是一回事。Xcode体积巨大还要登录Apple ID才能下载完整版CLT精简得多三五分钟就装完。在终端执行xcode-select --install系统会弹窗让你确认等待下载完成即可。如果你之前装过Xcode或者已经手动安装过CLT执行上面的命令可能会提示already installed那就不用管了。判断CLT是否可用可以跑一下gcc --version git --version这两个命令能正常输出版本信息就说明工具链没问题。我在实际安装中踩过一次坑装CLT时网络中断装到一半的CLT处于残缺状态HomeBrew安装脚本检测不到完整工具链反复触发安装又反复失败。这种情况下要先清理掉残存的CLT安装状态最省事的做法是手动删除相关目录后重新安装不要直接重启安装脚本。2.2 网络环境决定你走哪条安装路线HomeBrew安装过程中需要访问GitHub的raw内容、release文件和一些被墙的服务。如果你的网络访问GitHub顺畅直接用官方安装命令就行整个过程五到十分钟。如果访问GitHub困难、超时、断断续续那就老老实实走国内镜像方案我在后面会给出完整步骤。判断方式很简单在终端执行curl -I https://raw.githubusercontent.com 21 | head -n 5如果你能看到HTTP/2 200或者301之类的响应码而卡住不动说明网络大概率有问题。不要等到安装脚本跑到一半才被迫中断。2.3 确认芯片架构决定安装目录Apple SiliconM1/M2/M3系列和Intel芯片的MacHomeBrew的默认安装目录不一样。Apple Silicon统一装在/opt/homebrew下Intel机型装在/usr/local下。这个差异影响后续所有路径配置所以在安装前就确认清楚免得装完之后PATH配错方向。查看芯片型号用uname -m输出arm64就是Apple Silicon输出x86_64就是Intel。如果你用的是Apple Silicon机器但终端运行在Rosetta转译模式下跑x86_64 Shell那你会遇到一种很折腾的情况默认装Intel版HomeBrew装到/usr/local。如果你希望统一管理建议在原生Shell里执行安装不要在Rosetta终端里装。3. 标准安装与国内镜像加速两条路线都给你3.1 官方脚本安装网络通顺时的标准流程网络没问题的情况下安装极其简单。打开终端粘贴官方的安装命令/bin/bash -c $(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)这条命令的意思是下载官方安装脚本然后用Bash执行。脚本会自动完成目录创建、系统组件检查、依赖安装、仓库初始化和基本配置写入。整个过程中脚本会提示你需要输入macOS用户密码授权sudo权限这是正常现象。安装完成以后终端会提示你执行两步后续操作。主要是把HomeBrew的路径加入Shell环境变量。如果安装脚本输出了提示信息你别直接关掉终端仔细看一下是让你跑哪两条命令。常见的是echo eval $(/opt/homebrew/bin/brew shellenv) ~/.zprofile eval $(/opt/homebrew/bin/brew shellenv)第一行是把HomeBrew初始化命令写入Zsh配置文件让每次新开终端都能自动找到brew命令。第二行是在当前终端立即生效省得你重开一个终端再验证。然后跑一下brew --version能输出版本号就说明官方安装路线走通了。3.2 国内镜像加速安装GitHub不通时的首选方案如果你的网络访问GitHub经常超时不要硬扛官方脚本直接用国内镜像源可以省下一大把时间。主流做法是把安装脚本本身和下ed源码下载地址都指向国内镜像。我推荐用中科大或者清华的镜像。以中科大源为例安装分两步。第一步是设置环境变量让安装脚本从镜像站拉取export HOMEBREW_BREW_GIT_REMOTEhttps://mirrors.ustc.edu.cn/brew.git export HOMEBREW_CORE_GIT_REMOTEhttps://mirrors.ustc.edu.cn/homebrew-core.git export HOMEBREW_API_DOMAINhttps://mirrors.ustc.edu.cn/homebrew-bottles/api export HOMEBREW_BOTTLE_DOMAINhttps://mirrors.ustc.edu.cn/homebrew-bottles第二步还是执行官方安装脚本但因为环境变量已经指向了国内镜像所以脚本下载的其实都是镜像站资源/bin/bash -c $(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)这里有个细节需要注意安装脚本本身依然从上获取如果这一步都拉取不到可以先把脚本本地化。用浏览器打开脚本地址把内容保存为install.sh再在终端执行/bin/bash install.sh清华也有类似的镜像配置思路完全一样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我个人建议先网络检测再决定走官方还是镜像路线。不要一上来就全套镜像配置等后续更新的时候镜像偶尔同步延迟会影响你安装新软件的速度。3.3 两种安装方式之后的收尾动作无论哪条路线装完都建议执行一下brew doctor检查环境是否健康brew doctor这个命令会扫描HomeBrew的目录权限、依赖完整性、冲突项等输出一个健康报告。如果提示Warning逐条看一下内容常见的无非是“某些Git配置未生效”“某目录编译器警告”之类不一定需要处理。但如果报Error那就要查一下原因再继续使用。4. HomeBrew安装失败的完整排查链路我在各类社区里看到很多问mac装HomeBrew失败的帖子自己也踩过几回。失败信息五花八门但归根结底就是几类原因。这里我按排查顺序来写你照着顺序走一遍基本都能解决。4.1 第一类报错curl请求超时或连接被重置这类报错往往长这样curl: (28) Operation timed out after 0 milliseconds with 0 out of 0 bytes received或者curl: (35) LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to raw.githubusercontent.com一条报错。这就是网络访问GitHub被阻断导致的典型症状我在第2节的网络检测如果提前做就能在这里止损。解决方案按顺序尝试换网络环境比如从公司网络切到手机热点很多公司网络会对GitHub域名的访问做限制用中国移动、电信这种大带宽家庭网络直连有时能通直接切换镜像安装路线走第3.2节的步骤环境变量配置成国内镜像使用本地代理配合curl命令让脚本走代理如果你有HTTP代理可以用export https_proxyhttp://127.0.0.1:端口号的方式再执行安装脚本。脚本会跟随系统代理变量。网上很多人建议改Hosts文件把域名解析到其他IP我试过短期有效但经常过期不如镜像来得稳定。4.2 第二类报错安装过程中编译依赖失败这类报错一般出现在HomeBrew开始安装各类依赖包的时候报错信息里会有Error: make、Error: gcc之类的字样。核心原因90%是Command Line Tools没有正确安装或者版本残缺。你可以在Failed的提示前面找到编译日志看看有没有xcrun: error: invalid active developer path这句话。有的话就基本坐实是CLT问题了。处理方式分三步sudo rm -rf /Library/Developer/CommandLineTools xcode-select --install重装时尽量保持网络稳定不要在下载中途切Wi-Fi。装完CLT后重新执行HomeBrew安装脚本。我遇到过有人删了CLT之后重装Xcode弹窗一直不出来后来发现是系统更新里某个组件还没就绪重启一次电脑就出来了。4.3 第三类报错安装目录权限冲突有人在Mac上装过Laravel Valet或其他开发工具会在/usr/local下留下一些文件或者目录所有者不是当前用户。安装脚本在创建目录时会报权限问题。这类报错的关键信息通常是Permission denied。处理方式sudo mkdir -p /opt/homebrew sudo chown -R $(whoami):admin /opt/homebrew然后重新执行安装脚本。这个目录如果已存在且有旧内容先确认为什么存在别为了图省事直接删目录万一是其他工具在用的目录删了会牵连别的软件。4.4 第四类报错安装脚本卡在Downloading Command Line Tools for macOS这通常不是真的出错而是下载CLT的速度慢。因为CLT包体积不小官方服务器有时候很慢。你可以打开系统设置里的软件更新看看有没有命令行工具的独立更新项。也可以换个时间段再试比如避开白天的高峰期。如果这个状态持续超过20分钟大概率是卡住了CtrlC取消重新执行安装命令。我在排查故障时还有一个习惯安装脚本跑失败以后不要急着第二次执行同样的命令先看一下失败后产生的日志。HomeBrew安装脚本的日志默认写到/tmp或~/Library/Logs/Homebrew目录里面会有详细报错堆栈。多花五分钟看日志比盲目重试十次效率高。5. 装好之后的基本操作与软件管理实践装好HomeBrew只是开始真正体现它价值的是日常的软件管理。我整理了一套高频命令和操作思路照着用很快就能上手。5.1 高频命令速查操作命令安装一个软件brew install 软件名卸载一个软件brew uninstall 软件名搜索软件brew search 关键字查看软件信息brew info 软件名列出已安装软件brew list更新HomeBrew自身brew update升级所有软件brew upgrade清理旧版本brew cleanup检查环境健康brew doctor比如想搜索Python相关的包brew search python想看看wget装到了哪个版本brew info wget如果某个软件不记得完整名称可以用brew search 关键字模糊搜索仓库名称匹配规则支持部分匹配。5.2 安装软件时你会遇到的一个典型历程以安装wget为例。在macOS上wget的官方安装来源其实是GNU的源码你当然可以自己下载编译但HomeBrew只用一行brew install wget它会自动把wget的依赖比如OpenSSL相关库、CA证书等一起装好整个过程有清晰的进度条和日志输出。装完之后直接wget可用不需要手动配置任何环境变量。这就是软件包管理器最大的价值——把依赖管理这个最容易出错的环节替你处理干净。另外一个很常用的场景是装数据库。比如安装MySQLbrew install mysql装完以后HomeBrew会提示你启动服务的命令brew services start mysql。HomeBrew的services子命令可以管理日常软件的守护进程启动、停止、重启都靠它。这个功能让mysql、redis、nginx这类需要常驻的软件变得非常容易管理。还有一些桌面应用也能通过HomeBrew安装前提是启用Cask支持。用brew install --cask 软件名来安装图形应用比如Chrome、VS Code、WeChat、Typora这类安装方式和命令行工具一样简单。部分软件在Cask仓库里版本更新比Mac App Store快很多所以很多人也会优先用它来装常用软件。5.3 装好软件以后的三件收尾事我在每台新Mac上配好HomeBrew之后后面还有三件固定收尾事第一确保brew命令在新终端窗口自动生效。如果你用的是Zsh检查~/.zprofile里有没有eval $(/opt/homebrew/bin/brew shellenv)没有就补上。第二配置HOMEBREW_NO_AUTO_UPDATE1环境变量可以关闭每次执行安装命令前的自动更新。默认情况下你每次运行brew install它都会先去更新仓库索引在国内镜像或者弱网环境下会比较慢。在~/.zshrc里加一行export HOMEBREW_NO_AUTO_UPDATE1这样你主动执行brew update时才更新索引日常安装反应快很多。第三定期执行brew update brew upgrade保持核心工具版本不过于滞后。很多命令行工具的安全补丁都是通过HomeBrew发布的长期不升级会有隐患。6. 卸载HomeBrew和清理残留的正确操作有一个经常被忽略的话题卸载。很多人在装失败后就粗暴地rm -rf /opt/homebrew导致系统留下各种僵尸目录、PATH残留、配置文件残留。这种操作短期不影响使用但长期会在你装其他软件时制造各种不可预期的权限冲突。如果你确认自己不再需要HomeBrew了官方其实给了完整卸载脚本/bin/bash -c $(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/uninstall.sh)这个脚本会遍历HomeBrew安装过的目录把相关文件、链接、配置全部清理掉并且会检查一些OpenSSL配置、Ruby环境等是否有残留引用。跑完之后它会列出还存在的目录你再手动确认一遍。如果卸载过程中网络不可用手动清理也不难。需要重点清理的位置/opt/homebrew或/usr/local下的HomeBrew相关目录/etc/paths.d和/etc/manpaths.d下的brew相关路径配置Shell配置文件里的brew和homebrew相关行~/.zshrc、~/.zprofile用户缓存目录里的HomeBrew缓存和旧的安装日志注意别把所有/usr/local下面的内容一刀切你手动编译装过的老软件可能也住在这里。7. 关于这套流程的最终体会和两个小建议说了这么多我根据自己的实际经验做最后几句补充算是给新手的针对性建议。第一新手安装失败时不要反复试同一套命令。我看到不少人官方安装命令跑个五六遍每次都报同样的网络超时这样既浪费时间也容易把环境搞乱。正确做法是先诊断网络再决定走官方还是镜像路线。这个判断成本就一分钟省下来的是十分钟到半小时的反复折腾。第二个建议是安装完HomeBrew之后别急着猛装软件。先brew doctor看一眼环境健康状况再装自己真正用的工具不要一上来就把网上推荐的一堆软件全装了。因为HomeBrew的依赖体系非常庞大装太多不需要的包后续升级会变慢磁盘占用也会增加。我自己的习惯是只装必要的工具用的时候再装不用就卸载保持环境干净。如果后面你发现镜像源更新速度跟不上或者某个软件安装后被标记为广告最后提一个比较实用的小技巧如果你遇到了某个软件的下载源卡死可以尝试使用HOMEBREW_NO_INSTALL_FROM_API1来让HomeBrew走传统的方式读取本地索引。这个参数适合镜像源同步不及时的时候能让安装走得更顺畅不影响你已经装好的软件。HomeBrew这套东西熟练之后效率提升非常明显。愿你的mac装软件之路不再被各种依赖和权限问题折磨。