Возникли проблемы с настройкой среды и Homebrew на новом MacBook Pro M1? Если вы один из первых, кто получил новый Apple Silicon Mac M1 только для того, чтобы обнаружить, что Homebrew и многие другие собственные терминальные приложения еще не поддерживают новую архитектуру ARM, вы будете счастливы узнать, что есть довольно простой обходной путь.

Если сообщения вашего терминала выглядят примерно так…

Or …

Это означает, что пора применить этот простой обходной путь.

Давай начнем

Во-первых, важно отметить, что при работе с Homebrew или большинством других приложений в этом отношении вы можете по большей части обойтись без успешных команд, просто поставив им перед ними arch -x86_64 в своем терминале.

arch -x86_64

Если вы помните, что перед каждой командой терминала нужно начинать с arch -x86_64, это может очень быстро стать раздражающе повторяющимся. К счастью, есть способ получше.

Легкий путь:

Это включало установку чего-то под названием Rosetta 2. Что такое Rosetta 2? Это слой перевода в macOS. Big Sur запускает приложения, скомпилированные для набора микросхем Intel. Rosetta 2 позволяет Mac с микросхемой Apple использовать приложения, созданные для Mac с процессором Intel. Раньше макинтоши работали на чипах Intel, прежде чем они начали создавать свои собственные чипы для повышения производительности. Учитывая, что приложения Intel не оборудованы для работы на Apple Silicon, эмулятор Rosetta 2 будет иметь решающее значение.

Итак, давайте продолжим и установим этот переводчик для работы в фоновом режиме с ВСЕМИ командами терминала, не задумываясь об этом. (Подсказка: это включает запуск Россеты на совершенно новом терминале).

Шаг 1

Создайте копию своего терминального приложения. Перейдите в Приложения ›Утилиты. Затем дважды щелкните папку терминала и нажмите дублировать.

Затем щелкните правой кнопкой мыши новую копию терминала и нажмите переименовать. Переименуйте это новое приложение терминала в Терминал x86. Вы можете переименовать его во что угодно, но суть в том, чтобы сделать его узнаваемым по исходному приложению терминала.

Шаг 2

Давайте установим новый терминал по умолчанию для запуска Россета 2 в фоновом режиме со всеми вашими командами терминала.

Щелкните правой кнопкой мыши новое приложение Терминал x86 и выберите Получить информацию.

Установите флажок Открыть с помощью Rosetta. Теперь этот терминал будет открываться с Rosetta каждый раз.

Не видите этот флажок? Возможно, вам сначала потребуется установить Rosetta 2. Запустите этот код в своем родном терминале. Вы можете узнать больше об установке Rosetta здесь или в Apple Docs.

/usr/sbin/softwareupdate — install-rosetta

Шаг 3

Все готово! Вы можете установить Homebrew и запускать все приложения так же, как и раньше. Как будто ничего не произошло (кроме повышения производительности M1!)

Идите и добавьте его в новый дом на своей док-станции. Таким образом вы будете каждый раз открывать правильный терминал. Давайте представим, что оригинального терминала никогда не существовало (пока).

Что нельзя перевести с помощью Rosetta?

Rosetta может переводить большинство приложений на базе Intel, включая приложения, содержащие JIT-компиляторы. Однако Rosetta не переводит следующие исполняемые файлы:

  • Расширения ядра
  • Приложения виртуальных машин, которые виртуализируют компьютерные платформы x86_64

Rosetta переводит все x86_64 инструкции, но не поддерживает выполнение некоторых новых наборов инструкций и функций процессора, таких как векторные инструкции AVX, AVX2 и AVX512. Если вы включаете эти новые инструкции в свой код, выполняйте их только после проверки их доступности.

Подробнее об ограничениях можно прочитать здесь.

Это решение работает до тех пор, пока Homebrew не будет обновлен для поддержки ARM и Apple Silicone.