はじめに
ゆとり世代の中野です。
今回チャレンジした内容は【環境構築用のスクリプトをApple Siliconでも利用できるようにした話】です。
さっそくチャレンジについて書いていきます。
チャレンジする背景
- Macの環境を自動で構築してくれるスクリプトを作成済み
- 現環境は全てx86_64ベースで作っているがarm64でも使えるようにしたい
チャレンジ内容
- 既存の環境構築用のスクリプトをApple Siliconにも対応させる方法を書く
やり方
知っておきたいこと
- Rosetta2ってなに?
Rosetta 2 ってなに?|M1 Mac ってなに? ぼくにも使える?
Rosetta とは特定のアーキテクチャのバイナリを別のアーキテクチャのバイナリに変換することで互換性を維持する Apple の技術のことです。 2004 年に Macintosh が PowerPC から Intel アーキテクチャに移行したときに使われたのが Rosetta で、2020 年に Intel アーキテクチャから Apple Silicon に移行するために発表されたのが Rosetta 2 です。 ARM Mac の Finder でアプリの情報を確認すると、( Intel ) や ( Universal ) などと書いてあります。 Intel は見た通り x86_64 用のバイナリであることを、Universal は x86_64 バイナリと ARM64 バイナリの両方を含んでいることを示しています。 ( Intel ) の例。 ( Universal
zenn.dev
- Rosetta2のインストールするコマンド
softwareupdate --install-rosetta --agree-to-license- アプリケーションがRosetta2もしくはM1に対応しているかを下記サイトで確認
isapplesiliconready.com
isapplesiliconready.com
- homebrewのパスがx86_64とarm64では違う
Homebrewのパスの差分を吸収する
- .zprofileにhomebrewのパスをx86_64とarm64で切り替えるように設定した
- intel製のMacも利用しているため
# -------------------------------------------------
# アーキテクチャ環境
# -------------------------------------------------
ARCH=$(uname -m)
if [[ $ARCH == arm64 ]]; then
echo "Current Architecture: $ARCH"
eval $(/opt/homebrew/bin/brew shellenv)
elif [[ $ARCH == x86_64 ]]; then
echo "Current Architecture: $ARCH"
eval $(/usr/local/bin/brew shellenv)
fiまとめ
- 抑えておきたいところは2点
- Rosetta2に対応しているものは使える(暫定対応)
- Intel版のMacを使う場合は.zprofileでパスの振り分けを行う
- xcodeのインストールが時間めっちゃかかってたので下記コマンドでログ見てると心が安心するのでおすすめ
tail -f /var/log/install.logさいごに
過不足がある場合はあとから追記します
yutanakano
WEBエンジニア
大阪生まれのゆとり世代です
趣味はバイクでツーリングに行くこと
愛車は Ninja ZX-25R SE KRT EDITION
Expoでプロダクトを作っています
