我安装了两个 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
andibrew 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 的信息,单击Open Using 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 替代安装站点的其他贡献者,使用 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 运行没有 arch -x86_64 的 brew,它会抱怨 /usr/local 被保留为 Intel 默认前缀,并且需要使用 /opt/homebrew。因此,我将保留我的两个别名并首先尝试 mbrew,并且仅在本机 brew 失败时才使用 ibrew。