我安装了两个 brew 实例,使用 Rosetta2 运行并安装到 /usr/local/bin 的 Intel 版本和本机运行并安装到 /opt/homebrew/bin 的 Arm 版本。现在一切正常,我不必使用 Rosetta 启动 iTerm。
我有这些别名来访问这两个版本。
ibrew='arch -x86_64 /usr/local/bin/brew'
mbrew='arch -arm64e /opt/homebrew/bin/brew'
我的路径中首先有本机版本:
path=( /opt/homebrew/bin /opt/homebrew/opt /usr/local/bin /usr/bin /bin /usr/sbin /sbin /Library/Apple/usr/bin )
现在我可以试试mbrew search 和mbrew install。如果他们工作,我很高兴使用本机程序。例如:
mbrew install ag
如果brew 失败,我会尝试从源代码构建,并使用详细输出,例如
mbrew install -sv rust
请注意,这需要一段时间,但仍可能失败。
如果它仍然失败,(并且mbrew install -sv go 导致我出现分段错误)我有两个选择。使用 ibrew search 和 ibrew install 来获取 Intel 版本,或检查详细输出并查找问题相关性。在某些情况下,依赖项上的 install -s 足以让本机 brew 工作。
我必须强调,原生 brew 总是会打印此警告
Warning: You are running macOS on a arm64 CPU architecture.
We do not provide support for this (yet).
Reinstall Homebrew under Rosetta 2 until we support it.
所以请自行决定。
为了完整起见,假设您安装了 iTerm2、Rosetta2 和 Xcode 命令行工具,我这样做是为了在 Rosetta 下安装 brew(感谢所有在我之前在此页面上发布过的人):
- 将已安装的 iTerm2.app 应用程序复制到 iRosetta2.app
- 按 command+I 以获取信息以获取 iRosetta.app,单击 使用 Rosetta2 打开
- 运行 iRosetta2 并从 https://brew.sh 使用此命令
像这样
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)
alias ibrew='arch -x86_64 /usr/local/bin/brew' # put this in ~/.zshrc
我这样做是为了安装本机 brew,取自 Stack Overflow 和 Homebrew alternative installation site 的其他贡献者,使用 iTerm2 而不使用 Open Using Rosetta2
mkdir ~/homebrew
curl -L https://github.com/Homebrew/brew/tarball/master | tar xz --strip 1 -C homebrew
sudo mv ~/sudo mv homebrew /opt
mbrew='arch -arm64e /opt/homebrew/bin/brew' # for .zshrc
export PATH="/opt/homebrew/bin:/opt/homebrew/opt:$PATH" # also for .zshrc
编辑
时间过去了,我根据 Fernando García Redondo 的观察将架构更改为 arm64e。现在关于不支持 Arm 架构的警告已经消失,Rust 和 Go 安装时出现问题并且没有从源代码编译。我认为 Homebrew 的好人在圣诞节期间一直在努力工作。谢谢!
2 月 21 日编辑
Homebrew 团队宣布他们支持 Apple 芯片。所以我想知道我是否可以删除我的别名并只使用 brew 来安装 Apple 芯片。最简洁的答案是不!如果您从 /usr/local 运行 brew 而不使用 arch -x86_64,它会抱怨 /usr/local 被保留为 Intel 默认前缀,并且需要使用 /opt/homebrew。所以我会保留我的两个别名并首先尝试 mbrew 并且仅在原生 brew 失败时使用 ibrew。