M1で.NET Core3.1 と Node.js 12.16.0 を動かしたい
2022年 06月 06日 月曜日
ここ2ヶ月くらいで嵌った話
ここ2ヶ月くらいで嵌ったことで覚えてること
1. M1で.NETCore 3.1 を実行する
嵌りどころ
- 
.NET 6はarmがサポートされているが、.NET Core 3.1がサポートされていないためRosetta2経由でsetupしたがいろいろ手間がかかる- 厳密には Linux+armは.NET Core 3.1がサポートされている
 
- 厳密には Linux+armは
- 
Rosetta2 + brew経由で .NET 6をinstallした後 .NETCore 3.1 をinstallするがその際にlinkがいい感じに設定されないのでlinkを設定しなおす必要がある
- 
Rosetta2 + brew経由で .NET Core3.1をinstallしたところdotnet buildでエラーが発生してしまう- 目ぼしい解決方法が見つからない・・・
 
解決手法
- https://github.com/dotnet/sdk をclone して自前でinstallする
  # 実行したコマンド
  cd ~/git/github
  git clone [email protected]:dotnet/sdk.git
  cd sdk
  git checkout v3.1.419
  ./build.sh
  tee ~/.zshrc  <<'EOF'
  # switch arch path
  arch=`uname -m`
  if [ "$arch" = "x86_64" ]; then
    export PATH="/opt/homebrew/bin:$PATH"
    export PATH="/usr/local/bin/:$PATH"
    # dotnet core 3.1 is not supported by arm
    export PATH="/dotnet-sdk-clone-full-path/git/github/sdk/.dotnet:$PATH"
  else
    export PATH="/opt/homebrew/bin:$PATH"
  fi
  EOF
2. M1で、Node 12.16.0 を動かす
嵌りどころ
- Node.jsのversionが古いとarmよりもx64のアーキテクチャで動かした方が早い
解決手法
- Rosetta2経由でNode.jsを使うようにしとく
- それでも時間がかかる・・
 
結論
- 古い環境は捨て去って新しいやつを使いましょう
この記事をシェア