在arm架构的mac电脑已经趋于成熟的今天,为什么还要开历史倒车安装x86版本的Homebrew?
正常场景肯定不需要,但是实在是有一些软件不用不行,比如game-porting-toolkit,本身就是用来运行Windows游戏的,必须使用x86兼容模式。
安装 Rosetta
如果已经安装过Rosetta,请跳过这一步。
Rosetta 2是一个必要条件,在终端执行安装:
softwareupdate --install-rosetta
安装x86版本Homebrew
arch -x86_64 /bin/bash -c "$(curl -fsSL https://gitee.com/ineo6/homebrew-install/raw/master/install.sh)"
和普通命令的区别是开头加了arch -x86_64,用来标记通过兼容模式运行安装脚本。这样安装之后的才是x86版本。
接下来检查安装是否正确,在终端执行:
which brew
如果看到如下内容才说明安装完成:
/usr/local/bin/brew
安装arm版Homebrew
如果通过默认脚本安装过Homebrew,则可以跳过本步骤。
/bin/bash -c "$(curl -fsSL https://gitee.com/ineo6/homebrew-install/raw/master/install.sh)"
实现共存
方案1
这个方案的特点是:需要进入x86兼容模式,即在终端设置环境变量:arch。
首先,写入切换脚本,仅需要执行一次:
cat << 'EOF' >> ~/.zshrc
if [ "$(arch)" = "arm64" ]; then
eval "$(/opt/homebrew/bin/brew shellenv)"
else
eval "$(/usr/local/bin/brew shellenv)"
fi
EOF
# 生效
source ~/.zshrc
后续使用时仅需要设置arch,请注意arm版本的Homebrew不需要额外设置,终端打开后就是了。
想进入x86模式,请执行:
arch -x86_64 zsh
注意,设置之后在关闭终端之前是一直有效的,关闭终端即退出
方案2
既然我们安装了两个版本的Homebrew,但是只有一个brew能生效的话,我们是不是可以设置两个命令呢?
答案当然是肯定的,我们可以把abrew分配成arm版本的Homebrew,ibrew定义为x86版本的命令。
写入别名脚本,同样也只需要设置一次:
cat << 'EOF' >> ~/.zshrc
alias abrew='arch -arm64 /opt/homebrew/bin/brew'
alias ibrew='arch -x86_64 /usr/local/bin/brew'
EOF
# 生效
source ~/.zshrc
使用的时候按需执行即可:
abrew:armibrew:x86
举个栗子,本来命令是:brew install some-package,我们如果要以x86版本执行,则使用ibrew install some-package,如果是arm,则是abrew install some-package。
简而言之就是用abrew或者ibrew替换原本的brew。
版权声明:本文为原创文章,版权归 neo 所有。
本文链接:https://idayer.com/homebrew-x86-arm/
本作品采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可。

0 条评论