brew中是否有方法或特殊命令将已安装的软件包冻结到requirements.txt文件中,就像在python中使用pip一样?然后从该文件快速重新安装它们?
答案 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/versions
,homebrew/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
检查每个包的当前版本是什么,因为当前版本只是没有编号的包名。