在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
:arm
ibrew
: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 条评论