Homebrew 酿酒术:精心调配你的 macOS 软件环境
Homebrew 意为“家酿”,是一款用 Ruby 开发的包管理器。它像酿酒一样,让用户轻松“酿造”和管理软件环境,无需担心复杂的配置。
通过 Homebrew,用户可以轻松安装、更新和卸载 UNIX 工具和软件包,实现个性化软件管理。目前支持 macOS 和 Linux 系统。
在本文中,将详细介绍 Homebrew 的安装/卸载、模块组成、术语、常用命令等,助你快速上手,并优化你的 macOS (或 Linux) 软件环境。
安装
Homebrew 官网的安装说明位于主页,推荐复制粘贴官网的安装命令。
macOS 环境要求
- 64-bit Intel CPU 或 Apple Silicon CPU
- macOS Monterey 12.0 或更高版本
- Xcode 的命令行工具 (CLT),可通过
xcode-select --install
或 developer.apple.com 或 Xcode 安装 - 为了安装,我们需要 Bourne-again shell (bash)
命令行安装
需要命令行安装可在终端执行以下命令:
1
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
该脚本会将 Homebrew 安装到默认的路径:
- macOS ARM:
/opt/homebrew
- macOS Intel:
/usr/local
- Linux:
/home/linuxbrew/.linuxbrew
Homebrew 安装完成后,当你进行 brew install
和其他命令时,不需要使用 sudo。因为 sudo 很危险。
注意:👉👉👉 查看更多安装方式点击这里 👈👈👈
.pkg
安装
如果使用 macOS,可以下载 .pkg
安装,下载地址:Homebrew’s latest GitHub release
macOS .pkg 安装器会将 Homebrew 安装到默认的路径:
- macOS ARM:
/opt/homebrew
- macOS Intel:
/usr/local
Git 镜像安装
如果连接到 GitHub.com 时遇到问题,可以使用 Git 镜像进行 Homebrew 安装和 brew update
,方法是使用以下脚本在 shell 环境中设置 HOMEBREW_BREW_GIT_REMOTE
和 HOMEBREW_CORE_GIT_REMOTE
:
1
2
3
export HOMEBREW_BREW_GIT_REMOTE="..." # 设置 Homebrew/brew 的 Git 镜像
export HOMEBREW_CORE_GIT_REMOTE="..." # 设置 Homebrew/homebrew-core 的 Git 镜像
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
如果未设置相应的环境变量,则将使用默认的 Git 远程仓库。
推荐几个镜像站:优化使用体验
无人值守安装
如果需要非交互式安装 Homebrew 而不提示输入密码 (例如在自动化脚本中),可在安装命令前添加 NONINTERACTIVE=1
1
NONINTERACTIVE=1 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
解压到任何地方安装(不支持)
从技术上讲,你可以将 Homebrew 仓库下载 (或 git clone
) 到任何地方安装。虽然官方不支持这样做,但还是给出了安装教程,如果需要请查看 Untar anywhere (unsupported)。
- 下载 安装脚本 并运行
/bin/bash install.sh --help
可以查看更多安装选项。- 更新升级 Homebrew 可使用 brew update 命令。
卸载
卸载 Homebrew 需要在终端执行以下命令:
1
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/uninstall.sh)"
如果需要以非交互方式卸载 Homebrew (例如在自动化脚本中),可在卸载命令前添加 NONINTERACTIVE=1
1
NONINTERACTIVE=1 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/uninstall.sh)"
下载 卸载脚本 并运行
/bin/bash uninstall.sh --help
可以查看更多卸载选项。
如果
.zshrc
或.bash_profile
配置有环境变量需要手动删除。例如:HOMEBREW_BOTTLE_DOMAIN
。删除完成后,执行:source ~/.zshrc
或source ~/.bash_profile
。
模块组成
Homebrew 作为一款广受欢迎的包管理工具,为 macOS 和 Linux 用户提供了一个简洁且高效的方式来安装、更新、卸载和管理各种软件包。以下是 Homebrew 最新版本的模块组成:
核心模块
- brew
- 功能:Homebrew 的主要命令行工具,用于与用户进行交互。
- 描述:它提供了软件包的安装、卸载、更新、查询等核心功能。用户通过 brew 命令可以轻松地管理他们的软件包。
- homebrew-core
- 功能:Homebrew 的核心软件仓库。
- 描述:这个仓库包含了大量常用的软件包,每个软件包都有一个对应的 Formula(安装脚本),定义了软件的获取、编译和安装过程。
扩展模块
- homebrew-cask
- 功能:专门用于安装和管理 macOS 上的图形界面应用程序。
- 描述:这个仓库包含了大量常用的 Cask(安装脚本),允许用户通过简单的命令安装和管理各种 macOS 图形应用程序。
- homebrew-bottles
- 功能:提供了预编译软件包(称为“瓶子”)的存储和管理功能。
- 描述:这些预编译的软件包,可以让用户避免从源代码编译软件的繁琐步骤,从而加快软件的安装速度。homebrew-bottles 为用户提供了一个快速获取和使用预编译软件包的途径。
注意:homebrew-bottles 不是一个独立的仓库,虽然没有在 GitHub 集中管理,但你可以在 Homebrew 的官方网站上找到相关信息。
辅助工具与扩展
- homebrew-services
- 功能:提供了一套管理工具,用于控制和管理通过 Homebrew 安装的服务。
- 描述:这个工具使得用户可以轻松地启动、停止、重启或查看通过 Homebrew 安装的服务的状态,如数据库、Web 服务器等。它简化了服务的管理过程,提高了用户的工作效率。
- homebrew-cask-versions
- 功能:允许用户安装和管理特定版本的 macOS 图形界面应用程序。
- 描述:这个扩展为用户提供了安装旧版应用程序的能力,满足了用户对特定版本软件的需求。
注意:随着 Homebrew 的更新,此功能已整合到 homebrew-cask 中。
术语
Homebrew 命名灵感来源于酿酒工艺,且使用的术语也与酿酒紧密相连。下面是我们对一些关键术语的解析:
- formula (配方):
- 描述:formula 定义了包的安装方法、源代码位置、依赖关系以及如何编译和安装。用户通过
brew install <formula>
命令,即可根据“配方”自动下载、编译并安装包。 - 示例:
/opt/homebrew/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/f/foo.rb
- 酿酒术:“配方”决定酒的原料和酿造方法。
- 描述:formula 定义了包的安装方法、源代码位置、依赖关系以及如何编译和安装。用户通过
- cask (木桶):
- 描述:cask 是一个扩展,用于安装和管理 macOS 上的图形界面程序。用户通过
brew install --cask <cask>
命令,即可自动下载、安装应用程序。 - 示例:
/opt/homebrew/Homebrew/Library/Taps/homebrew/homebrew-cask/Casks/b/bar.rb
- 酿酒术:“木桶”用于存放和陈化葡萄酒。
- 描述:cask 是一个扩展,用于安装和管理 macOS 上的图形界面程序。用户通过
- prefix (前缀):
- 描述:prefix 指的是 Homebrew 安装路径,用户通过
brew --prefix
命令,即可查看。它提供了一个集中的安装环境,确保了软件包的组织性和一致性。 - 示例:
/opt/homebrew
- 酿酒术:“前缀”指的是酒窖的区域。
- 描述:prefix 指的是 Homebrew 安装路径,用户通过
- keg (小桶):
- 描述:keg 用于存放给定版本的 formula 目录。
- 示例:
/opt/homebrew/Cellar/foo/0.1
- 酿酒术:“小桶”是用来存放酒的容器。
- rack (酒架):
- 描述:是指存放所有 kegs 的目录。
- 示例:
/opt/homebrew/Cellar/foo
- 酿酒术:“酒架”用于摆放酒瓶。
- keg-only (仅限桶装):
- 描述:如果一个 formula 没有符号链接到 Homebrew’s prefix 中,那么它就是 keg-only。
- 示例:
openjdk formula
- opt prefix (选择前缀):
- 描述:已安装软件包的符号链接目录,方便访问。指向 keg 的 active 版本的符号链接。
- 示例:
/opt/homebrew/opt/foo
- Cellar (酒窖):
- 描述:Cellar 是 Homebrew 的核心存储区域,存储所有已安装包的地方。也就是 rack 的安装目录。
- 示例:
/opt/homebrew/Cellar
- 酿酒术:酿酒中,“酒窖”是存放和陈化酒的地方。
- Caskroom (木桶间):
- 描述:存放和管理 cask 包的目录
- 示例:
/opt/homebrew/Caskroom
- 酿酒术:酿酒中,“木桶间”是存放和管理木桶的地方。
- tap (水龙头):
- 描述:tap 代表第三方软件包仓库 (通常是 Git 存储库)。通过 tap,用户可以添加第三方仓库,从而扩展 Homebrew 的软件包来源。
- 示例:
/opt/homebrew/Homebrew/Library/Taps/homebrew/homebrew-core
- 酿酒术:酿酒中,“水龙头”用于从酒桶中取出酒液。
- bottle (瓶装):
- 描述:bottle 允许用户直接下载和安装已经编译好的二进制包,无需从源代码开始编译,大大加快了安装速度。
- 示例:
qt--6.5.1.ventura.bottle.tar.gz
- 酿酒术:酿酒中,“瓶装”指的是已经瓶装好,可直接销售的美酒。
常用命令
- 有关完整的命令列表,请查看 COMMANDS
概要:
brew
--version
brew
command
[--verbose
|-v
] [options
] [formula
|cask
] …
formula
或cask
通常是要安装的软件包名称。它还有更多语法,请看 SPECIFYING FORMULAE 或 SPECIFYING CASKS
安装包 install
install
[options
]formula
|cask
[…]
安装一个 formula
或 cask
。详细教程
1
2
3
4
brew install wget # 先尝试安装 formula,没有的话再尝试安装 cask 软件包
brew install --formula wget # 指定安装一个 formula 软件包
brew install --cask firefox # 指定安装一个 cask 软件包
brew install --verbose --debug wget # 安装失败时使用这条指令重新安装,查看错误信息
重新安装包 reinstall
reinstall
[options
]formula
|cask
[…]
重新安装 formula
或 cask
,如果之前有安装过,先卸载再安装。详细教程
1
2
3
brew reinstall wget # 重新安装 wget,软件包选择顺序先 formula 再 cask
brew reinstall --formula wget # 重新安装 formula 软件包
brew reinstall --cask firefox # 重新安装 cask 软件包
卸载包 uninstall, remove, rm
uninstall
,remove
,rm
[options
]installed_formula
|installed_cask
[…]
卸载一个 formula
或 cask
。详细教程
1
2
3
4
brew uninstall wget # 卸载本地已经安装的软件包
brew uninstall --formula wget # 卸载本地已安装的 formula 软件包
brew uninstall --cask firefox # 卸载本地已安装的 cask 软件包
brew unistall wget --force # 彻底卸载已安装包的所有版本,并且在删除文件时忽略错误
已安装的包 list, ls
list
,ls
[options
] [installed_formula
|installed_cask
…]
列出所有已安装的 formula
和 cask
。详细教程
1
2
3
4
5
6
7
8
brew list # 查看所有已安装的软件包名称,包括 formula 和 cask
brew list wget # 查看已安装的软件包 wget 的文件信息
brew list --formula # 查看所有已安装的 formula 软件包名称
brew list --formula wget # 查看已安装的软件包 wget 的文件信息
brew list --cask # 查看所有已安装的 cask 软件包名称
brew list --cask firefox # 查看已安装的软件包 firefox 的文件信息
brew list --version # 查看所有已安装的软件包的名称及版本信息
brew list --version wget # 查看已安装的软件包 wget 的名称及版本信息
搜索包 search
search
,-S
[options
]text
|/
regex
/
[…]
对 cask
和 formula
执行搜索。如果 text
两侧有/
,则它被解释为正则表达式。搜索范围在本地和远程,已安装会显示绿色的勾。详细教程
1
2
3
4
brew search wget # 搜索本地远程仓库的软件,已安装会显示绿色的勾
brew search /wget/ # 使用正则表达式搜软件
brew search --formula wget # 只搜索 formula 下的 wget 软件包
brew search --cask firefox # 只搜索 cask 下的 firefox 软件包
包信息 info, abv
info
,abv
[options
] [formula
|cask
…]
查看已安装包的简要统计信息。如果有 formula
或 cask
,则显示它的信息摘要。详细教程
1
2
3
4
brew info # 可以统计出本地安装了多少个 formula 软件包,共有多少文件,占用多少空间
brew info wget # 可以看到软件包的概况,比如它来源于哪里,构建工具是什么,依赖有哪些,和哪些软件包有冲突,近期的分析统计数据
brew info --formula wget
brew info --cask firefox
打开官网 home, homepage
home
,homepage
[--formula
] [--cask
] [formula
|cask
…]
在浏览器中打开 formula
或 cask
的主页。如果不提供参数,则打开 Homebrew 自己的主页。详细教程
1
2
3
4
brew home # 打开 Homebrew 官网
brew home wget # 打开 wget 官网
brew home --formula wget # 打开 wget 官网
brew home --cask firefox # 打开 firefox 官网
更新升级 update, up
update
,up
[options
]
使用 git
从 GitHub 获取最新版本的 Homebrew
和所有 formulae
进行升级安装,并显示已过时的软件包。详细教程
1
brew update # 升级 Homebrew,并显示已过时的软件包
已过时的包 outdated
outdated
[options
] [formula
|cask
…]
查看本地已安装,且版本已过时的 formulae
和 casks
。详细教程
1
2
3
4
5
6
brew outdated # 查看已经过时的软件包
brew outdated wget # 查看已经过时的 wget 包
brew outdated --formula # 查看所有已经过时的 formula 包
brew outdated --formula wget # 查看 wget 是否已过时
brew outdated --cask # 查看所有已经过时的 cask 包
brew outdated --cask firefox # 查看 firefox 是否已过时
升级包 upgrade
upgrade
[options
] [installed_formula
|installed_cask
…]
升级已过时的 cask
和过时的、未固定的 formula
。如果指定了 cask
或 formula
,则仅升级给定的 cask
或 formula
kegs (除非它们已固定;请查看 pin
、unpin
)。详细教程
如果未设置 HOMEBREW_NO_INSTALL_CLEANUP
,升级完成后会自动执行 brew cleanup
。
1
2
3
4
brew upgrade # 更新所有已过时的软件包
brew upgrade wget # 更新指定的 wget 软件包
brew upgrade --formula wget # 更新指定的 wget 软件包
brew upgrade --cask firefox # 更新指定的 firefox 软件包
固定 pin
pin
installed_formula
[…]
固定指定的 formula
,防止在发出 brew upgrade
formula
命令时升级它们。取消固定请查看 unpin
。详细教程
1
brew pin wget # 禁止升级 wget
注意:依赖于更新版本的固定
formula
的其他软件包可能无法正确安装或运行。
取消固定 unpin
unpin
installed_formula
[…]
取消固定 formula
,允许它们通过 brew upgrade
formula
进行升级。固定请查看 pin
。详细教程
1
brew unpin wget # 解除禁止升级 wget 的限制
清理 cleanup
cleanup
[options
] [formula
|cask
…]
删除所有 formula
和 cask
的陈旧的锁文件和过时的下载,并删除已安装 formula
的旧版本。如果指定了参数,则仅对给定的 formula
和 cask
执行此操作。详细教程
注意:
- 默认会删除所有超过 120 天的下载。这可以通过
HOMEBREW_CLEANUP_MAX_AGE_DAYS
进行调整如果被清理的软件包不是最新版本,Homebrew 会给出警告,这个警告可忽略
1 2 3 4 5 $ zstd --version *** Zstandard CLI (64-bit) v1.5.5, by Yann Collet *** $ brew cleanup zstd Warning: Skipping zstd: most recent version 1.5.6 not installed
1
2
3
4
5
brew cleanup # 针对所有已安装软件包执行清理动作
brew cleanup -n # 显示要删除的内容,但实际上不删除任何内容
brew cleanup wget # 针对已安装的 wget 执行清理动作
brew cleanup --formula wget # 针对已安装的 wget 执行清理动作
brew cleanup --cask firefox # 针对已安装的 firefox 执行清理动作
体检 doctor, dr
doctor
,dr
[--list-checks
] [--audit-debug
] [diagnostic_check
…]
检查你的系统是否存在潜在问题。如果发现任何潜在问题,将以非零状态退出。详细教程
1
brew doctor # 检查系统是否存在潜在问题
帮助 help
help
[command
…]
输出 brew
command
的使用说明。相当于 brew --help
command
。详细教程
1
2
brew --help # 显示 brew 命令的使用说明
brew --help info # 显示 info 命令的使用说明
日志 log
log
[options
] [formula
|cask
]
显示 formula
or cask
的 git log
,如果没有指定 formula
or cask
,则显示 Homebrew 存储库的日志。详细教程
1
2
brew log # 显示 Homebrew 存储库的日志
brew log --formula # 显示 formula 存储库的日志
配置信息 config
config
,--config
显示对调试有用的 Homebrew 和系统配置信息。如果你提交错误报告,将需要提供这些信息。详细教程
1
brew config # 显示 Homebrew 和 macOS 系统配置信息
路径 --cache, --caskroom, --cellar, --env, --prefix, --repo
--cache
[options
] [formula
|cask
…]
显示 Homebrew 的下载缓存。如果指定了 formula
,则显示用于缓存 formula
的文件或目录。详细教程
注意:
Homebrew 使用
HOMEBREW_CACHE
目录作为下载缓存。默认:
- macOS:
$HOME/Library/Caches/Homebrew
- Linux:
$XDG_CACHE_HOME/Homebrew
或$HOME/.cache/Homebrew
1
2
brew --cache # 显示 Homebrew 的下载缓存路径
brew --cache wget # 显示 wget 的下载缓存路径
--caskroom
[cask
…]
显示 Homebrew 的 Caskroom 路径。如果指定了 cask
,则显示 Caskroom 中 cask
的安装位置。详细教程
1
brew --caskroom # 显示 Homebrew's Caskroom 路径
--cellar
[formula
…]
显示 Homebrew 的 Cellar 路径。默认值: $(brew --prefix)/Cellar
,如果该目录不存在,则为 $(brew --repository)/Cellar
。如果指定了 formula
,则显示 Cellar 中 formula
的安装位置。详细教程
1
brew --cellar # 显示 Homebrew's Cellar 路径
--env
,environment
[--shell=
] [--plain
] [formula
…]
显示 Homebrew 的构建环境。详细教程
1
brew --env # 显示 Homebrew 的构建环境
--prefix
[--unbrewed
] [--installed
] [formula
…]
显示 Homebrew 的安装路径。默认:
- macOS ARM:
/opt/homebrew
- macOS Intel:
/usr/local
- Linux:
/home/linuxbrew/.linuxbrew
如果指定了 formula
,则显示 formula
已安装或将要安装的位置。详细教程
1
brew --prefix # 显示 Homebrew 安装路径
--repository
,--repo
[tap
…]
显示 Homebrew 的 Git 存储库所在的位置。如果指定了 user
/
repo
,则显示 tap user
/
repo
的目录所在位置。详细教程
1
brew --repo # 显示 Homebrew 本地的 Git 仓库
版本 --version, -v
--version
,-v
显示 Homebrew、Homebrew/homebrew-core 和 Homebrew/homebrew-cask (tap) 的版本号。详细教程
1
brew --version # 显示 Homebrew 版本
优化使用体验
对于国内用户来说,优化 Homebrew 的使用体验主要需要解决网络问题,因为 Homebrew 的默认源位于国外,可能会受到网络访问限制或速度慢的影响。
国内镜像源:
可以将源站切换到国内镜像,从而加速下载和更新。
推荐几个国内 Homebrew 镜像站:
Hosts 加速:
- 通过 www.ipaddress.com 查询
raw.githubusercontent.com
对应 IP 地址,然后添加到/etc/hosts
文件中。 - 设置 DNS 服务,如果默认用的国内 DNS 服务,可能存在污染。可以换到 Google Public DNS。
- 配置完成之后再执行安装和更新操作。
手动查询 Github 相关 IP 地址会比较麻烦,这里推荐一个仓库,里面提供了最新的 GitHub Hosts 地址。 然后再推荐使用 SwitchHosts 进行
hosts
管理会比较简单,这里查看详细 使用说明。- 通过 www.ipaddress.com 查询
代理或 VPN:
可以使用代理服务器或 VPN 来加速资源的访问。但请注意,使用代理或 VPN 可能涉及法律风险,请确保你的使用方式合法。
定期清理和更新:
定期使用
brew cleanup
清理旧版本,以及使用brew update
和brew upgrade
更新 Homebrew 和已安装的软件包。
注意事项
在使用 Homebrew 时,有几点需要注意:
- 确保你的 macOS 系统版本与 Homebrew 兼容。
- 定期运行
brew update
以保持 Homebrew 和formula
的最新版本。 - 定期使用
brew doctor
检查系统环境。 - 当安装新软件包时,注意检查其依赖关系以避免潜在的冲突。
- 对于
Keg-only
的软件包,需要使用特定的命令来调用它们。
结语
Homebrew 是个强大的包管理器,也是一个蕴含酿酒文化的艺术品。学会使用 Homebrew,你能精细管理你的 macOS 软件环境,提升效率,增添乐趣。希望本文能助你更深入理解和使用 Homebrew,享受自制软件的快乐!
如果想了解如何使用 Homebrew Tap 访问第三方仓库或定制个人软件库,请查阅 Homebrew Tap:酿造你的个性化 macOS 软件库。
相关链接
- https://brew.sh
- https://github.com/ruby/ruby
- brew manual page (command documentation)
- brew installation
- Formula Cookbook
- Homebrew Tap:酿造你的个性化 macOS 软件库
注意:
截止本文发布时 (2023-12-23),Homebrew 版本为 4.2.0,本文所有案例都实践在此版本下。