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

时间:2016-02-22 00:35:26

标签: python shell command install homebrew

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

2 个答案:

答案 0 :(得分:9)

使用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)。

答案 1 :(得分:7)

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

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-lts。最终在brew list --versions

node 5.5.0
node4-lts 4.3.1

简而言之,做你要求的事情需要一些脚本(可能存在,也可能不存在,但似乎没有内置于Homebrew中),它试图将主要版本号映射到{中的条目{1}}能够处理奇怪的案例,例如homebrew/versions。它将仅限于主要版本或某些情况下的主要版本和次要版本,因为4 -> node4-lts具有的含义。并且必须为homebrew/versions检查每个包的当前版本是什么,因为当前版本只是没有编号的包名。