如何在 Linux 上安装和使用 Homebrew
在Linux上安装Homebrew、配置PATH、管理软件包并用Brewfile共享工具,了解Linux支持、WSL及Homebrew 7.0的变化。
在 Linux 上安装 Homebrew 的步骤如下:先安装发行版的构建工具,然后运行 brew.sh 提供的官方安装脚本,再将 brew shellenv 添加到 shell 启动文件中,最后运行 brew doctor 检查安装配置。
Ubuntu LTS 自带的 neovim 或 gh 往往比你 Mac 上的版本落后一年左右,而每次都从源码编译很快就会让人厌烦。Homebrew 可以在用户自有的安装前缀(prefix)下提供最新版本的软件包,并且只需一个 Brewfile 就能同时描述两台机器的环境。本指南从安装讲到日常使用,随后介绍 Brewfile、Homebrew 7.0 在 Linux 上的变化、WSL 以及卸载方法。
核心要点
- Linux 版 Homebrew 安装在
/home/linuxbrew/.linuxbrew下,仅使用宿主系统的 glibc 和 gcc,并且前提是二者版本足够新。 - Debian/Ubuntu 在安装前需要先安装
build-essential procps curl file git;Fedora 需要安装development-tools软件包组以及procps-ng curl file。 - Brewfile 本质上是 Ruby 代码,因此在某一行加上
if OS.linux?或if OS.mac?,即可让同一个文件同时适用于两个平台。 - Homebrew 7.0 用内核的 Landlock 特性替代了 Bubblewrap 沙箱,无需额外安装任何组件。
- 在 Windows 上,Homebrew 只能在 WSL 2 中运行。WSL 1 属于 Tier 3,原生 Windows 不受支持。
什么情况下应在 Linux 上使用 Homebrew,而不是 apt 或 dnf?
对于希望使用比发行版更新版本的命令行工具,建议使用 Homebrew。而驱动程序、系统库、服务器守护进程以及其他系统软件包所依赖的组件,仍应交由 apt、dnf 或 pacman 管理。Homebrew on Linux 文档指出,Homebrew 仅依赖宿主系统的 glibc 和 gcc,且仅在二者版本足够新时才会使用;在较旧的发行版上,它会自带这两者的副本。因此,Homebrew 安装的软件包与系统软件包并存,互不干扰。
| 适合用 Homebrew 管理 | 适合用 apt / dnf / pacman 管理 |
|---|---|
| 最新版本的 node、gh、ripgrep、neovim | GPU 驱动、内核模块 |
| 安装在单一前缀下的用户级软件 | 共享系统库 |
| 与 Mac 共用的 Brewfile | 由 systemd 管理的服务器软件包 |
| 其他系统软件包所依赖的任何组件 |
系统要求与构建工具
Homebrew 需要一个可用的系统 C 编译器以及发行版的标准开发工具。在运行 Homebrew 安装程序之前,请先用系统包管理器安装这些工具:
# Debian / Ubuntu
sudo apt-get install build-essential procps curl file git
# Fedora
sudo dnf group install development-tools
sudo dnf install procps-ng curl file
# Arch Linux
sudo pacman -S base-devel procps-ng curl file git
根据 Homebrew on Linux 的系统要求,必须具备可用的系统 C 编译器以及发行版的标准开发工具。因此,即使 Homebrew 之后会安装自己的 gcc,也请先安装上述工具。
支持等级(Support Tiers)将 Linux Tier 1 定义为同时满足以下所有条件:
- 处于标准支持周期内的 Ubuntu,或 Homebrew 官方 Docker 镜像
- 系统 glibc 版本为 2.39 或更高
- 内核版本为 3.2 或更高
- ARM64 架构,或支持 SSSE3 的 x86_64 架构
- 使用默认前缀或兼容的自定义前缀
- 通过 bottle(预编译二进制包)安装
Debian、Fedora 和 Arch 主机不属于 Tier 1。在 glibc 版本为 2.13 至 2.38 的系统上(Tier 2),Homebrew 会安装自己的 glibc。其他平台的支持则更为有限:树莓派等 32 位 ARM 开发板没有 bottle 可用,属于 Tier 3;32 位 x86 则完全不受支持。
安装 Homebrew 并将其添加到 PATH
以普通用户身份(而非 root)运行 brew.sh 上提供的安装程序:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
安装程序会将 Homebrew 安装到 /home/linuxbrew/.linuxbrew。使用默认前缀可以获得最可靠的 bottle 支持。安装程序的 --path 选项允许指定自定义前缀,但长度不得超过默认前缀(26 字节)。不过,Homebrew 7.0.0 的发布说明仍表示非默认前缀目前不受支持,因此除非确有必要,建议使用默认前缀。
接下来,在当前 shell 中加载 Homebrew,并使配置持久生效:
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"' >> ~/.bashrc
如果使用的是 zsh,请将这一行追加到 ~/.zshrc 中。Linux 文档页面中的 shellenv 配置部分涵盖了这两种 shell。
然后检查安装结果:
brew doctor
brew install hello
brew doctor 会报告配置方面的问题。在较旧的发行版上,首次执行 brew install 时还会一并安装 Homebrew 自带的 glibc 和 gcc。
安装软件包并保持更新
使用 brew install 安装软件包,使用 brew update 刷新 Homebrew 的软件包元数据,使用 brew upgrade 升级已安装的软件包:
brew install gh ripgrep neovim node
brew update # refresh Homebrew and package metadata
brew upgrade # upgrade installed packages
切勿在 brew 命令前加 sudo。始终以拥有该前缀目录的账户运行 brew。安装程序和构建工具的安装步骤可能需要提升权限,但日常的安装和升级操作都以普通用户身份运行。brew 手册页列出了所有子命令和参数。
使用 Brewfile 在 Linux 和 Mac 之间共享同一套 Homebrew 配置
Brewfile 列出了一台机器应安装的软件包,brew bundle 会安装其中缺失的部分。Brewfile 会作为 Ruby 代码执行,因此可以为任意一行添加平台条件:
# Brewfile
brew "git"
brew "gh"
brew "neovim"
brew "node"
if OS.mac?
cask "firefox"
end
brew "gnupg" if OS.mac?
if OS.linux? 的用法相同,适用于仅限 Linux 的条目。Brewfile 文档指出,当 gnupg 使用 OS.mac? 作为条件时,在 Linux 上执行 brew bundle list 不会输出该条目。部分 cask 可以在 Linux 上使用,但仅限 macOS 的 cask 仍应加上平台条件。
创建、应用和检查 Brewfile:
brew bundle dump --file=~/dotfiles/Brewfile --force # snapshot what's installed
brew bundle install --file=~/dotfiles/Brewfile # install/upgrade to match
brew bundle check --file=~/dotfiles/Brewfile || brew bundle install --file=~/dotfiles/Brewfile
brew bundle dump 会将已安装且受支持的 formula、cask、tap 及其他类型的软件包记录到 Brewfile 中。check || install 这一行是幂等的,可以放心放入初始化(bootstrap)脚本。为 check 添加 --verbose 参数,可以查看哪些条目尚未满足。
Brewfile 记录的是你需要哪些软件包,而不是它们的版本。Homebrew 始终会将每个软件包升级到最新发布版本,因此无法指定任意的旧版本,brew bundle 也没有锁文件(lock file)。如果不希望 brew bundle 升级已安装的依赖,可以传入 --no-upgrade 参数或设置 HOMEBREW_BUNDLE_NO_UPGRADE=1。但这并不能锁定版本。
使用 brew bundle cleanup --force 时务必谨慎,它会卸载所有未在 Brewfile 中列出的软件包。
Homebrew 7.0 在 Linux 上有哪些变化?
Homebrew 7.0 于 2026 年 9 月 13 日发布,其 Linux 沙箱改用内核的 Landlock 特性。7.0.0 发布说明指出,7.0.0 弃用了 Homebrew 6.0.0 中引入的 Bubblewrap 沙箱,转而使用 Landlock,后者无需安装额外软件包,也无需提升 Docker 权限。Landlock 是一项内核特性,允许非特权进程限制自身可访问的资源。
| 变化 | 应对措施 |
|---|---|
| Landlock 替代 Bubblewrap | 无需安装任何组件 |
| 内核不支持 Landlock | 构建将在无沙箱的情况下运行,brew doctor 会显示提示信息 |
HOMEBREW_SANDBOX_LINUX | 已停用,请从 shell 配置文件中删除 |
HOMEBREW_NO_SANDBOX_LINUX | 已弃用,计划于 2027-12-11 移除,且不提供替代的退出选项 |
| ARM64 Linux | 自 Homebrew 5.0.0 起已成为 Tier 1 |
发布说明指出,Homebrew 支持 Landlock ABI 2(Linux 6.1 起可用),如果内核无法强制执行网络限制,则会打印警告。可通过以下命令检查你的机器:
uname -r # kernel version
brew config # 7.0 reports the Landlock ABI here
brew doctor # shows an advisory if the sandbox is unavailable
grep -n HOMEBREW_SANDBOX_LINUX ~/.bashrc ~/.zshrc
Homebrew 能在 Windows 上运行吗?
在 Windows 上,Homebrew 只能通过 WSL 2 运行。WSL 1 属于 Tier 3 平台,原生 Windows 不受支持。Linux 文档提醒,在 WSL 1 上,由于 WSL 1 的已知问题,Homebrew 安装的部分可执行文件可能无法正常工作,因此建议迁移到 WSL 2。请参照 Microsoft 的 WSL 指南配置好发行版,然后在其中按照上述 Linux 步骤操作即可。
如何卸载 Homebrew?
要卸载 Homebrew,请使用 Homebrew/install 仓库中的卸载脚本。该仓库的 README 中提供了最新的命令和选项说明。
总而言之,在 Linux 上配置 Homebrew 只需四步:安装构建工具、运行 brew.sh 脚本、将 shellenv 添加到 shell 配置文件、运行 brew doctor。之后,在 Mac 上运行 brew bundle dump,为仅限 macOS 的条目加上 if OS.mac?,再在 Linux 机器上运行 brew bundle install,即可让两台机器拥有相同的工具集。
常见问题
可以在没有 sudo 或 root 权限的情况下在 Linux 上安装 Homebrew 吗?
可以,只要你的账户对安装前缀具有写权限即可。shell 安装程序需要对其前缀拥有写权限,因此你可以请管理员创建 /home/linuxbrew/.linuxbrew 并将所有权授予你,或者使用安装程序的 --path 选项选择一个不超过 26 字节的兼容自定义前缀。配置完成后,安装和更新 formula 都无需 sudo。
Homebrew 还为 Ubuntu 22.04 提供 bottle 吗?
Ubuntu 22.04 自带 glibc 2.35,自 Homebrew 6.0.0 将 Linux 基线提升至 glibc 2.39 以来,它已成为 Tier 2 平台。Homebrew 不再为此类系统构建新的 bottle,而是安装自带的 glibc,并且 brew doctor 会显示支持警告。如需获得 Tier 1 支持,请升级到 Ubuntu 24.04,或使用 ghcr.io/homebrew/brew Docker 镜像。
可以在 Linux 上安装 Homebrew cask 吗?
部分 cask 可以。Homebrew 4.5.0 为 cask 添加了初步的 Linux 支持,主要涵盖 font-fira-code 等字体以及提供 Linux 二进制文件的 cask。Homebrew 6.0.0 又增加了对 AppImage 的支持。仅提供 macOS 应用的 cask 无法在 Linux 上安装,因此在共享的 Brewfile 中,请为这些条目加上 if OS.mac? 条件。
在 CI 中运行 Linux 版 Homebrew 应该使用哪个 Docker 镜像?
请使用 ghcr.io/homebrew/brew。Homebrew 7.0.0 移除了 ghcr.io/homebrew/ubuntu22.04 镜像,并将 ghcr.io/homebrew/brew 列为其替代品。根据支持等级的定义,Homebrew 官方提供的 Docker 镜像属于 Tier 1 Linux 配置,因此对于需要 bottle 的 CI 构建而言是可靠的选择。如果流水线仍在引用 ubuntu22.04 镜像,请将其切换为 ghcr.io/homebrew/brew。