LoveDuckie

Homebrew and Anaconda: Configuring for Apple M1 and Intel Silicon

Homebrew and Anaconda: Configuring for Apple M1 and Intel Silicon

Homebrew and Anaconda: Configuring for Apple M1 and Intel Silicon

Homebrew and Anaconda: Configuring for Apple M1 and Intel Silicon

Updated 3 years ago
5 Minute(s) to read
Posted 3 years ago Updated 3 years ago 5 Minute(s) to read 295 comments

This is a quick article that will serve as a brain dump for how I've recently configured my /bin/bash profile for using Homebrew Package Manager with both M1 and Intel Silicon (with x86 emulated using Rosetta).

Installation Locations

Depending on which CPU architecture you are installing Homebrew Package Manager with will determine where brew is installed. By default, brew will be installed to the following locations.

M1 Silicon Installation Path

If you are using brew on Apple M1 silicon, then the default installation script will install Homebrew Package Manager to the following paths.

#!/bin/bash
/opt/homebrew/bin
/opt/homebrew/Caskroom

Intel Silicon Installation Path

If you are using Homebrew Package Manager on Intel silicon, or through Rosetta emulation, then you will notice that Homebrew is installed to the following paths when you use the default installation script that is available from the official homepage.

#!/bin/bash
/usr/local/bin/brew
/usr/local/Caskroom

Configuring Bash

Now that we know where brew is installed, we can configure bash to automatically load the relevant shell environment depending on which architecture is being used. This is useful if you have multiple copies of iTerm2 (for example), whereby one copy may be configured to launch with Rosetta emulation. If your Terminal instance (including iTerm2) is launched with Rosetta emulation, it will automatically attempt to use Homebrew at the listed installation path above (under "Intel Silicon"). However, because both installations are at different paths, we need some logic to detect which architecture (emulated or not) is being actively used, so we know which shell environment to load.

Refer to the logic below. It uses a command called "uname" to detect which CPU architecture is actively in use. Based on the resulting value, it will then load the relevant shell environment. x86_64 is considered to be Intel Silicon, and arm64 is considered to be Apple M1.

Homebrew Shell Environment

The snippet below describes the logic for automatically loading Homebrew shell environment depending on the architecture.

#!/bin/bash
if [[ "$(uname -m)" == "x86_64" ]]; then
	echo "Loading: Homebrew (x86)"
	eval "$(/usr/local/bin/brew shellenv)"
    CONDA_BREW_PATH=/usr/local/Caskroom/miniconda
else
	echo "Loading: Homebrew (ARM)"
	eval "$(/opt/homebrew/bin/brew shellenv)"
    CONDA_BREW_PATH=/opt/homebrew/Caskroom/miniconda
fi

Anaconda Shell Environment

The snippet below describes the logic (typically generated by Anaconda) for loading the relevant shell environment.

#!/bin/bash
if [[ "$(uname -m)" == "x86_64" ]]; then
    # >>> conda initialize >>>
    # !! Contents within this block are managed by 'conda init' !!
    __conda_setup="$('/usr/local/Caskroom/miniforge/base/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
    if [ $? -eq 0 ]; then
        eval "$__conda_setup"
    else
        if [ -f "/usr/local/Caskroom/miniforge/base/etc/profile.d/conda.sh" ]; then
            . "/usr/local/Caskroom/miniforge/base/etc/profile.d/conda.sh"  # commented out by conda initialize
        else
            export PATH="/usr/local/Caskroom/miniforge/base/bin:$PATH"  # commented out by conda initialize
        fi
    fi
    unset __conda_setup
    # <<< conda initialize <<<
elif [[ "$(uname -m)" == "arm64" ]]; then
    # >>> conda initialize >>>
    # !! Contents within this block are managed by 'conda init' !!
    __conda_setup="$('/opt/homebrew/Caskroom/miniforge/base/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
    if [ $? -eq 0 ]; then
        eval "$__conda_setup"
    else
        if [ -f "/opt/homebrew/Caskroom/miniforge/base/etc/profile.d/conda.sh" ]; then
            . "/opt/homebrew/Caskroom/miniforge/base/etc/profile.d/conda.sh"  # commented out by conda initialize
        else
            export PATH="/opt/homebrew/Caskroom/miniforge/base/bin:$PATH"  # commented out by conda initialize
        fi
    fi
    unset __conda_setup
    # <<< conda initialize <<<
fi

Configuring iTerm to Launch with Rosetta Emulation

If you are running on Apple M1 silicon, you can still run the same applications with x86 emulation by using Rosetta. You can install Rosetta from the command-line by running the following command.

#!/bin/bash
/usr/sbin/softwareupdate --install-rosetta --agree-to-license

And now you can create a copy of your iTerm installation, and modify the copy to launch with Rosetta emulation. Refer to the screenshots below for greater reference.

A picture of Applications in macOS finder, with a duplicate or copy of iTerm.

A picture of "Applications" in macOS finder, with a duplicate or copy of iTerm.

With your duplicate instance of iTerm, you can then modify the properties so that it launches with Rosetta emulation.

After you've duplicated your iTerm installation and renamed it appropriately, you will then have to modify the properties so that it launches with Rosetta.

After you've duplicated your iTerm installation and renamed it appropriately, you will then have to modify the properties so that it launches with Rosetta.

Additionally, if you want to be able to interchangeably use either Homebrew installations while using one kind of architecture over the other, then you can make use of the following aliases that can be added to your ~/.profile file. It should be noted that this snippet includes support for pyenv, a tool that is used for managing multiple installations of Python on the same machine.

#!/bin/bash
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
alias ibrew='arch -x86_64 /usr/local/bin/brew'
alias mbrew='arch -arm64e /opt/homebrew/bin/brew'

There you have it. You should be able to use Homebrew with both architectures from the same Apple M1 machine.



Comments

Comments

Если вы водите автомобиль с погнутым, обесцвеченным или пришедшим в негодность номерным знаком, вы можете получить его замену в ГИБДД. Скорее всего, вам придется заплатить пошлину и предъявить доказательство того, что вы являетесь владельцем автомобиля.
https://forum.headmusic.ru/profile/ethanhensman65/
Если у вас нет номерного знака, вы можете получить его в местном управлении ГИБДД. Вам нужно будет взять с собой регистрационные документы на автомобиль и свидетельство о страховании. За эту услугу обычно взимается плата.
[url=https://www.poraducto.cz/questions/show/330]Дубликаты гос номеров: условия получения[/url] b0a2bc0

прописка в Москве

гостиничные чеки купить спб

Вы вот только что сдали экзамены в автошколе, и скоро вы получите собственный автомобиль. Естественно, каждому человеку хочется как можно быстрее получить собственный автомобиль и оформить водительские права.
На данном этапе юные автолюбители допускают очень большое количество разнообразных ошибок. Это хорошо, если есть опытный родственник или друг, который подскажет. Но если такого близкого человека у вас нет то, вы можете смело обращаться в официальный сервис «Мерседес-Бенц» за помощью.
Вступите в СРО без риска с минимальными взносами!
Возраст автомобиля
Практически каждый новый водитель старается выбрать что-то из Жигулей. Ну для начала стоит сказать, что эта машина очень дешевая и при этом в любом авто магазине на нее можно ведро запчастей купить за 3 рубля. Но стоит подметить, что данная машина будет очень часто ломаться и проблем с ней будет очень много. Если вы не владеете искусством быстро ремонтировать машины то, данное авто для вас станет настоящим проклятием. Кроме того из средств защиты от ДТП тут только три иконки. А, как нам известно, именно неопытные водители чаще всего страдают в транспортных происшествиях. В практически всех иномарках есть хотя бы примитивная подушка безопасности. Конечно, она полностью не обезопасит вас от аварии, но все же добавит шансов выжить после ДТП. Для начинающего водителя лучше всего покупать недорогую немного подержанную иномарку. К ней и запчасти не очень дорого стоять будут и в случае чего она более безопасная.
Коробка передач
Для новичка очень большую роль играет не только сам автомобиль, но и коробка передач. Так скажем, если вы будите ездить в основном по городу то, лучше взять автоматическую коробку передач. Если же вы хотите научиться чувствовать авто или просто ездить часто и за пределы города то, рентабельней будет приобретать автомобиль с механической передачей. Так же стоит подметить, что для новичка большую роль играют и габариты автомобиля. Так, что если вы новичок покупайте небольшие автомобили.

Правильный выбор
Человек, приобретающий автомобиль Mercedes-Benz, обладает отличным вкусом, потому что это идеальный автомобиль и для новичка, и для опытного водителя. Так как «Мерседес-Бенц» - это символ безупречного качества, самый экономичный и надежный автомобиль на дорогах. Именно его я и хочу приобрести, так как ремонт Mercedes-Benz можно сделать легко в любом автосервисе России. Все виды работ в области сервиса и ремонта Мерседеса на высочайшем уровне выполняют специалисты-профессионалы. Удачи на дорогах!
http://www.mistermigell.ru/post336968247/

Вы вот только что сдали экзамены в автошколе, и скоро вы получите собственный автомобиль. Естественно, каждому человеку хочется как можно быстрее получить собственный автомобиль и оформить водительские права.
На данном этапе юные автолюбители допускают очень большое количество разнообразных ошибок. Это хорошо, если есть опытный родственник или друг, который подскажет. Но если такого близкого человека у вас нет то, вы можете смело обращаться в официальный сервис «Мерседес-Бенц» за помощью.
Вступите в СРО без риска с минимальными взносами!
Возраст автомобиля
Практически каждый новый водитель старается выбрать что-то из Жигулей. Ну для начала стоит сказать, что эта машина очень дешевая и при этом в любом авто магазине на нее можно ведро запчастей купить за 3 рубля. Но стоит подметить, что данная машина будет очень часто ломаться и проблем с ней будет очень много. Если вы не владеете искусством быстро ремонтировать машины то, данное авто для вас станет настоящим проклятием. Кроме того из средств защиты от ДТП тут только три иконки. А, как нам известно, именно неопытные водители чаще всего страдают в транспортных происшествиях. В практически всех иномарках есть хотя бы примитивная подушка безопасности. Конечно, она полностью не обезопасит вас от аварии, но все же добавит шансов выжить после ДТП. Для начинающего водителя лучше всего покупать недорогую немного подержанную иномарку. К ней и запчасти не очень дорого стоять будут и в случае чего она более безопасная.
Коробка передач
Для новичка очень большую роль играет не только сам автомобиль, но и коробка передач. Так скажем, если вы будите ездить в основном по городу то, лучше взять автоматическую коробку передач. Если же вы хотите научиться чувствовать авто или просто ездить часто и за пределы города то, рентабельней будет приобретать автомобиль с механической передачей. Так же стоит подметить, что для новичка большую роль играют и габариты автомобиля. Так, что если вы новичок покупайте небольшие автомобили.

Правильный выбор
Человек, приобретающий автомобиль Mercedes-Benz, обладает отличным вкусом, потому что это идеальный автомобиль и для новичка, и для опытного водителя. Так как «Мерседес-Бенц» - это символ безупречного качества, самый экономичный и надежный автомобиль на дорогах. Именно его я и хочу приобрести, так как ремонт Mercedes-Benz можно сделать легко в любом автосервисе России. Все виды работ в области сервиса и ремонта Мерседеса на высочайшем уровне выполняют специалисты-профессионалы. Удачи на дорогах!
http://www.mistermigell.ru/post336968247/

Hi every one, here every person is sharing these kinds of knowledge, therefore
it's nice to read this web site, and I used to visit this webpage every day.

Лечение алкоголизма в Уфе

Gravatar for Michaeldiple
Michaeldiple
Posted Nov 17, 2022, 6:02 PM (2 years ago)

Luc Shelton &raquo; Homebrew and Anaconda: Configuring for Apple M1 and Intel Silicon
-
https://www.bikemap.net/en/u/stog77781/routes/created/
https://wakatime.com/@irishboy
https://clara.io/user/tor777
https://thecardinalnation.com/forums/users/irishman/
https://www2.thriftyfun.com/_generator/tf_profile.lasso?id=usr61531366&dsk&mode=index
https://bradfordwoods.bubblelife.com/users/stog77781_o565083
https://www.claimajob.com/employers/1496638-irish-game-blog
https://www.porteconomics.eu/member/irishboy/
https://thebloodsugardiet.com/forums/users/irishboy/
https://tinkerine.com/user/irishman

Thanks !

Gravatar for Michaeldiple
Michaeldiple
Posted Nov 17, 2022, 5:50 PM (2 years ago)

Luc Shelton &raquo; Homebrew and Anaconda: Configuring for Apple M1 and Intel Silicon
-
https://politiko.ua/blogpost161152
https://community.clover.com/users/30564/kazik.html
https://regforum.ru/forum/members/208765/#about
https://photobuildings.com/author/10040/
https://git.disroot.org/irishman
https://torgi.gov.ru/forum/user/profile/1700499.page
https://www.anime-planet.com/users/tor777
https://www.sailnet.com/members/irishman7.551055/#about
https://www.tipga.com/about/stog777
https://www.diggerslist.com/irishman/about

Thanks !

Gravatar for Michaeldiple
Michaeldiple
Posted Nov 17, 2022, 4:49 PM (2 years ago)

Luc Shelton &raquo; Homebrew and Anaconda: Configuring for Apple M1 and Intel Silicon
-
https://politiko.ua/blogpost161152
https://community.clover.com/users/30564/kazik.html
https://regforum.ru/forum/members/208765/#about
https://photobuildings.com/author/10040/
https://git.disroot.org/irishman
https://torgi.gov.ru/forum/user/profile/1700499.page
https://www.anime-planet.com/users/tor777
https://www.sailnet.com/members/irishman7.551055/#about
https://www.tipga.com/about/stog777
https://www.diggerslist.com/irishman/about

Thanks !