Homebrew介绍与入门指南 – wiki基地


Homebrew:macOS 与 Linux 的包管理器神器 – 详细介绍与入门指南

对于 macOS 或 Linux 用户来说,安装软件是日常操作的一部分。然而,这个看似简单的任务,在面对命令行工具、开发库或特定版本的应用程序时,往往会变得复杂而繁琐。手动下载、解压、编译、配置环境变量,处理依赖冲突……这些步骤不仅耗时费力,还容易出错,甚至污染系统环境。

有没有一种更优雅、更自动化的方式来管理这些软件呢?答案是肯定的。对于 macOS 用户而言,它就是 Homebrew;对于 Linux 用户(以及现在整合后的 Homebrew),它也是一个强大的选择。

本文将带你深入了解 Homebrew,从它是什么、为什么需要它,到如何安装和使用它来轻松管理你的软件。无论你是开发者、系统管理员,还是只是一个喜欢折腾命令行的普通用户,Homebrew 都将成为你不可或缺的得力助手。

1. 告别繁琐:为什么你需要 Homebrew?

想象一下这样的场景:你需要安装一个名为 htop 的命令行工具来监控系统资源。通常你可能会这样做:

  1. 打开浏览器,搜索 “htop download”。
  2. 找到官方网站或一个可信的下载源。
  3. 下载 .tar.gz 或其他格式的压缩包。
  4. 打开终端,切换到下载目录。
  5. 解压文件。
  6. 阅读 README 文件,了解安装步骤(通常涉及 configure, make, make install)。
  7. 执行编译和安装命令。
  8. 如果在编译过程中遇到依赖缺失的错误(比如提示缺少 ncurses 库),你还需要重复上述步骤去查找、下载、安装 ncurses 库,然后再回来重新编译 htop。
  9. 安装完成后,你可能还需要手动将 htop 的执行文件路径添加到系统的 PATH 环境变量中,这样才能在任意位置直接运行 htop 命令。
  10. 如果 htop 发布了新版本,你需要重复整个过程来更新。
  11. 如果你想卸载 htop,手动安装的软件往往没有标准的卸载程序,你可能需要手动删除文件,或者更糟的是,根本不知道哪些文件是 htop 安装的,导致残留文件污染系统。

这仅仅是安装一个简单的命令行工具。如果涉及到更复杂的软件,比如数据库(PostgreSQL)、编程语言环境(Python 特定版本、Node.js)、或者需要多个相互依赖的库,这个过程将变得异常痛苦和容易出错,俗称“依赖地狱”(Dependency Hell)。

此外,手动安装的软件通常散布在系统的各个角落,管理起来非常不便。你不知道哪些软件是手动安装的,哪些是通过系统自带方式安装的,软件之间的依赖关系也不清晰。

Homebrew 正是为了解决这些问题而诞生的。

2. Homebrew 是什么?

Homebrew 是一个免费、开源的软件包管理系统,主要服务于 macOS,但也支持 Linux(曾经被称为 Linuxbrew,现已合并到主线 Homebrew 中)。它的口号是:“The missing package manager for macOS”(macOS 上缺失的包管理器)。虽然现在也支持 Linux,但其最广泛的应用和最完善的生态仍然在 macOS 上。

简单来说,Homebrew 就像是 macOS 或 Linux 的一个“App Store”,但它主要针对命令行工具、开发库和某些特定的 GUI 应用程序。你可以通过简单的命令来搜索、安装、更新和卸载这些软件,Homebrew 会自动处理下载、编译(如果需要)、安装路径和依赖关系。

Homebrew 使用 Ruby 语言编写,其软件包的定义(称为 FormulaeCasks)是基于 Git 存储库管理的文本文件,这使得社区贡献和维护变得非常方便和透明。

3. Homebrew 的核心概念

理解 Homebrew 的工作原理,需要了解几个核心概念:

  • Formulae (配方): 这是 Homebrew 用来安装命令行工具、库等的定义文件。一个 Formula 是一个 Ruby 脚本,描述了如何获取软件的源代码、如何配置、编译和安装它,以及它依赖哪些其他软件包。例如,安装 wget 工具就需要一个 wget 的 Formula。
  • Casks (酒桶): Casks 是 Homebrew 用来安装 macOS GUI 应用程序的定义文件。与 Formulae 从源码构建或使用预编译的命令行工具不同,Casks 主要用于安装那些通常通过 .dmg.pkg 或压缩包分发的应用程序(如 Google Chrome, VS Code, Docker Desktop 等)。它自动化了下载、挂载 .dmg、复制 .app 文件到 Applications 目录、创建符号链接等步骤。
  • Bottles (酒瓶): Bottels 是预编译好的 Formulae 的二进制包。Homebrew 默认会尽量使用 Bottles 来安装软件,因为这比从源码编译要快得多。只有当找不到对应系统和架构的 Bottle,或者你需要特定的编译选项时,Homebrew 才会回退到从源码编译。这极大地提高了安装效率。
  • Cellar (地窖): 这是 Homebrew 存放所有已安装软件的地方。在较新的 macOS 版本(M1/M2/M3 或较新 Intel Mac)上,默认路径是 /opt/homebrew/Cellar;在较旧的 Intel Mac 上,默认路径是 /usr/local/Cellar。Homebrew 将每个软件安装在 Cellar 下各自独立的版本子目录中(例如 /opt/homebrew/Cellar/wget/1.21.4),这有助于管理不同版本的软件,并避免文件冲突。
  • Keg (木桶): Keg 指的是 Cellar 中一个特定软件的特定版本安装目录(例如 /opt/homebrew/Cellar/wget/1.21.4)。Homebrew 会在安装完成后,将该 Keg 中的可执行文件、库文件等通过符号链接(Symbolic Link)的方式连接到 Homebrew 的前缀目录(/opt/homebrew/usr/local)下的 bin、lib、etc 等子目录中,这样系统才能找到并执行这些命令。
  • Taps (水龙头): Taps 是 Homebrew 核心仓库之外的 Formulae 和 Casks 集合。Homebrew 默认包含 homebrew/core(存放核心命令行工具 Formulae)和 homebrew/cask(存放核心 GUI 应用 Casks)这两个 Tap。你可以通过 brew tap <user>/<repo> 命令添加其他的 Tap,以访问更多社区维护的软件包。例如,有些软件可能在官方 Tap 中没有,或者你需要某个软件的特定版本或分支,就可能需要添加第三方 Tap。

4. Homebrew 的优势与特点

了解了基本概念后,Homebrew 的优势就非常明显了:

  1. 安装简单方便: 只需一个命令 (brew install <软件包名>),Homebrew 会自动完成下载、解压、编译(如果需要)、安装和配置符号链接。
  2. 依赖自动处理: Homebrew 会自动检测并安装软件包所需的依赖,解决了“依赖地狱”的问题。
  3. 更新和升级轻松: 一个命令 (brew upgrade) 就可以检查并升级所有已安装的可更新软件,或者指定升级某个特定软件。
  4. 卸载干净彻底: 一个命令 (brew uninstall <软件包名>) 可以干净地移除软件及其相关文件,减少系统残留。
  5. 版本管理: 软件安装在 Cellar 中按版本划分的目录里,虽然默认情况下 Homebrew 主要管理最新稳定版本,但其结构为潜在的版本管理提供了基础(尽管不如专门的版本管理器如 nvmpyenv 强大,但对于库和工具足够)。
  6. 不依赖 sudo: Homebrew 默认将软件安装在用户拥有写权限的目录 (/opt/homebrew/usr/local) 下,大部分操作无需 sudo 权限,这提高了安全性,并避免了污染系统自带的文件。
  7. 庞大的软件包库: Homebrew 拥有一个庞大且活跃的社区,维护着数以万计的 Formulae 和 Casks,涵盖了绝大多数常用的命令行工具、开发库和 GUI 应用程序。
  8. 透明和可定制: Formulae 和 Casks 都是文本文件,你可以轻松查看它们是如何安装软件的,甚至可以自己编写或修改 Formulae。
  9. 跨平台支持: 虽然起源于 macOS,但对 Linux 的良好支持(现已合并),使得 Homebrew 成为一个在不同操作系统之间保持开发环境一致性的有力工具。

5. 入门指南:安装 Homebrew

安装 Homebrew 非常简单,只需在终端中运行一个脚本。

步骤 1:打开终端

在 macOS 中,你可以通过 Spotlight 搜索 (Cmd + Space),输入 “Terminal” 并打开。
在 Linux 中,通常可以通过应用程序菜单找到终端,或者使用快捷键 Ctrl+Alt+T。

步骤 2:检查或安装前置条件

  • macOS: Homebrew 依赖于 Xcode Command Line Tools。如果你没有安装,Homebrew 安装脚本会提示你安装,或者你可以提前手动安装:
    bash
    xcode-select --install

    这会弹出一个安装窗口,按照提示完成安装即可。

  • Linux: Homebrew(Linuxbrew)在不同发行版上可能需要一些基本的构建工具。安装脚本会检查,但通常你需要安装 C/C++ 编译器和相关的开发头文件。例如,在 Debian/Ubuntu 上:
    bash
    sudo apt update
    sudo apt install build-essential curl file git

    在 Fedora 上:
    bash
    sudo dnf group install "Development Tools"
    sudo dnf install curl file git

步骤 3:运行 Homebrew 安装脚本

访问 Homebrew 官方网站 (https://brew.sh/) 获取最新的安装命令。命令通常是这样的:

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

将这行命令复制粘贴到你的终端中,然后按 Enter 键执行。

解释一下这个命令:

  • curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh: 这部分使用 curl 命令从 GitHub 下载 Homebrew 的安装脚本。
    • -f: 当 HTTP 请求失败时,不输出错误页面。
    • -s: 静默模式,不显示下载进度。
    • -S: 在静默模式下,如果出现错误仍然输出错误信息。
    • -L: 跟随 HTTP 重定向。
  • $(...): 这是 Shell 的命令替换语法,它会先执行括号里的命令(下载脚本),然后将命令的输出作为参数传递给外部命令。
  • /bin/bash -c "...": 这部分使用 /bin/bash 来执行下载下来的脚本。

步骤 4:按照安装脚本的提示进行

安装脚本会首先检查你的系统环境和前置条件。然后它会告诉你 Homebrew 将安装到哪里:

  • 在配备 Apple Silicon (M1/M2/M3) 或较新 Intel 处理器的 Mac 上,默认安装路径是 /opt/homebrew
  • 在较旧的 Intel Mac 或 Linux 上,默认安装路径是 /home/linuxbrew/.linuxbrew (或者如果你有写权限的 /usr/local)。

脚本会提示你按回车键确认安装,并可能要求输入你的用户密码(注意:这里输入密码是为了在指定目录下创建 Homebrew 所需的目录和设置权限,通常整个安装过程不需要 sudo,除非你的系统环境非常特殊)。

安装过程包括:下载 Homebrew 的核心文件和默认 Tap 仓库,创建目录结构,并设置必要的权限。这可能需要一些时间,取决于你的网络速度。

步骤 5:将 Homebrew 添加到 PATH 环境变量

安装成功后,脚本会输出一些重要的信息,其中最关键的一步是提示你将 Homebrew 的 bin 目录添加到你的 Shell 的 PATH 环境变量中。这样你才能在任何地方直接运行 brew 命令。

脚本会提供具体的命令,通常是这样:

“`bash

对于 zsh (macOS Catalina 及更高版本的默认 Shell)

echo ‘eval “$(/opt/homebrew/bin/brew shellenv)”‘ >> ~/.zshrc
eval “$(/opt/homebrew/bin/brew shellenv)”

对于 bash (较旧 macOS 版本或常见 Linux 发行版)

如果安装在 /opt/homebrew

echo ‘eval “$(/opt/homebrew/bin/brew shellenv)”‘ >> ~/.bash_profile # 或 ~/.bashrc
eval “$(/opt/homebrew/bin/brew shellenv)”

如果安装在 /home/linuxbrew/.linuxbrew

echo ‘eval “$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)”‘ >> ~/.bash_profile # 或 ~/.bashrc
eval “$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)”
“`
(注意:请仔细阅读安装脚本的输出,它会给出最适合你当前环境的准确命令)

这些命令的作用是:
* eval "$(/opt/homebrew/bin/brew shellenv)": 这行命令会执行 brew shellenv 的输出。brew shellenv 会根据你的 Homebrew 安装位置生成设置 PATH 和其他必要环境变量的 Shell 代码。eval 命令执行这些代码,立即在当前终端会话中激活 Homebrew。
* echo '...' >> ~/.zshrc (或 ~/.bash_profile/~/.bashrc): 这行命令将 eval "$(/opt/homebrew/bin/brew shellenv)" 这段代码添加到你的 Shell 配置文件(如 .zshrc, .bash_profile, .bashrc)的末尾。这样,每次你打开新的终端窗口时,Homebrew 的环境变量都会自动加载,你就可以直接使用 brew 命令了。

执行完这些命令后,关闭并重新打开终端窗口,或者执行 source ~/.zshrc (或对应的配置文件) 使配置生效。

步骤 6:验证安装

在新的终端窗口中,运行以下命令来验证 Homebrew 是否安装成功并检查环境:

bash
brew doctor

brew doctor 命令会检查 Homebrew 的安装环境是否存在潜在问题(如权限错误、残留文件、环境变量设置不当等)。如果一切正常,它会输出 Your system is ready to brew. 如果有任何警告或错误,请仔细阅读输出信息,它会指导你如何解决问题。通常根据提示执行相应的修复命令即可。

你也可以运行 brew --version 来查看 Homebrew 的版本号,确认命令可用。

至此,Homebrew 就成功安装到你的系统上了!

6. Homebrew 基本使用指南

现在 Homebrew 已经安装并配置好,你可以开始使用它来安装和管理软件了。以下是一些最常用的命令:

1. 搜索软件 (Search):

在你安装软件之前,通常需要知道 Homebrew 是否有这个软件的 Formulae 或 Casks,以及它的确切名称。

bash
brew search <关键词>

例如,搜索 htop:

bash
brew search htop

搜索结果会列出所有包含 “htop” 的 Formulae 和 Casks。如果你看到你想要的软件名称(例如,结果中显示 htop),记住它的名字,用于后续安装。

2. 安装软件 (Install):

使用 brew install 命令来安装 Formulae(命令行工具或库)。

bash
brew install <formula_name>

例如,安装 htop:

bash
brew install htop

Homebrew 会检查并安装 htop 所需的所有依赖,然后下载 htop 的 Bottle(如果可用)并安装,最后创建符号链接。

如果你要安装 GUI 应用程序(Casks),需要加上 --cask 选项:

bash
brew install --cask <cask_name>

例如,安装 Google Chrome:

bash
brew install --cask google-chrome

Homebrew 会下载 .dmg 文件,挂载,并将 .app 文件复制到你的 Applications 目录。

3. 查看已安装软件 (List):

想知道你通过 Homebrew 安装了哪些软件?

bash
brew list

这会列出所有通过 brew install 安装的 Formulae。

要查看通过 brew install --cask 安装的 GUI 应用程序:

bash
brew list --cask

4. 查看软件信息 (Info):

在安装或更新之前,你可能想了解某个软件包的更多信息,比如版本、依赖、安装选项等。

bash
brew info <formula_name_or_cask_name>

例如:

bash
brew info htop
brew info --cask google-chrome

5. 更新 Homebrew 本身和 Formulae 定义 (Update):

brew update 命令会更新 Homebrew 自身到最新版本,并拉取 Homebrew 核心 Tap (homebrew/core, homebrew/cask) 以及你已添加的第三方 Tap 的最新 Formulae 和 Casks 定义。这很重要,因为它确保 Homebrew 知道最新的软件包版本和信息。

bash
brew update

请注意,brew update 不会升级你系统中已安装的软件。它只是更新了 Homebrew 可以访问的软件列表和信息。

6. 检查可升级的软件 (Outdated):

想知道哪些已安装的软件有更新版本可用?

bash
brew outdated

这会列出所有可以通过 brew upgrade 命令升级的 Formulae 和 Casks。

7. 升级已安装的软件 (Upgrade):

brew upgrade 命令会升级所有已安装的、且有更新版本可用的 Formulae。

bash
brew upgrade

如果你只想升级某个特定的软件:

bash
brew upgrade <formula_name>

要升级所有可更新的 Casks:

bash
brew upgrade --cask

要升级特定的 Cask:

bash
brew upgrade --cask <cask_name>

8. 卸载软件 (Uninstall):

当你不再需要某个软件时,使用 brew uninstall 命令来干净地移除它。

bash
brew uninstall <formula_name>

例如,卸载 htop:

bash
brew uninstall htop

这将移除 htop 的安装文件和符号链接。

要卸载通过 Cask 安装的 GUI 应用程序:

bash
brew uninstall --cask <cask_name>

例如,卸载 Google Chrome:

bash
brew uninstall --cask google-chrome

这将把应用程序从 Applications 目录移到垃圾桶。

9. 清理旧版本和无用文件 (Cleanup):

Homebrew 在升级软件时,通常会保留旧版本一段时间,以防新版本有问题需要回滚。随着时间的推移,Cellar 中可能会 acumulate 很多旧版本的软件。brew cleanup 命令可以移除这些旧版本以及不再需要的下载文件和锁文件。

bash
brew cleanup

运行 brew cleanup 是一个保持 Homebrew 安装目录整洁的好习惯。

10. 自动移除不再被任何软件依赖的依赖项 (Autoremove):

当你卸载一个软件时,它的依赖默认不会被移除,因为它们可能被其他软件依赖。然而,如果某些依赖项在卸载某个软件后,不再被系统上的任何 Homebrew 软件所依赖,它们就变成了“孤儿”依赖项。新版本的 Homebrew (>= 3.6.0) 提供了 autoremove 命令来移除这些孤儿依赖项。

bash
brew autoremove

这个命令非常有用,可以帮助回收磁盘空间并保持环境整洁。

7. Homebrew 进阶使用

掌握了基本命令后,你可以探索 Homebrew 更多的功能:

  • Taps (第三方仓库): 如果你想安装一些不在 Homebrew 核心库中的软件,或者维护者将软件放在了自己的 Tap 中,你需要先“tap”这个仓库。
    “`bash
    # 添加一个 Tap
    brew tap /
    # 例如,添加一个包含某些字体 Casks 的 Tap
    # brew tap homebrew/cask-fonts

    查看已添加的 Tap

    brew tap

    移除一个 Tap

    brew untap /
    “`
    添加 Tap 后,你就可以像安装核心库中的软件一样安装该 Tap 中的 Formulae 或 Casks 了。

  • 安装特定版本: 虽然 Homebrew 主要关注最新版本,但有时你可以通过 brew versions <formula> 查看可用的历史版本,并使用特定命令(可能需要 brew extract 或查看旧的 Formulae 定义)来安装旧版本。但通常不推荐这样做,除非有特殊需求。对于需要严格版本控制的开发环境(如 Python, Node.js),推荐使用专门的版本管理器(如 pyenv, nvm)。

  • 安装选项 (Options): 一些 Formulae 提供了编译或安装选项,可以定制软件的功能。使用 brew info <formula> 查看可用的选项。安装时使用 --with---without- 前缀(具体看 info 输出)或 --HEAD 安装开发分支最新代码。
    bash
    brew install <formula> --with-option --without-another-option
    # 例如,安装带有 Python 支持的 vim
    # brew install vim --with-python

  • 链接与取消链接 (Link & Unlink): Homebrew 将软件安装在 Cellar 的版本化目录中。通过在 Homebrew 前缀目录 (如 /opt/homebrew) 下创建符号链接,使得系统可以在 PATH 中找到这些软件。brew link <formula> 命令会(重新)创建这些符号链接,brew unlink <formula> 会移除它们。通常 Homebrew 会自动处理链接,但在处理多版本或特殊情况时可能会用到。

  • 故障排除 (Troubleshooting): 当遇到问题时,brew doctor 是你的首要工具。它会诊断常见的安装和配置问题。如果 brew doctor 无法解决问题,或者它提示了特定的错误,请仔细阅读错误信息。你还可以使用 brew config 查看 Homebrew 和系统环境的详细配置,这对于排查问题非常有帮助。如果问题依然存在,可以在 Homebrew 的 GitHub 仓库提交 issue,社区会提供帮助。

  • Homebrew 的哲学: 了解 Homebrew 的设计哲学有助于更好地使用它。它倾向于“最小侵入性”,尽量不干扰系统自带的软件和文件。它鼓励使用 Bottles 快速安装,只有必要时才从源码编译。它将软件安装在独立的用户目录中,避免 sudo 滥用。理解这些原则,可以帮助你更好地管理你的 Homebrew 环境。

8. Homebrew 在 Linux 上的应用

Homebrew for Linux (原 Linuxbrew) 将 Homebrew 的便利性带到了 Linux 系统。它的安装和使用方式与 macOS 版本非常相似。它通常会将软件安装在用户的 HOME 目录下的 .linuxbrew 中,这样即使在没有管理员权限的服务器或系统上,用户也可以安装和管理自己的开发工具和库,而无需依赖系统的包管理器或请求管理员安装特定软件。这对于开发者在共享环境中工作尤其有用。

使用 brew shellenv 将 Homebrew 添加到 PATH 的方式也与 macOS 类似,只是路径会有所不同(通常是 ~/.linuxbrew/bin~/.linuxbrew/sbin)。

尽管许多 Linux 发行版已经有自己的优秀包管理器(如 apt, dnf, pacman),但 Homebrew for Linux 仍然有其独特的价值,特别是在需要安装特定版本软件、在没有 root 权限的环境中工作、或者希望在 macOS 和 Linux 系统之间保持一致的软件包管理体验时。

9. 总结

Homebrew 是 macOS 用户,以及部分 Linux 用户管理命令行工具、开发库和 GUI 应用程序的强大且优雅的解决方案。它将原本复杂的手动安装、更新和卸载过程简化为简单的命令,极大地提高了效率和便捷性。通过自动处理依赖、使用预编译的 Bottles 和清晰的安装结构,Homebrew 帮助你告别“依赖地狱”和系统环境污染。

从简单的 brew install 到更高级的 Tap 管理和故障排除,Homebrew 提供了一整套工具来满足你对软件管理的需求。它是开发者、系统管理员以及任何经常与命令行打交道的人士不可或缺的工具。

如果你还在手动下载和安装各种开发工具和库,那么现在是时候拥抱 Homebrew 了。它将改变你管理软件的方式,让你的数字生活更加顺畅和高效。

开始你的 Homebrew 之旅吧!运行安装命令,探索 brew search,用 brew install 安装你需要的软件,用 brew upgrade 保持它们最新,用 brew uninstall 干净地移除不再需要的工具。你会发现,一旦习惯了 Homebrew,就再也离不开它了。

祝你 Brew 之旅愉快!


发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部