M1で.NET Core3.1 と Node.js 12.16.0 を動かしたい

ここ2ヶ月くらいで嵌った話

ここ2ヶ月くらいで嵌ったことで覚えてること

1. M1で.NETCore 3.1 を実行する

嵌りどころ

  • .NET 6 はarmがサポートされているが、 .NET Core 3.1がサポートされていないためRosetta2経由でsetupしたがいろいろ手間がかかる

    • 厳密には Linux+armは.NET Core 3.1がサポートされている
  • Rosetta2 + brew経由で.NET 6をinstallした後 .NETCore 3.1 をinstallするがその際にlinkがいい感じに設定されないのでlinkを設定しなおす必要がある

  • Rosetta2 + brew経由で .NET Core3.1をinstallしたところdotnet buildでエラーが発生してしまう

    • 目ぼしい解決方法が見つからない・・・

解決手法

  # 実行したコマンド
  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を使うようにしとく
    • それでも時間がかかる・・

結論

  • 古い環境は捨て去って新しいやつを使いましょう
この記事をシェア

弊社では、一緒に会社を面白くしてくれる仲間を募集しています。
お気軽にお問い合わせください!