如何像 pip 一样冻结 brew 需求?

How to freeze brew requirements like pip?

brew 中有没有一种方法或特殊命令可以将安装的软件包冻结到 requirements.txt 文件中,就像在 python 中使用 pip 一样?然后从该文件快速重新安装它们?

编辑以回答问题 w/o 版本冻结。

brew list >brew.txt
<brew.txt xargs brew install

--

Homebrew 旨在为您提供最新版本的软件包。冻结版本不是它的强项。

有两个功能可以让您参与其中。 brew list --versions 将打印一个软件包列表及其安装的版本号(以空格分隔,这需要重新格式化才能有用。brew tap homebrew/versions 让您可以访问一些旧版本的软件包。

不幸的是,命名方案不太行得通。例如,我安装了 node 包,目前是 5.5.0。那我brew install homebrew/versions/node4-ltsbrew list --versions 中的结果是什么?

node 5.5.0
node4-lts 4.3.1

简而言之,按照您的要求进行操作需要一些脚本(可能存在也可能不存在,但似乎没有内置到 Homebrew 中)试图将主要版本号映射到 [=18 中的条目=] 并且能够处理奇怪的情况,例如 4 -> node4-lts。它将仅限于主要版本,或者在某些情况下主要版本和次要版本,因为那是 homebrew/versions 所拥有的。并且它必须检查 brew info 每个包的当前版本是什么,因为当前版本只是没有编号的包名称。

使用Homebrew-bundle;它就是为此而设计的。

# generate a Brewfile
$ brew bundle dump
$ ls
Brewfile

# check everything is installed
$ brew bundle check
The Brewfile's dependencies are satisfied.

它适用于本地公式文件和当前用户的全局公式文件。它允许您安装 Brewfile 中指定的所有内容(这是默认设置,您可以使用任何您喜欢的名称)以及 uninstall 已安装但未在文件中列出的内容。该文件不仅列出了已安装的配方,还列出了已安装的水龙头(例如 homebrew/versionshomebrew/php 等)和木桶(如果您使用 Homebrew Cask)。