我如何运行两个独立的HomeBREW安装? [英] How can I run two isolated installations of Homebrew?
问题描述
我希望在Apple Silicon Mac上同时安装和运行两个版本的Homebrew:ARM64版本和在Rosetta 2下运行的Intel版本。
Iknow我可以在任何BREW命令前面加上arch --x86_64
,以便为该命令模拟英特尔,但这可能会导致您已经为ARM64构建的依赖关系的公式发生冲突。例如:
Error: gnupg dependencies not built for the x86_64 CPU architecture:
pkg-config was built for arm64
gettext was built for arm64
readline was built for arm64
openssl@1.1 was built for arm64
如何安装和运行两个独立的Homebrew版本(一个用于本机ARM64,另一个用于模拟英特尔),同时使它们各自安装的公式和依赖项保持独立?
推荐答案
在
/opt/homebrew
中在Apple Silicon上本地安装HomeBREW:mkdir homebrew && curl -L https://github.com/Homebrew/brew/tarball/master | tar xz --strip 1 -C homebrew
将英特尔模拟的Homebrew安装为默认
/usr/local
:arch --x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
如果您尚未安装Rosetta 2,则需要首先运行
softwareupdate --install-rosetta
。为英特尔自制软件创建别名。我叫我的
brow
是因为O代表老。但是,嘿,你做你自己的事吧。在
~/.zshrc
(或您的外壳程序)中添加:alias brow='arch --x86_64 /usr/local/Homebrew/bin/brew'
将Arm Homebrew添加到您的路径中。
在
~/.zshrc
(或您的外壳程序)中添加:# Homebrew on Apple Silicon path=('/opt/homebrew/bin' $path) export PATH
如果您仍在
bash
,则为PATH=/opt/homebrew/bin:$PATH
确认
which brew
应返回/opt/homebrew/bin/brew
brew --prefix
应返回/opt/homebrew
which brow
应返回brow: aliased to arch --x86_64 /usr/local/Homebrew/bin/brew
brow --prefix
应返回/usr/local
如果您在两个自制软件中安装了相同的命令,它将默认为Apple Silicon(/opt/homebrew/
),因为我们在路径中预先安装了该命令。要覆盖,请运行带有完整路径(/usr/local/bin/youtube-dl
)的命令,或覆盖一个命令(PATH=/usr/local/bin youtube-dl
)的PATH
。
我还在.zshrc
(alias ib='PATH=/usr/local/bin'
)中创建了另一个方便的别名,这样我就可以在任何Homebrew安装的命令前面加上ib
,强制使用该命令的英特尔版本:
~ ▶ which youtube-dl
/opt/homebrew/bin/youtube-dl
~ ▶ ib which youtube-dl
/usr/local/bin/youtube-dl
如果您希望将Intel作为默认brew
,请将/opt/homebrew/bin
添加到路径的结尾,而不是开头。
这篇关于我如何运行两个独立的HomeBREW安装?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!