背景
最近换了手头的 Mac 电脑。从原来的 intel 平台,改成了 M1。通过 Apple 官方的迁移助手同步完数据后,发现在新电脑上 Homebrew 有比较严重的兼容问题,而官方也提供了相应的 M1 版本。因此需要手动迁移一下。
差异
两者最主要的差异就是 Homebrew 的安装位置不同,从 /usr/local/bin/brew
改成了/opt/homebrew/bin/brew
。
由于 /user/local/bin
目录已经被系统添加到环境变量中,而/opt
没有。因此迁移到 M1 后,有手动添加环境变量的操作。
迁移
1. 从 Intel 版本的 Homebrew 中获取已安装程序列表
借助 brew bundle
命令,我们可以导出已安装程序列表。
1 | brew bundle dump |
文件内容大致如下:
1 | ... |
2. 安装 M1 版本的 Homebrew
参考官方文档,使用下面的命令安装 Homebrew
1 | /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" |
这里,如果曾经用 gnu 的工具包替换系统内置的 bsd 工具包的时候,可能会出现下面这种错误。
1 | stat: cannot read file system information for '%g': No such file or directory |
解决办法也比较简单,借助 whereis
命令找到 stat
工具的位置后,重命名一下就行
3. 在 M1 的 Homebrew 中安装旧的程序列表
这里还是要借助brew bundle
来批量安装
1 | brew bundle install --file Brewfile |
这里也有个坑,由于cask下的程序,已经被迁移助手转移到了当前电脑上,因此Homebrew
无法正常安装这些程序,出现如下错误
1 | Warning: It seems there is already an App at |
解决办法就是借助brew install
命令重新强制安装一下
1 | brew install a b c d --cask --force |
4. 卸载 Intel 版本的 Homebrew
首先,从官方下载卸载脚本
1 | curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/uninstall.sh > uninstall.sh |
给卸载脚本指定 Intel 版本 Homebrew
的路径进行卸载。
1 | /bin/bash uninstall.sh --path=/usr/local |
结语
完结撒花