Homebrew:列出具有新公式@版本格式的可用版本

Phl*_*man 72 homebrew

Homebrew最近不赞成通过新格式homebrew/versions提供版本.例如(根据这个答案),你可以做到.homebrew/coreformula@versionbrew install postgresql@9.5

当然,这对任意版本都不起作用.例如,install cocoapods@1.1.1出现"错误:在水龙头中找不到公式".

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

Ame*_*ina 81

您可以使用搜索版本brew search.

例如:

$ brew search postgresql
postgresql ?      postgresql@9.4     postgresql@9.5
Run Code Online (Sandbox Code Playgroud)

  • 这就是我害怕的...我需要旧版本的程序只有当前版本可用.呃,好吧. (23认同)
  • @KenWilliams @aaron 请参阅此答案,了解如何精确搜索“r”或“git”:/sf/ask/3047729541/ /70491376#70491376 (5认同)
  • 这个方法对于像“r”这样的包来说几乎没有用;它会找到名称中带有“r”的每个包。 (2认同)

Jro*_*rop 28

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

brew info --json PACKAGE_NAME | jq -r '.[].versioned_formulae[]'
Run Code Online (Sandbox Code Playgroud)

例如,在 package 的情况下node,这将打印:

$ brew info --json node | jq -r '.[].versioned_formulae[]'
node@10
node@12
node@8
Run Code Online (Sandbox Code Playgroud)

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

由于上述内容难以编写/记住,我建议在您最喜欢的 shell 中设置别名或函数。

  • 这真太了不起了! (2认同)

qix*_*qix 10

而且,如果您想在使用查找公式后仅查找公式使用的特定版本search,则可以info使用:

brew info <formula>
# or for a cask:
brew cask info <formula>
Run Code Online (Sandbox Code Playgroud)

例如brew info postgresql@10,或brew cask info vlc

而且,如果找不到流行的旧木桶版本,则可以通过homebrew-cask-versions安装,通过来获得brew tap homebrew/cask-versions


wis*_*cky 8

为了获得准确的结果而不产生额外的噪音,您可以将正则表达式与brew search. 它排除了qt-postgresqlpostgrest,后者将由 返回brew search postgresql。如果您正在搜索诸如r或 之类的短包名称,这将特别有用git,否则会返回大量噪音。

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

==> Formulae
postgresql          postgresql@11       postgresql@13       postgresql@9.5
postgresql@10       postgresql@12       postgresql@9.4      postgresql@9.6
Run Code Online (Sandbox Code Playgroud)

请注意,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
Run Code Online (Sandbox Code Playgroud)