我安装了两个版本的brew,一个是使用Rosetta2运行的Intel版本,安装在/usr/local/bin目录下,另一个是原生运行的Arm版本,安装在/opt/homebrew/bin目录下。现在一切都正常工作,我不需要使用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替代安装站点的方法,
使用iTerm2而不需要打开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'
export PATH="/opt/homebrew/bin:/opt/homebrew/opt:$PATH"
编辑
时间过去了,我根据Fernando García Redondo的观察,将架构更改为arm64e。现在关于不支持Arm架构的警告已经消失了,Rust和Go可以顺利安装,而且无需从源代码编译。我猜Homebrew的好人们在圣诞节期间努力工作。谢谢!
编辑于2月21日
Homebrew团队宣布他们支持Apple Silicon。所以我想知道是否可以删除我的别名,只使用brew来为Apple Silicon安装。简短的答案是否定的!
如果你在/usr/local
下运行brew而没有使用arch -x86_64,它会抱怨/usr/local
被保留为Intel的默认前缀,需要使用/opt/homebrew
。所以我将保留我的两个别名,首先尝试mbrew,只有在本机brew失败时才使用ibrew。
arch -x86_64
时,单行安装命令会失败并显示相同的错误信息(“在 M1 上不支持”)。有什么提示吗?我似乎是唯一遇到这个问题的人。另外,我尝试使用 Rosetta 运行终端(结果相同),而且我确实已经安装了 Rosetta。任何帮助都将不胜感激! - flypenguinbash
,然后它就可以工作了。只用了我三天的时间,也许对其他人有所帮助 :) - flypenguinsoftwareupdate --install-rosetta
吗?如果是的话,你尝试过在此之后重启终端或者机器吗?可能macOS在你这样做之前无法识别它现在可以运行x86_64代码。 - Nathan2055错误:无法在 ARM 默认前缀(/opt/homebrew)下安装 Rosetta 2! 要在 ARM 下重新运行,请使用: arch -arm64 brew install ... 要在 x86_64 下安装,请将 Homebrew 安装到 /usr/local。
这个方法解决了我的问题:arch -x86_64 /usr/local/Homebrew/bin/brew install node@10
- Jarzka