Homebrew 完全指南:macOS 上的包管理器从入门到精通

April 4, 2026
Published in 技术教程

Abstract

Homebrew 是 macOS 上最流行的包管理器,用一套统一的命令帮你在终端里安装、升级、卸载各种开发工具和桌面应用,省掉自己找下载链接、手动拖拽和配置路径的麻烦。本文将从 Homebrew 的基本概念出发,系统介绍安装步骤、日常命令、服务管理、GUI 应用安装以及常见问题排查,帮助你高效构建和维护 macOS 开发环境。

Keywords: Homebrew, macOS, 包管理器, 开发工具, 命令行

Homebrew 是什么,在解决什么问题

Homebrew 的官方定位是 "The Missing Package Manager for macOS (or Linux)",它提供了一种简单灵活的方式来安装 Apple 没有附带的 UNIX 工具和其他软件。

它主要解决以下问题:

  1. brew install 一条命令安装命令行工具、库甚至 GUI 应用,而不用自己找 DMG/PKG、手动复制到 /Applications
  2. brew update && brew upgrade 统一升级所有通过 Homebrew 安装的软件。
  3. 自动管理依赖、卸载旧版本、清理缓存和无用依赖,保持系统干净。

安装前的系统要求

根据官方文档,macOS 上安装 Homebrew 的主要要求如下:

  1. CPU:Apple Silicon(arm64)或 64 位 Intel CPU。
  2. 系统版本:推荐 macOS Sonoma 14 或更高版本;Big Sur 11–Ventura 13 处于降级支持;Mojave 10.14 及更早版本已不被支持,Homebrew 无法运行。
  3. 工具链:需要安装 Xcode Command Line Tools 或完整 Xcode,可以通过 xcode-select --install 安装 CLT。
  4. 其它:需要有网络连接和管理员权限,以便安装 CLT 和写入默认安装路径。

安装 Homebrew 的命令与步骤

安装命令

在终端中执行以下命令:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

安装过程会:

  1. 自动下载并安装 Homebrew 自身;如果系统尚未安装 Xcode CLT,会提示你安装并一并完成。
  2. 过程中可能要求输入 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           # 一次安装多个包
  1. brew install 会解析并安装所有依赖,必要时升级依赖包到合适版本。
  2. 你可以在脚本中使用 brew install 批量安装常用工具,常用于新机器初始化环境。

卸载软件包

brew uninstall wget
brew uninstall git cmake                # 一次卸载多个包

Homebrew 利用"沙箱式"目录结构,卸载包时通常只删除该包本身,不会影响其他包共享的依赖。若要连同旧版本与缓存一起清理,可配合 brew autoremovebrew cleanup(后续章节详述)youtube

更新 Homebrew 自身及所有软件包

brew update         # 更新 Homebrew 及仓库元数据
brew upgrade        # 升级所有已安装的 formula/cask
brew upgrade wget   # 只升级指定包
  1. brew update 拉取最新的仓库信息与 Homebrew 自身代码。
  2. 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          # 显示需要升级的包

可以据此选择:

  1. 全部升级:brew upgrade
  2. 针对单个包升级:brew upgrade 包名

清理旧版本、缓存和无用依赖

长期使用 Homebrew,如果不定期清理,旧版本、下载缓存和"孤儿依赖"会占用大量磁盘空间。

清理旧版本与缓存

brew cleanup           # 删除所有已不再使用的旧版本及相关文件
brew cleanup wget      # 只清理某个包的旧版本
brew cleanup -n        # 只预览将要删除的内容(dry-run)
brew cleanup -s        # 更彻底地清理缓存和临时文件
  1. brew cleanup 会删除不再需要的旧版本,只在当前已安装最新版本时清理老版本,因此通常建议先 brew upgradebrew cleanup
  2. -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     # 重启服务
  1. brew services 背后是生成 .plist 文件并注册到 launchd,从而实现开机或登录自动启动,并由系统负责守护和重启。
  2. 相比手写 launchctl 命令,要简单、统一得多。

Homebrew Cask:安装 GUI 应用

Cask 是什么

  1. Cask 是一类描述 GUI 应用或闭源软件的"配方",让你用命令行自动下载 DMG/ZIP、挂载、复制 .app 到合适位置并配置卸载流程。
  2. 对用户而言,本质上就是:用 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 的概念

  1. Tap 本质上是包含额外 formula/cask 的 Git 仓库(通常在 GitHub 上)。
  2. 通过 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
  1. brew tap user/repo 默认会克隆 https://github.com/user/homebrew-repo,用于扩展可安装的软件列表。
  2. brew untap 会移除该 tap,但不会自动卸载从中安装的包;如果需要彻底清除这些包,可以结合 brew ls --full-name 与过滤脚本批量卸载。

Tap 的源码目录通常位于 $(brew --repository)/Library/Taps 下,属于普通 Git 仓库,你也可以在里面查看或提交配方。

常见问题与注意事项

不要用 sudo 运行 brew

  1. Homebrew 的安装路径 /usr/local(Intel)或 /opt/homebrew(Apple Silicon)默认由当前用户拥有并写入,不需要 root 权限。
  2. Apple 官方讨论中也建议:不要使用 root 或 sudo 安装 Homebrew 或其包,以免破坏权限设置和安全模型。

Apple Silicon 与 Intel 的差异

  1. 默认安装前缀

    • 在 Apple Silicon 上,Homebrew 安装在 /opt/homebrew
    • 在 Intel Mac 上,仍然使用 /usr/local 前缀。
  2. PATH 与环境变量

    • 典型配置是在 shell 启动脚本中加入:

      eval "$(/opt/homebrew/bin/brew shellenv)"   # Apple Silicon 示例

      或类似逻辑判断架构后设置 BREW_PREFIX 并调整 PATH

  3. 同一台 Apple Silicon 机器上,有时会同时安装 arm64 和通过 Rosetta 的 Intel 版本 Homebrew,需要注意不要混用两套 brew 前缀,以免路径和依赖混乱(相关讨论中强调前缀始终是 HOMEBREW_PREFIX 所指路径)。

macOS 版本支持和老系统

  1. 官方明确:macOS Mojave 10.14 及更早版本现在属于"不支持",Homebrew 无法在这些系统上运行;推荐在受支持的系统上使用 Homebrew。
  2. 对较老系统,可考虑使用 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 的主流程。