Homebrew Cask 完整使用指南:从安装、搜索到升级与自定义配置
2026/9/20 14:30:04 网站建设 项目流程
  • 包管理器
  • 开发工具

【免费下载链接】homebrew-cask

🍻 Default casks (upstream binary packages) for the package manager for everywhere

项目地址:https://gitcode.com/gh_mirrors/ho/homebrew-cask
点击查看免费下载

Homebrew Cask 是 Homebrew 生态中面向"预编译二进制软件包"(GUI 应用、命令行工具、字体、插件等)的安装与管理方案,它把brew install的优雅与简洁延伸到.dmg.pkg等上游分发格式。本指南以官方 USAGE.md 为核心,结合本仓库的 cask 定义源码,系统讲解brew --cask全系列命令、搜索与安装流程、卸载与清理、更新升级策略、常用选项与持久化配置,以及四种 cask 指定方式与自定义 tap 的使用方法。读完本篇,你将能用一条命令完成 macOS/Linux 上应用的安装、升级与彻底卸载,并理解底层 cask 文件的运作机制。

快速上手:最常用的五个命令

Homebrew Cask 作为 Homebrew 的一部分实现,所有命令都以brew开头,且同时适用于 cask 与 formula。最常用的命令如下:

命令作用
brew install --cask <token>安装指定的 cask
brew uninstall --cask <token>卸载指定的 cask
brew reinstall --cask <token>重新安装指定的 cask
brew list --cask列出已安装的 cask
brew search --cask <关键词>搜索 cask

以安装 Alfred 为例,官方 README.md 展示了完整输出:

% brew install alfred ==> Fetching downloads for: alfred ✔︎ Cask alfred (5.7.2,2312) Verified 5.6MB/ 5.6MB ==> Installing Cask alfred ==> Moving App 'Alfred 5.app' to '/Applications/Alfred 5.app' 🍺 alfred was successfully installed!

注意install --cask是显式指定 cask 类型的写法;当命令后省略--cask时,brew 会根据 token 自动判断是 formula 还是 cask。

搜索 Cask:brew search

在安装之前,先用brew search确认 cask 是否存在。官方 USAGE.md 以 Mozilla Firefox 为例:

$ brew search --cask firefox ==> Casks firefox firefox@cn firefox@esr firefox@beta firefox@developer-edition firefox@nightly Use `brew desc` to list packages with a short description.

搜索结果展示了 Homebrew Cask 的 token 命名习惯:同一软件的不同变体通过@后缀区分。在本仓库中,firefox@beta、firefox@esr 等版本化 cask 与主 cask 并存,并使用conflicts_with声明互斥关系,例如 firefox.rb 中的:

conflicts_with cask: [ "firefox@beta", "firefox@cn", "firefox@esr", ]

这意味着安装firefox时,若已安装上述冲突变体,brew 会拒绝或提示处理冲突。

安装 Cask:brew install --cask

brew install --cask一次可接受一个或多个 cask token。继续以 Firefox 为例(USAGE.md 中的完整输出):

$ brew install --cask firefox ==> Downloading https://raw.githubusercontent.com/Homebrew/homebrew-cask/ba243ff8f7984a43088e0a1721e872cdd9ae7df0/Casks/f/firefox.rb ######################################################################## 100.0% ==> Downloading https://download-installer.cdn.mozilla.net/pub/firefox/releases/128.0/mac/en-US/Firefox%20128.0.dmg ######################################################################## 100.0% ==> Installing Cask firefox ==> Moving App 'Firefox.app' to '/Applications/Firefox.app' ==> Linking Binary 'firefox.wrapper.sh' to '/opt/homebrew/bin/firefox' 🍺 firefox was successfully installed!

整个安装流程分为四步:

  1. 下载 cask 定义文件:brew 先从本仓库拉取最新的Casks/f/firefox.rb
  2. 下载应用本体:根据 cask 定义中的url字段下载.dmg/.pkg等安装包。该 URL 往往内嵌版本号与语言变量,例如 firefox.rb 中的:
url "https://download-installer.cdn.mozilla.net/pub/firefox/releases/#{version}/mac/#{language}/Firefox%20#{version}.dmg"
  1. 校验并安装:brew 依据 cask 中的sha256校验下载文件的完整性,然后将 App 移动到/Applications
  2. 创建符号链接:若 cask 定义了command_wrapper(如 Firefox 将 CLI 包装到/opt/homebrew/bin/firefox),会一并完成二进制链接。

从源码结构看,一个典型 cask 文件由versionsha256urlnamedeschomepagelivecheckauto_updatesdepends_onappuninstallzap等字段构成,参见 alfred.rb 与 firefox.rb 这两个完整示例。

多语言 cask 与 --language 选项

Firefox cask 的language块多达数十种,每种语言对应独立的sha256(因为不同语言包的下载内容不同)。安装时若未指定语言,则使用default: true标记的默认语言块(firefox.rb):

language "en", default: true do sha256 "fecc46103039ca4a77ecb2b2ef7b03892f922e13db0782f8570c512b2e458515" "en-US" end

这也是brew info firefox中 Languages 列表(af, ar, be, ... zh-TW, zh)的来源。

卸载 Cask:brew uninstall --cask

卸载同样简单(USAGE.md):

$ brew uninstall --cask firefox

该命令会卸载 cask,并移除之前被移动到/Applications的应用。如需彻底清除应用残留的用户数据,使用uninstall --zap(见下文"其他命令")。

cask 文件中uninstall字段定义了卸载时的附加动作,例如 Firefox 在退出时执行:

uninstall quit: "org.mozilla.firefox"

而 Alfred 则同时处理退出与登录项(alfred.rb):

uninstall quit: "com.runningwithcrayons.Alfred", login_item: "Alfred#{version.major}"

其他命令与便捷别名

除安装/卸载外,brew还提供以下命令(除特别说明外,均以--cask <token>形式作用于 cask,见 USAGE.md):

命令说明
brew info --cask <token>显示指定 cask 的详细信息
brew fetch --cask <token>将远端应用文件下载到本地缓存;加--force可忽略缓存强制重下
brew --cache --cask <token>显示应用文件在 Homebrew 本地缓存中的预期路径
brew doctor检查配置问题(不带参数运行)
brew style --cask <token>使用 RuboCop 检查指定 cask 的代码风格
brew home --cask <token>打开该 cask 的主页;不带参数则打开 Homebrew 项目页
brew uninstall --zap --cask <token>尝试移除与该 cask 关联的所有文件(可能包含与其他应用共享的资源,需谨慎)
brew outdated --cask列出所有过期的 cask
brew upgrade --cask升级所有过期的 cask

以下命令主要面向 cask 作者(维护者):

命令说明
brew audit --cask <token>验证 cask 的可安装性
brew cat --cask <token>将指定 cask 的定义输出到标准输出
brew create --cask <token>创建一个新 cask 并在编辑器中打开
brew edit --cask <token>编辑指定 cask

此外,brew 还提供了一组便捷别名/缩写(USAGE.md):

  • brew lsbrew list
  • brew -Sbrew search
  • brew rmbrew removebrew uninstall
  • brew drbrew doctor
  • brew abvbrew info
  • brew homepagebrew home

关于 zap 的底层实现

zap的清理范围由 cask 定义中的zap trash:字段决定。以 firefox.rb 为例,它列出了十余项待删除路径(~/Library/Application Support/Firefox~/Library/Caches/Firefox~/Library/Preferences/org.mozilla.firefox.plist等),并通过rmdir:在清理后尝试删除可能为空的父目录。zap可能移除与其他应用共享的资源,因此 USAGE.md 明确提示:执行前请确认不会误删共用数据。

检查已安装的 Cask

列出 cask 安装的文件

$ brew list --cask firefox ==> App /Applications/Firefox.app (112 files, 360MB)

列出所有已安装的 cask

$ brew list --cask firefox google-chrome opera

--full-name时,来自外部 tap 的 cask 会带上 tap 全名,例如从purple/monkeytap 安装的dishwasher会显示为purple/monkey/dishwasher

查看 cask 详情

$ brew info firefox ==> firefox: 128.0 (auto_updates) https://www.mozilla.org/firefox/ Not installed From: https://github.com/Homebrew/homebrew-cask/blob/HEAD/Casks/f/firefox.rb ==> Name Mozilla Firefox ==> Description Web browser ==> Languages af, ar, be, bg, bn, ca, cs, de, en-CA, en-GB, en, eo, es-AR, es-CL, es-ES, fa, ff, fi, fr, gl, gn, gu, he, hi, in, it, ja, ka, ko, mr, my, ne, nl, pa-IN, pl, pt-BR, pt, ru, si, sq, sr, sv, ta, te, th, tl, tr, uk, ur, zh-TW, zh ==> Artifacts Firefox.app (App) /opt/homebrew/Caskroom/firefox/128.0/firefox.wrapper.sh -> firefox (Binary)

输出中的(auto_updates)标记对应 cask 定义中的auto_updates true字段(见 firefox.rb),表示该应用自带自动更新机制;From:指向仓库中的 cask 文件;Artifacts列出应用本体(App)与二进制包装(Binary)两类安装产物。

更新与升级:brew update / outdated / upgrade

因为 homebrew-cask 本身就是一个 Homebrew tap,所以每次执行常规的brew update都会顺带拉取最新版本的 cask 定义文件(USAGE.md):

  • brew outdated --cask:检查哪些 cask 已过期;
  • brew upgrade --cask:升级所有过期的 cask。

需要特别注意的是:许多应用自带自动更新(即 cask 中声明了auto_updates true),这类 cask 默认会被brew outdatedbrew upgrade忽略,以免 brew 与应用的自动更新机制冲突。若希望强制纳入检查与升级,可在这两条命令后追加--greedy选项:

$ brew outdated --cask --greedy $ brew upgrade --cask --greedy

Homebrew Cask 自身的更新

自 Homebrew 自动将 homebrew-cask 纳入 tap 管理 之后,Homebrew 会自动 tap 并持续保持 homebrew-cask 仓库的更新状态,你无需任何额外操作——只需定期执行brew update即可。

常用选项与持久化配置

brew接受以下与 cask 相关的选项(USAGE.md):

选项说明
--version打印版本号并退出
--debug输出调试信息
--no-binaries跳过将可执行二进制符号链接到/opt/homebrew/bin的步骤
--require-sha若 cask 未定义校验和(sha256),则中止安装
--language=<iso-language>[,<iso-language> ...]更改待安装 cask 的语言;使用第一个匹配的语言,否则回退到 cask 默认语言

还可以通过如下选项修改默认安装位置:

选项说明默认值
--appdir=/my/path应用将被移动到的目录/Applications
--fontdir=/my/path字体安装目录~/Library/Fonts

其他默认安装位置(如--prefspanel--qlplugindir--servicedir等)及对应修改标志,可查阅man brew

用 HOMEBREW_CASK_OPTS 持久化默认值

临时在命令行指定选项只对当次命令生效。若希望默认值长期生效,可在.profile.bash_profile.zprofile中设置环境变量HOMEBREW_CASK_OPTS(USAGE.md):

# Specify your defaults in this environment variable export HOMEBREW_CASK_OPTS="--appdir=~/Applications --fontdir=/Library/Fonts"

命令行中显式提供的选项会覆盖该环境变量。例如即使HOMEBREW_CASK_OPTS指定了~/Applications,下面的命令仍会强制将 Firefox 移动到/Applications

# Will force the Mozilla Firefox app to be moved to /Applications # even though HOMEBREW_CASK_OPTS specified ~/Applications brew install --appdir="/Applications" firefox

与字体 cask 的配合

--fontdir~/Library/Fonts的默认值直接对应本仓库中庞大的 Casks/font 目录(2600+ 个字体 cask,按font-a/font-b/等子目录组织)。字体 cask 的安装产物是font工件,例如:

$ brew install --cask font-fira-code

配合HOMEBREW_CASK_OPTS="--fontdir=/Library/Fonts"可将字体安装到系统级字体目录,供所有用户使用。

指定 cask 的四种方式

绝大多数brew命令接受 cask token 作为参数。除 token 外,USAGE.md 还列出了另外三种形式:

  1. 简单 token:如firefox
  2. 带 tap 的完整 token:如homebrew/cask/firefox
  3. cask 文件的本地路径:如/opt/homebrew/Library/Taps/homebrew/homebrew-cask/Casks/f/firefox.rb
  4. 可被 curl 获取的 cask 文件 URI:如https://raw.githubusercontent.com/Homebrew/homebrew-cask/HEAD/Casks/f/firefox.rb
  5. 当前工作目录下的 cask 文件:如my-modified-firefox.rb

关于第 5 种形式有两个注意点:

  • 当 token 与已 tap 的 cask 同名时,已 tap 的 cask 优先
  • 若要强制使用当前目录下的文件,需写成带斜杠的路径名,如./firefox.rb

后三种形式主要为希望维护私有 cask(不公开到主仓库)的用户设计:你可以从主仓库复制一份 cask 文件,修改其中的urlversionsha256后通过本地路径或 URI 安装,从而覆盖上游行为。

Taps:自定义 cask 仓库

向现有(或新建的)tap 添加 cask 非常简单(USAGE.md):

You can add casks to your existing (or new) taps: just create a directory namedCasksinside your tap, put your cask files there, and everything will just work.

即:在 tap 根目录下创建Casks目录,把 cask 文件放进去即可。本仓库的目录结构正是这一约定的范本——cask 文件按 token 首字符分目录存放(如Casks/f/firefox.rbCasks/a/alfred.rb),字体类 cask 集中在 Casks/font 下。

与 cask_renames.json、tap_migrations.json 的关联

仓库根目录还维护着两个与 token 生命周期相关的 JSON 文件:

  • cask_renames.json:记录 cask 的历史改名映射,例如4k-video-downloaderplus4k-video-downloader+bobbob-appdockerdocker-desktop。当你在旧 token 名称下运行命令时,brew 会据此自动重定向到新名称,保证升级路径平滑;
  • tap_migrations.json:记录迁移到其他 tap 的包,例如azure-clinodepython等 CLI 工具迁移到homebrew/core。这些包的 cask 定义已从本仓库移除,安装时应改用brew install <formula>而非--cask

Tab 补全

Homebrew 为bashzshfish提供了brew命令的 Tab 补全支持,可在交互式 shell 中自动补全 cask token 与子命令,具体启用方式参见 brew 官方 Shell Completion 文档。

排错与进一步阅读

  • 遇到问题时,官方 README.md 建议先执行brew update-reset && brew update重置所有 tap 状态,排除本地过期配置导致的假性故障;
  • 常见错误(curl错误、Permission deniedChecksum does not matchsource is not there等)的排查方法见 doc/reporting_bugs/error_examples.md;
  • 为 brew 提交新 cask 的贡献规范见 CONTRIBUTING.md;
  • 需要深入理解 cask 定义语法时,可直接阅读仓库中的 Casks/f/firefox.rb(多语言 + 多工件 + zap 的完整范例)与 Casks/a/alfred.rb(多段 version + livecheck 的简洁范例)。

总结

掌握brew --cask系列命令后,日常软件管理的核心循环是:brew search查找 →brew install --cask安装 →brew outdated --cask/brew upgrade --cask升级 →brew uninstall --cask(必要时加--zap)卸载。在此基础上,善用HOMEBREW_CASK_OPTS定制安装目录、用--language选择语言、通过--greedy覆盖自动更新判断,并通过 tap 机制维护私有 cask,即可完全掌控 macOS/Linux 上所有二进制软件的生命周期。

  • 包管理器
  • 开发工具

【免费下载链接】homebrew-cask

🍻 Default casks (upstream binary packages) for the package manager for everywhere

项目地址:https://gitcode.com/gh_mirrors/ho/homebrew-cask
点击查看免费下载
上一篇:如何 3 步装好 draw.io 桌面版:免费离线绘图工具新手完整指南
下一篇:社交数据读取神器:Finance Skills Twitter/Discord/LinkedIn阅读器使用指南

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询