I've recently upgraded to an M1 Mac because Black. Magic. Fuckery.
Nonetheless, I required some command line applications which are not yet available for ARM architectures.
First, make sure you have Rosetta 2 installed:
usr/sbin/softwareupdate --install-rosetta --agree-to-license.
Individual command line tools can be emulated by adding
arch -x86_64 to the beginning of the command. However, I wanted a complete emulated shell where everything gets emulated and executed in x86.
For that, I required a Homebrew installation with the corresponding x86 apps. Consequently, I wanted to have two environments which are somewhat seperated – having their own binaries and libraries.
1) Create a copy of the terminal of your choice (I'm using iTerm). I renamed it to "iTerm-x86".
2) Right click the app and select "Get Info". Select "Open using Rosetta".
3) Start the new Terminal application. The Terminal is now running in the emulated x86 environment and requires a new Homebrew installation.
4) Run the script from brew.sh. It will install Homebrew for the corresponding architectures. Homebrew will use different directories for its binaries (
/opt/homebrew for ARM).
5) Therefore, you want your shell to load the correct
$PATH based on your Terminal app.
Add the following snippet to your
.zshenv in your home directory.
The snippet checks the architecture (ARM or the emulated x86?), adds the path for the
brew binary and runs
eval $(brew shellenv) which then sets the correct Homebrew paths.