使用 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``.
这样的消息,我就有点怀疑这个检查到底准不准……