如何冻结像pip这样的酿造要求?

M.R*_*.R. 7 python shell homebrew command install

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

bfo*_*ine 11

使用Homebrew-bundle ; 它是专为此而设计的.

# generate a Brewfile
$ brew bundle dump
$ ls
Brewfile

# check everything is installed
$ brew bundle check
The Brewfile's dependencies are satisfied.
Run Code Online (Sandbox Code Playgroud)

它适用于本地公式文件和当前用户的全局公式文件.它允许您安装在a中指定的所有内容Brewfile(默认情况下,您可以使用您喜欢的任何名称),以及卸载已安装但未在文件中列出的内容.该文件不仅列出已安装的公式,但也安装了水龙头(例如homebrew/versions,homebrew/php等)和桶(如果你使用自制桶).

  • 根据 op 的意图,这应该是公认的答案。 (2认同)

Jas*_*n S 9

编辑以回答没有版本冻结的问题.

brew list >brew.txt
<brew.txt xargs brew install
Run Code Online (Sandbox Code Playgroud)

-

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

有两个功能可以帮助您解决问题.brew list --versions将打印包含已安装版本号的软件包列表(以空格分隔,这需要重新格式化才有用.并brew tap homebrew/versions允许您访问一些旧版本的软件包.

不幸的是,命名方案并不常用.例如,我node安装了当前的软件包5.5.0.然后我brew install homebrew/versions/node4-lts.最终会发生brew list --versions什么?

node 5.5.0
node4-lts 4.3.1
Run Code Online (Sandbox Code Playgroud)

简而言之,做你要求的东西需要一些脚本(可能存在,也可能不存在,但似乎没有构建到Homebrew中),它试图将主要版本号映射到条目中,homebrew/versions并且能够处理奇怪的情况,如作为4 -> node4-lts.它将仅限于主要版本或某些情况下的主要版本和次要版本,因为它homebrew/versions具有的功能.并且它必须brew info为每个包签入当前版本的内容,因为当前版本只是没有编号的包名.

  • `pip freeze` 为您提供版本。 (3认同)