使用 Homebrew Bundle 管理电脑上安装的软件
今天看到一篇推文说 Homebrew 也支持类似package.json的方式来管理电脑上安装的应用,感觉这玩意挺实用的,像我上回换电脑还是照着brew list的输出再一个个装,有了它的话就可以一键安装了。而且除了 Homebrew 之外,它还可以导出通过 App Store 安装的软件和 VS Code 插件。那么,就小小折腾一下。
首次运行brew bundle的时候它就会自动安装了。如果要导出 App Store 安装的程序的话,那么还需要安装mas这个 Formula。
然后就可以执行brew bundle dump,它会在当前目录下生成一个Brewfile文件,里面就是你电脑上目前装的软件,内容就像这样:
1 | # 各个Homebrew仓库 |
我的这个 Brewfile 算是简单的,它还支持配置安装参数等,具体可以参考 Homebrew Bundle 的实例。
如果在导出的时候在当前目录已经存在一个Brewfile,那么它会报错说文件已存在。这时候可以加--force参数强制导出,要在 cron 里定时导出的话这个参数会很有用。此外如果你想要每个软件的简介,那么还可以加上--describe参数,出来的Brewfile就会是这样的:
1 | # Mac App Store command-line interface |
不过--describe参数只对brew和cask条目生效,tap、mas和vscode条目都是没有描述的。
我试用后发现,似乎mas这部分会把你已经卸载的软件也列出来,而第二次再 dump 的时候又另外发现了一个之前没列出来而已经通过 App Store 安装的程序,所以这部分可能需要在导出之后自己再人工校验一下。
要按照Brewfile安装软件的话,只需要 cd 到Brewfile所在位置然后执行brew bundle就会自动开始安装。
如果要把不在Brewfile中的软件删除,那么可以运行brew bundle cleanup命令。
此外,运行brew bundle check可以检查哪些软件在Brewfile里列出来了,但是还没安装。但是我用刚刚导出的Brewfile检查却报了brew bundle can't satisfy your Brewfile's dependencies.Satisfy missing dependencies with ``brew bundle install``.这样的消息,我就有点怀疑这个检查到底准不准……