Homebrew for Mac:从零开始的安装与使用教程


Homebrew for Mac:从零开始的安装与使用教程

引言:为什么选择 Homebrew?

对于 macOS 用户,尤其是开发者、系统管理员或喜欢探索命令行工具的爱好者来说,管理各种软件包和依赖项可能是一项挑战。macOS 自带的工具集虽然强大,但在安装、更新和管理第三方开源软件方面却有所欠缺。这时,Homebrew 应运而生,它被誉为 “macOS(或 Linux)缺失的软件包管理器”,极大地简化了在 Mac 上安装和管理各种命令行工具、开发库甚至图形界面应用程序的过程。

使用 Homebrew 的主要优势包括:

  1. 易于安装与使用:一条命令即可安装软件,命令简单直观。
  2. 庞大的软件库:涵盖了数千种流行的开源软件包(称为 Formulae)和应用程序(称为 Casks)。
  3. 自动处理依赖:安装软件时,Homebrew 会自动下载并安装其所需的依赖库。
  4. 方便的版本管理:轻松更新、切换或卸载软件包版本。
  5. 保持系统纯净:Homebrew 将软件安装在独立的目录(通常是 /opt/homebrew/usr/local),避免与系统自带的文件混淆,易于管理和卸载。
  6. 开源与社区驱动:拥有活跃的社区支持,不断更新和添加新的软件包。

本教程旨在为 Mac 用户提供一份从零开始的 Homebrew 安装与使用指南,无论您是初次接触命令行,还是希望系统化地学习 Homebrew,都能从中受益。我们将详细介绍安装步骤、核心概念、常用命令以及一些高级技巧和故障排除方法。

第一部分:安装前的准备

在开始安装 Homebrew 之前,请确保满足以下条件:

  1. 操作系统:macOS 10.14 (Mojave) 或更高版本。Homebrew 对较新版本的 macOS 支持最好。
  2. Command Line Tools (CLT) for Xcode:Homebrew 依赖于苹果提供的命令行开发者工具,其中包含了编译器(如 Clang)、Git 等基础工具。
    • 检查是否已安装:打开“终端”应用程序(位于“应用程序” > “实用工具”),输入以下命令并按回车:
      bash
      xcode-select -p

      如果看到类似 /Library/Developer/CommandLineTools 的路径输出,说明已安装。
    • 安装方法:如果未安装,可以直接在终端中输入以下命令,系统会弹出安装提示框,按指引操作即可:
      bash
      xcode-select --install

      安装过程需要网络连接,并可能需要几分钟时间。
  3. 管理员权限:安装 Homebrew 需要执行 sudo 命令,因此您需要知道当前用户的管理员密码。
  4. 稳定的网络连接:安装过程需要从网络下载脚本和文件。

第二部分:安装 Homebrew

Homebrew 的安装过程非常简单,官方提供了一个安全的安装脚本。

  1. 打开终端:再次确认您已打开“终端”应用程序。

  2. 执行安装命令:复制以下命令粘贴到终端中,然后按回车键执行。
    bash
    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

    • 命令解释
      • curl -fsSL ...:使用 curl 工具从指定的 URL 下载安装脚本。-f 表示失败时不显示 HTTP 错误,-s 表示静默模式(不显示进度),-S 表示显示错误信息,-L 表示跟随重定向。
      • /bin/bash -c "...":使用 Bash shell 执行下载到的脚本内容。
  3. 按照提示操作

    • 脚本首先会检查您的系统环境是否满足要求。
    • 接着,它会列出将要创建的目录和将要执行的操作,并请求您确认(通常是按 ReturnEnter 键)。
    • 脚本会提示您输入管理员密码(输入时密码不会显示在屏幕上,这是正常的安全机制),以获取必要的权限来创建目录和链接文件。输入密码后按回车。
    • 安装过程开始,会自动下载 Homebrew 的核心文件并进行配置。根据网络速度,这可能需要几分钟到十几分钟不等。
  4. 配置 PATH 环境变量(重要!)

    • 安装脚本完成后,务必仔细阅读终端输出的最后几行。通常会提示您需要执行一到两条命令,将 Homebrew 的可执行文件路径添加到系统的 PATH 环境变量中。这确保了您可以在任何目录下直接运行 brew 命令。
    • 对于 Apple Silicon (M1/M2/M3) Macs:Homebrew 默认安装在 /opt/homebrew。您需要执行类似以下的命令(请以您终端实际显示的为准):
      bash
      echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile
      eval "$(/opt/homebrew/bin/brew shellenv)"

      这些命令的作用是将设置 Homebrew 环境的命令添加到您的 shell 配置文件(通常是 .zprofile for Zsh,macOS Catalina 及以后版本的默认 shell)中,并立即在当前会话中生效。
    • 对于 Intel Macs:Homebrew 通常安装在 /usr/local。路径可能已自动配置好,但如果提示,请按照指示操作,可能涉及修改 .bash_profile.zshrc 文件。
    • 验证 PATH 设置:关闭当前终端窗口,重新打开一个新的终端窗口。输入以下命令:
      bash
      which brew

      如果看到类似 /opt/homebrew/bin/brew/usr/local/bin/brew 的输出,则表示 PATH 配置成功。
  5. 验证安装:运行 Homebrew 的内置诊断工具:
    bash
    brew doctor

    如果安装成功且配置无误,通常会输出 Your system is ready to brew.。如果存在一些小问题或警告,brew doctor 会给出修复建议,请根据提示操作。

至此,Homebrew 已成功安装在您的 Mac 上!

第三部分:核心概念理解

在使用 Homebrew 之前,了解一些核心概念有助于更好地运用它:

  • Formula (配方):一个 Ruby 脚本,定义了如何下载、编译和安装一个特定的命令行软件包(如 git, wget, node)。Homebrew 的主要管理对象就是 Formulae。
  • Cask (木桶):用于管理 macOS 图形界面应用程序(如 google-chrome, visual-studio-code, iterm2)或字体、插件等的扩展。它处理的是预编译的应用程序包(.app 文件等),通常只是将其移动到 /Applications 目录并进行必要的链接。
  • Tap (水龙头):一个 Git 仓库,包含了 Formulae 和 Casks 的定义。Homebrew 默认自带了 homebrew/core (核心 Formulae) 和 homebrew/cask (核心 Casks)。用户可以添加(tap)其他的第三方仓库来获取更多软件。
  • Cellar (酒窖):Homebrew 安装所有软件包(通过 Formulae)的实际存储位置。每个软件包的不同版本都存放在 Cellar 下的独立子目录中(例如 /opt/homebrew/Cellar/wget/1.21.3)。
  • Prefix (前缀):Homebrew 的主安装目录。在 Apple Silicon Mac 上通常是 /opt/homebrew,在 Intel Mac 上通常是 /usr/local。Homebrew 会在 Prefix 目录下创建 bin, lib, share, Cellar 等子目录,并将 Cellar 中安装的软件链接到 bin, lib 等处,方便系统调用。

理解这些概念后,我们来看如何使用 Homebrew。

第四部分:常用 Homebrew 命令详解

以下是日常使用中最常遇到的 Homebrew 命令及其用法:

  1. 搜索软件包/应用 (brew search)

    • 搜索 Formula (命令行工具):
      bash
      brew search <关键词>
      # 示例:搜索包含 "python" 的 Formulae
      brew search python
    • 搜索 Cask (图形应用等):
      bash
      brew search --casks <关键词>
      # 示例:搜索 Chrome 浏览器
      brew search --casks google-chrome
    • 模糊搜索:即使关键词不完全匹配,也会列出相关的结果。
  2. 安装软件包/应用 (brew install)

    • 安装 Formula:
      bash
      brew install <formula_name>
      # 示例:安装下载工具 wget
      brew install wget
      # 示例:安装 Node.js
      brew install node

      Homebrew 会自动处理依赖关系。
    • 安装 Cask:
      bash
      brew install --cask <cask_name>
      # 示例:安装 Visual Studio Code
      brew install --cask visual-studio-code
      # 示例:安装 iTerm2 终端模拟器
      brew install --cask iterm2

      Cask 安装通常是将 .app 文件移动到 /Applications 目录。
  3. 卸载软件包/应用 (brew uninstall)

    • 卸载 Formula:
      bash
      brew uninstall <formula_name>
      # 示例:卸载 wget
      brew uninstall wget
    • 卸载 Cask:
      bash
      brew uninstall --cask <cask_name>
      # 示例:卸载 iTerm2
      brew uninstall --cask iterm2
    • 强制卸载(包括所有版本):
      bash
      brew uninstall --force <formula_name>
      brew uninstall --cask --force <cask_name>
  4. 更新 Homebrew 及软件包

    • 更新 Homebrew 自身和所有 Taps 的软件包列表 (brew update):这是执行任何更新操作前的第一步,它会从远程仓库拉取最新的 Formulae 和 Casks 定义。
      bash
      brew update
    • 升级所有已安装的、有新版本的软件包 (brew upgrade)
      bash
      brew upgrade

      这会升级所有通过 brew install 安装的 Formulae。
    • 升级指定的软件包
      bash
      brew upgrade <formula_name>
      # 示例:只升级 Node.js
      brew upgrade node
    • 升级所有已安装的 Casks (brew upgrade --cask)
      bash
      brew upgrade --cask

      注意:升级 Cask 可能会重新下载整个应用程序。
    • 升级指定的 Cask
      bash
      brew upgrade --cask <cask_name>
      # 示例:只升级 Visual Studio Code
      brew upgrade --cask visual-studio-code
    • 推荐流程:定期先运行 brew update,然后根据需要运行 brew upgradebrew upgrade --cask
  5. 查看已安装的软件包 (brew list)

    • 列出所有已安装的 Formulae:
      bash
      brew list
      # 或者 brew list --formula
    • 列出所有已安装的 Casks:
      bash
      brew list --cask
    • 查看某个 Formula 安装了哪些文件:
      bash
      brew list <formula_name>
      # 示例:查看 wget 安装的文件
      brew list wget
  6. 查看软件包信息 (brew info)

    • 查看 Formula 的信息(版本、依赖、安装路径、官网等):
      bash
      brew info <formula_name>
      # 示例:查看 Python 的信息
      brew info python
    • 查看 Cask 的信息(版本、来源、安装状态等):
      bash
      brew info --cask <cask_name>
      # 示例:查看 Google Chrome 的信息
      brew info --cask google-chrome
  7. 清理旧版本和缓存 (brew cleanup)

    • Homebrew 在升级软件包后,默认会保留旧版本。brew cleanup 可以删除所有已安装 Formulae 的旧版本以及下载的缓存文件。
      bash
      brew cleanup
    • 清理指定 Formula 的旧版本:
      bash
      brew cleanup <formula_name>
    • 清理下载缓存(不删除旧版本):
      bash
      brew cleanup --prune=0
      # 或者直接删除缓存目录内容,通常位于 ~/Library/Caches/Homebrew/
    • 预览将要删除的内容(推荐先执行):
      bash
      brew cleanup -n
  8. 检查 Homebrew 健康状况 (brew doctor)

    • 再次强调此命令的重要性。当遇到问题时,首先运行 brew doctor。它会检查常见的配置错误、权限问题、过时的链接等,并给出修复建议。
      bash
      brew doctor

第五部分:进阶使用与技巧

  1. 管理后台服务 (brew services)

    • Homebrew 可以方便地管理一些需要后台运行的服务(如数据库 mysql, postgresql,Web 服务器 nginx, httpd 等)。
    • 安装服务(例如 Nginx):
      bash
      brew install nginx
    • 启动服务并在登录时自动启动:
      bash
      brew services start nginx
    • 仅启动服务(不设置开机自启):
      bash
      brew services run nginx
    • 停止服务:
      bash
      brew services stop nginx
    • 重启服务:
      bash
      brew services restart nginx
    • 查看当前由 Homebrew 管理的服务状态:
      bash
      brew services list
  2. 使用 Tap 添加第三方仓库

    • 有时需要的软件不在官方仓库中,可以添加第三方 Tap。
    • 添加 Tap:
      bash
      brew tap <user>/<repo>
      # 示例:添加字体仓库
      brew tap homebrew/cask-fonts
      # 示例:添加 PHP 相关工具的仓库
      brew tap shivammathur/php
    • 添加后,就可以像安装官方软件一样安装 Tap 中的 Formulae 或 Casks:
      bash
      # 安装字体 Fira Code
      brew install --cask font-fira-code
      # 安装 PHP 8.1
      brew install shivammathur/php/[email protected]
    • 查看已添加的 Taps:
      bash
      brew tap
    • 移除 Tap:
      bash
      brew untap <user>/<repo>
  3. 固定软件包版本 (brew pin / unpin)

    • 如果希望某个软件包不被 brew upgrade 自动升级(例如保持特定版本以兼容项目),可以将其 pin 住:
      bash
      brew pin <formula_name>
      # 示例:固定 Node.js 版本
      brew pin node
    • 取消固定:
      bash
      brew unpin <formula_name>
    • 查看已固定的软件包:
      bash
      brew list --pinned
  4. 使用 Brewfile 管理环境

    • Brewfile 是一个纯文本文件,用于记录您希望通过 Homebrew 安装的所有软件包(Formulae, Casks, Taps)。这对于在新机器上快速恢复环境或保持团队开发环境一致性非常有用。
    • 生成当前的 Brewfile:
      bash
      brew bundle dump
      # 这会在当前目录下创建一个名为 Brewfile 的文件
    • 根据 Brewfile 安装所有内容:
      bash
      brew bundle install
      # Homebrew 会读取当前目录下的 Brewfile 并安装其中列出的所有项目
    • 检查 Brewfile 中的状态(哪些已安装,哪些待安装):
      bash
      brew bundle check
    • 清理 Brewfile 中未列出的已安装项:
      bash
      brew bundle cleanup --force

第六部分:常见问题与故障排除

  1. 命令找不到 (command not found: brew)

    • 最常见的原因是 PATH 环境变量未正确配置。请回顾安装部分的第 4 步,确保按照终端提示执行了添加 PATH 的命令,并重启了终端。
    • 使用 echo $PATH 检查路径是否包含 Homebrew 的 bin 目录。
  2. 权限问题 (Permission denied)

    • 可能是 Homebrew 安装目录的权限不正确。尝试修复权限:
      bash
      # 对于 Apple Silicon (/opt/homebrew)
      sudo chown -R $(whoami) /opt/homebrew/*
      # 对于 Intel (/usr/local)
      sudo chown -R $(whoami) /usr/local/*

      之后运行 brew doctor 检查。
    • 有时是特定文件权限问题,brew doctor 通常能检测并给出修复命令。
  3. 下载缓慢或失败

    • 检查网络连接。
    • 尝试更换 Homebrew 的镜像源。可以搜索 "Homebrew 国内镜像源" 找到相关教程,通常涉及修改 Git 远程 URL 和环境变量。
    • 网络高峰期或特定资源服务器问题,稍后再试。
  4. brew doctor 报告警告或错误

    • 仔细阅读 brew doctor 的输出,它通常会提供非常具体的修复建议或命令。按照指示操作。
    • 常见的警告包括:存在未链接的 kegs(brew link <formula>)、存在旧的配置文件、Xcode CLT 版本过旧等。
  5. 更新或安装时出现冲突

    • 可能是依赖关系冲突或文件冲突。仔细阅读错误信息。
    • 有时需要先卸载冲突的包,或者使用 brew link --overwrite <formula> 强制覆盖链接(请谨慎使用)。
    • 在 GitHub 的 Homebrew 仓库 (Issues section) 搜索类似错误,看是否有解决方案。
  6. 卸载 Homebrew

    • 如果需要完全卸载 Homebrew,官方提供了卸载脚本:
      bash
      /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/uninstall.sh)"
    • 根据提示操作,它会移除 Homebrew 安装的所有文件和目录。执行前请三思,所有通过 Homebrew 安装的软件都将被移除。

结语

Homebrew 无疑是 macOS 上一个极其强大且便利的工具,它让管理第三方软件变得前所未有的简单。通过本教程,您应该已经掌握了 Homebrew 的安装、基本使用方法以及一些进阶技巧。熟练运用 Homebrew,不仅能极大地提高您的工作效率,还能让您更方便地探索和使用丰富的开源软件世界。

随着您使用的深入,会发现 Homebrew 还有更多功能和可能性等待发掘。建议经常查阅官方文档(man brew 或访问 docs.brew.sh),并关注其更新动态。开始享受 Homebrew 带来的便捷吧!


THE END