hunamizawa’s blog

無い物は作りたい人のメモ帳

armbian で dotnet を走らせる(開発はしない)

armbian で dotnet を使いたいけど、Microsoft 公式リポジトリには x64 版しか無いのだった。無念。

でも幸いなことに、ARM32/64 用のビルド済みランタイムが用意されている。実機上でソースからビルドしなくても、とりあえず走らせることができる。

下のリンク先に、dotnet-install scripts なるものがあるのでダウンロード。armbian で開発……は現実的じゃないんで、SDK は省略しよう。

dotnet.microsoft.com

落としたら、root で次のコマンドを実行する。

mkdir /usr/local/bin/dotnet-runtime
./dotnet-install.sh --runtime dotnet --install-dir /usr/local/bin/dotnet-runtime
./dotnet-install.sh --channel Current --runtime dotnet --install-dir /usr/local/bin/dotnet-runtime
ln -s dotnet-runtime/dotnet dotnet

これで LTS 版(この記事を書いたときは 2.1)と、最新の安定版が手に入る。同じディレクトリに複数のバージョンをインストールして同居させるのが正しい使い方。

# dotnet --list-runtimes
Microsoft.NETCore.App 2.1.13 [/usr/local/bin/dotnet-runtime/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 3.0.0 [/usr/local/bin/dotnet-runtime/shared/Microsoft.NETCore.App]

実は 3.x のランタイムでは 2.x のバイナリを実行できないので、使いたいバージョンは全てインストールする必要がある。必要なバージョンのランタイムが見つからないと、こんなふうに怒られる。後方互換性ないのか……

It was not possible to find any compatible framework version
The specified framework 'Microsoft.NETCore.App', version '2.1.0' was not found.
  - The following frameworks were found:
      3.0.0 at [/usr/local/bin/dotnet-runtime-3.0.0-linux-arm/shared/Microsoft.NETCore.App]

You can resolve the problem by installing the specified framework and/or SDK.

自己完結にすれば共有ランタイムは必要ないんだけど、ファイル数がめちゃくちゃ増えるので個人的に嫌い。