Homebrew:使用新的 formula@version 格式列出可用版本

Homebrew: list available versions with new formula@version format

Homebrew 最近弃用了 homebrew/versions,转而支持通过新的 formula@version 格式在 homebrew/core 上提供版本。例如(根据 this answer),您可以执行 brew install postgresql@9.5

当然,这不适用于任意版本。例如,install cocoapods@1.1.1 出现 "Error: No formulae found in taps"。

在旧方法下,我可以 运行 brew versions <formula> 查看可用版本。我现在如何列出可用版本?

您可以使用 brew search.

搜索版本

例如:

$ brew search postgresql
postgresql ✔      postgresql@9.4     postgresql@9.5

如果您只想在使用 search 找到公式后查找公式使用的特定版本,您可以通过以下方式获得 info

brew info <formula|cask>

例如brew info postgresql@10,或 brew info vlc。 (Brew 不再需要为此命令显式指定 --cask。)

如果您找不到流行的旧版本的 cask,您可以通过 homebrew-cask-versions 获得它,可以使用 brew tap homebrew/cask-versions.

安装

这是一个老问题,但我找到了一个“更好”(对我来说)的方法:

brew info --json PACKAGE_NAME | jq -r '.[].versioned_formulae[]'

例如,对于包 node,这将打印:

$ brew info --json node | jq -r '.[].versioned_formulae[]'
node@10
node@12
node@8

您需要安装程序 jq 才能深入到适当的 JSON, (brew install jq).

由于以上对 write/remember 来说很粗糙,我建议在您喜欢的 shell.

中设置一个别名或函数

注意:此方法仅适用于配方,不适用于木桶。

要获得没有外来噪音的准确结果,您可以将正则表达式与 brew search 结合使用。它不包括 qt-postgresqlpostgrest,它们会被 brew search postgresql 编辑 return。如果您正在搜索像 rgit 这样的短包名称,这将特别有用,否则 return 会有很多噪音。

$ brew search '/^postgresql$|^postgresql@/'

==> Formulae
postgresql          postgresql@11       postgresql@13       postgresql@9.5
postgresql@10       postgresql@12       postgresql@9.4      postgresql@9.6

请注意,brew search 似乎支持扩展正则表达式,因此我无法使用下面更高效的正则表达式。当然,您可以使用 grep 管道来完成相同的操作:

$ brew search postgresql | grep -E '^postgresql(@.*)?$'

postgresql
postgresql@10
postgresql@11
postgresql@12
postgresql@13
postgresql@9.4
postgresql@9.5
postgresql@9.6