前言
Homebrew 应该是macOS上最常用的包管理器了,在电脑迁移的过程中,我们可能因为使用软件的习惯,都会将之前下载的软件重新下载一遍,这个时候需要一个文件来记录你之前通过brew下载的软件/包。 通过这个思路,可以将homebrew下载的软件用 as code 的形式保存下来,后续方便管理。
思路
当想到怎么获取brew下载的软件/包时,首先想到的便是使用brew list
命令,这个命令会列出brew安装的所有安装过的 Formulae / casks。以下是我输出的结果。
brew list
==> Formulae
ack libde265 mpfr
aom libdicom msgpack
bash-completion libevent ncurses
brotli libexif neovim
c-ares libgcrypt nettle
ca-certificates libgpg-error node
cairo libheif npth
cfitsio libidn nspr
cgif libidn2 nss
fftw libimagequant nvm
fontconfig libksba oniguruma
freetype liblqr open-mpi
fribidi libmatio openexr
fzf libmpc openjpeg
gcc libnghttp2 openldap
gdk-pixbuf libomp openslide
gettext libpng openssl@3
ghostscript libraw orc
giflib librsvg p11-kit
git libspng pango
glib libtasn1 pcre
gmp libtermkey pcre2
gnupg libtiff pinentry
gnutls libtool pixman
go libunistring pmix
gpgme libusb poppler
graphite2 libuv [email protected]
harfbuzz libvmaf readline
hdf5 libvterm shared-mime-info
highway libx11 sqlite
hwloc libxau telnet
icu4c libxcb tig
imagemagick libxdmcp tree
imath libxext tree-sitter
isl libxml2 unbound
jasper libxrender unibilium
jbig2dec little-cms2 uthash
jpeg-turbo luajit vips
jpeg-xl luv webp
jq lz4 x265
libaec lzo xorgproto
libarchive m4 xz
libassuan mozjpeg zsh
libb2 mpdecimal zstd
==> Casks
apifox keycastr sfm
arc keyclu snipaste
dingtalk obs spotify
google-chrome orbstack visual-studio-code
iterm2 picgo wechat
jetbrains-toolbox raycast xcodes
然后参照这篇文章使用这个办法来备份和安装brew list
brew list > brew_programs_list.txt
xargs brew install < brew_programs_list.txt
这里可以看到,casks 基本上没什么问题,但是 Formulae 里会看到很多不是自己主动下载的包,他们之间有相互依赖的关系。
另一种推荐的方法
在这篇文章中看到了另一种思路来备份 Restore, Clone or Backup your Homebrew Setup 输出的效果比直接 brew list 要简洁得多。
brew tap Homebrew/bundle
brew bundle dump
# 这里会在当前文件夹内创建一个名叫 Brewfile 的文件
# 再使用这个命令重新来安装
brew bundle
我的brewfile直接备份在Github上。可以看到通过这种方式备份出来的 formulae 比使用 brew list
来得更加干净(这里是指这里的包是我当时主动安装的,没有其他额外的 formulae 依赖。