Homebrew 是什么,在解决什么问题
Homebrew 的官方定位是 "The Missing Package Manager for macOS (or Linux)",它提供了一种简单灵活的方式来安装 Apple 没有附带的 UNIX 工具和其他软件。
它主要解决以下问题:
- 用
brew install一条命令安装命令行工具、库甚至 GUI 应用,而不用自己找 DMG/PKG、手动复制到/Applications。 - 用
brew update && brew upgrade统一升级所有通过 Homebrew 安装的软件。 - 自动管理依赖、卸载旧版本、清理缓存和无用依赖,保持系统干净。
安装前的系统要求
根据官方文档,macOS 上安装 Homebrew 的主要要求如下:
- CPU:Apple Silicon(arm64)或 64 位 Intel CPU。
- 系统版本:推荐 macOS Sonoma 14 或更高版本;Big Sur 11–Ventura 13 处于降级支持;Mojave 10.14 及更早版本已不被支持,Homebrew 无法运行。
- 工具链:需要安装 Xcode Command Line Tools 或完整 Xcode,可以通过
xcode-select --install安装 CLT。 - 其它:需要有网络连接和管理员权限,以便安装 CLT 和写入默认安装路径。
安装 Homebrew 的命令与步骤
安装命令
在终端中执行以下命令:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
安装过程会:
- 自动下载并安装 Homebrew 自身;如果系统尚未安装 Xcode CLT,会提示你安装并一并完成。
- 过程中可能要求输入 macOS 用户密码,用于写入系统目录和安装 CLT。
安装后验证
安装完成后,可以用以下命令检查:
brew help # 显示可用子命令
brew doctor # 检查安装及环境问题
brew doctor 输出 "Your system is ready to brew." 说明环境就绪。
基本命令:搜索、安装、卸载、更新
搜索软件包
brew search 关键字
brew search wget
brew search 会在 Homebrew 仓库中查找匹配名称的 formula(命令行包)或 cask(GUI 应用)。
安装软件包(formula)
brew install wget # 安装单个包
brew install git cmake python # 一次安装多个包
brew install会解析并安装所有依赖,必要时升级依赖包到合适版本。- 你可以在脚本中使用
brew install批量安装常用工具,常用于新机器初始化环境。
卸载软件包
brew uninstall wget
brew uninstall git cmake # 一次卸载多个包
Homebrew 利用"沙箱式"目录结构,卸载包时通常只删除该包本身,不会影响其他包共享的依赖。若要连同旧版本与缓存一起清理,可配合 brew autoremove 和 brew cleanup(后续章节详述)youtube。
更新 Homebrew 自身及所有软件包
brew update # 更新 Homebrew 及仓库元数据
brew upgrade # 升级所有已安装的 formula/cask
brew upgrade wget # 只升级指定包
brew update拉取最新的仓库信息与 Homebrew 自身代码。brew upgrade会根据最新元数据升级所有已安装包到最新可用版本,也可指定单个包以更精细地控制升级。
查看已安装包、过时包与依赖关系
列出已安装的包
brew list # 列出所有已安装 formula
brew list --cask # 仅列出已安装 cask
brew list 用于快速查看当前环境中通过 Homebrew 安装了哪些软件和应用。
查看单个包的信息
brew info wget
常见信息包括版本、安装路径、依赖项、官方主页和简要说明。
查看依赖关系
brew deps wget # 显示 wget 所依赖的包
brew deps --tree wget # 以树形结构显示依赖(部分文档和工具中示例)
brew deps 用来分析某个包所依赖的其它 formula,有助于理解升级和卸载时可能受影响的包。
查看过时包
brew outdated # 显示需要升级的包
可以据此选择:
- 全部升级:
brew upgrade。 - 针对单个包升级:
brew upgrade 包名。
清理旧版本、缓存和无用依赖
长期使用 Homebrew,如果不定期清理,旧版本、下载缓存和"孤儿依赖"会占用大量磁盘空间。
清理旧版本与缓存
brew cleanup # 删除所有已不再使用的旧版本及相关文件
brew cleanup wget # 只清理某个包的旧版本
brew cleanup -n # 只预览将要删除的内容(dry-run)
brew cleanup -s # 更彻底地清理缓存和临时文件
brew cleanup会删除不再需要的旧版本,只在当前已安装最新版本时清理老版本,因此通常建议先brew upgrade再brew cleanup。-s选项会清理下载缓存,避免缓存目录无限增长。有人报告 Homebrew 缓存曾膨胀到数十 GB,通过brew cleanup -s大幅释放空间。
自动删除不再被其他包依赖的库
brew autoremove
brew autoremove 会尝试卸载那些只作为依赖安装、目前已经没有任何已安装包依赖的 formula,用于进一步收缩系统体积。
管理后台服务:brew services
很多开发软件(如 PostgreSQL、Redis、Nginx 等)可以作为 macOS 后台服务运行。Homebrew 提供 brew services 子命令帮助你通过 launchd 统一管理它们。
安装 homebrew/services tap
历史上需要先 tap 一次(现代版本通常已内置,但显式 tap 是通用写法):
brew tap homebrew/services常用服务管理命令
brew services list # 查看所有服务的状态
brew services start postgresql # 启动并设置随登录自动启动
brew services stop postgresql # 停止服务
brew services restart redis # 重启服务
brew services背后是生成.plist文件并注册到launchd,从而实现开机或登录自动启动,并由系统负责守护和重启。- 相比手写
launchctl命令,要简单、统一得多。
Homebrew Cask:安装 GUI 应用
Cask 是什么
- Cask 是一类描述 GUI 应用或闭源软件的"配方",让你用命令行自动下载 DMG/ZIP、挂载、复制
.app到合适位置并配置卸载流程。 - 对用户而言,本质上就是:用
brew install --cask来安装图形应用,而不是手工拖放 DMG。
基本用法
搜索可用 Cask
brew search --cask chrome # 一些版本中支持显式 --cask 搜索
很多教程也直接用 brew search 然后在结果中辨认 cask 名称。
安装 GUI 应用
brew install --cask google-chrome
brew install --cask visual-studio-code
brew install --cask google-chrome firefox # 一次安装多个浏览器
上述命令会从应用官网或指定 URL 下载 .dmg/.pkg,安装到 Homebrew 管理的应用目录并在 ~/Applications 或 /Applications 建立链接。
指定安装到系统 /Applications
某些早期教程中示例:
brew install --cask app-name --appdir=/Applications
这样会把 .app 链接到系统级 /Applications 目录,方便所有用户使用。
卸载与查看
brew uninstall --cask google-chrome # 卸载 GUI 应用
brew list --cask # 查看已安装的所有 cask
Cask 可以实现更彻底的卸载(包括 zap 配置,删除偏好文件等),其卸载行为在 cask 描述文件中定义。
管理第三方 Tap(仓库扩展)
Tap 的概念
- Tap 本质上是包含额外 formula/cask 的 Git 仓库(通常在 GitHub 上)。
- 通过 tap,你可以使用官方 core 仓库以外的包,比如某些组织自己的工具合集或社区维护的扩展包。
常用命令
brew tap # 列出当前已添加的所有 tap
brew tap user/repo # 从 GitHub 添加 tap,例如 user/homebrew-repo
brew tap user/repo URL # 从自定义 Git URL 添加 tap
brew untap user/repo # 移除指定 tap
brew tap user/repo默认会克隆https://github.com/user/homebrew-repo,用于扩展可安装的软件列表。brew untap会移除该 tap,但不会自动卸载从中安装的包;如果需要彻底清除这些包,可以结合brew ls --full-name与过滤脚本批量卸载。
Tap 的源码目录通常位于 $(brew --repository)/Library/Taps 下,属于普通 Git 仓库,你也可以在里面查看或提交配方。
常见问题与注意事项
不要用 sudo 运行 brew
- Homebrew 的安装路径
/usr/local(Intel)或/opt/homebrew(Apple Silicon)默认由当前用户拥有并写入,不需要 root 权限。 - Apple 官方讨论中也建议:不要使用 root 或
sudo安装 Homebrew 或其包,以免破坏权限设置和安全模型。
Apple Silicon 与 Intel 的差异
-
默认安装前缀:
- 在 Apple Silicon 上,Homebrew 安装在
/opt/homebrew。 - 在 Intel Mac 上,仍然使用
/usr/local前缀。
- 在 Apple Silicon 上,Homebrew 安装在
-
PATH 与环境变量:
-
典型配置是在 shell 启动脚本中加入:
eval "$(/opt/homebrew/bin/brew shellenv)" # Apple Silicon 示例或类似逻辑判断架构后设置
BREW_PREFIX并调整PATH。
-
-
同一台 Apple Silicon 机器上,有时会同时安装 arm64 和通过 Rosetta 的 Intel 版本 Homebrew,需要注意不要混用两套
brew前缀,以免路径和依赖混乱(相关讨论中强调前缀始终是HOMEBREW_PREFIX所指路径)。
macOS 版本支持和老系统
- 官方明确:macOS Mojave 10.14 及更早版本现在属于"不支持",Homebrew 无法在这些系统上运行;推荐在受支持的系统上使用 Homebrew。
- 对较老系统,可考虑使用 MacPorts 或 Tigerbrew 等替代工具(官方文档中的建议)。
Xcode Command Line Tools 相关问题
如果 brew install 或安装脚本提示找不到编译器、clang 或头文件,多半是 CLT 未正确安装或版本过旧,建议先执行:
xcode-select --install
然后根据提示完成安装并重试。
调试与自检
出现奇怪错误时,先运行:
brew doctor
该命令会扫描环境中常见问题(权限、路径冲突、旧 tap、过时 CLT 等)并给出修复建议,是排错首选。
小结:日常推荐命令组合
以下是日常维护 Homebrew 环境时常用的一组命令,你可以放进脚本定期运行:
# 更新 Homebrew & 包信息
brew update
# 升级所有包
brew upgrade
# 删除无用依赖
brew autoremove
# 清理旧版本和缓存
brew cleanup -s
# 检查环境
brew doctor
配合上文的搜索、安装、卸载、服务管理和 cask 用法,就基本覆盖了 macOS 上使用 Homebrew 的主流程。