armbian で dotnet を走らせる(開発はしない)
armbian で dotnet を使いたいけど、Microsoft 公式リポジトリには x64 版しか無いのだった。無念。
でも幸いなことに、ARM32/64 用のビルド済みランタイムが用意されている。実機上でソースからビルドしなくても、とりあえず走らせることができる。
下のリンク先に、dotnet-install scripts なるものがあるのでダウンロード。armbian で開発……は現実的じゃないんで、SDK は省略しよう。
落としたら、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.
自己完結にすれば共有ランタイムは必要ないんだけど、ファイル数がめちゃくちゃ増えるので個人的に嫌い。