.NET 5.0 SDK(RC2)をRaspberry Piで動かしてみた

ALGYANイベントの「.NET 5 技術セミナー」で登壇する予定です。

algyan.connpass.com

予習としてRaspberry Piに.NET 5.0 SDK(RC2)をインストールして動くか確認することにしました。

環境

手元にあるRasPi4に、最新のRaspberry Pi OSを入れます。

f:id:matsujirushix:20201020205742p:plain

インストール

.NET 5は、ここからダウンロードできます。

dotnet.microsoft.com

現時点の最新はv5.0.0-rc.2でした。

Linuxへのインストールは.NET 5.0.0 RC 2 install instructionsに書かれています。Snapを使う手順、deb/rpmパッケージを使う手順、バイナリを手作業で配置する手順が用意されていました。

deb/rpmパッケージを使うのが簡単かな?と思い、手順に沿って実行します。

$ mkdir $HOME/dotnet_install && cd $HOME/dotnet_install
$ curl -H 'Cache-Control: no-cache' -L https://aka.ms/install-dotnet-preview -o install-dotnet-preview.sh
$ sudo bash install-dotnet-preview.sh

f:id:matsujirushix:20201020094332p:plain

おふっ、インストールスクリプトがRaspbianに対応していないようですorz

気を取り直して、バイナリを手作業で配置する手順に変更!
ARM32向けバイナリをwgetでダウンロードして解凍、PATHを設定します。

$ wget https://download.visualstudio.microsoft.com/download/pr/068ebc6e-4a1d-45ec-a766-733a142f2839/e0da4c731c943ca2b267c15edb565108/dotnet-sdk-5.0.100-rc.2.20479.15-linux-arm.tar.gz
$ mkdir -p $HOME/dotnet && tar zxf dotnet-sdk-5.0.100-rc.2.20479.15-linux-arm.tar.gz -C $HOME/dotnet
$ export PATH=$PATH:$HOME/dotnet

実行

dotnetコマンドが動くか確認します。

$ dotnet --info

f:id:matsujirushix:20201020131303p:plain

なんだか良さそう♪

consoleプロジェクトを作成して、実行してみます。

$ dotnet new console -o myApp
$ cd myApp
$ dotnet run

f:id:matsujirushix:20201020161727p:plain

エラーが発生しました...orz
A fatal error occurred. The required library libhostfxr.so could not be found.

どうやら、環境変数の設定が不足しているようです。(Microsoft Docsを参考

DOTNET_ROOT環境変数を設定して、実行してみます。

$ export DOTNET_ROOT=$HOME/dotnet

f:id:matsujirushix:20201020162356p:plain

動いたー!

まとめ

  • RasPiにはdeb/rpmパッケージを使う手順はダメだった。(install-dotnet-preview.shが対応していない。)
  • 下記手順で、RasPiで.NET 5.0 SDK(RC2)がインストールできた。
$ wget https://download.visualstudio.microsoft.com/download/pr/068ebc6e-4a1d-45ec-a766-733a142f2839/e0da4c731c943ca2b267c15edb565108/dotnet-sdk-5.0.100-rc.2.20479.15-linux-arm.tar.gz
$ mkdir -p $HOME/dotnet && tar zxf dotnet-sdk-5.0.100-rc.2.20479.15-linux-arm.tar.gz -C $HOME/dotnet
$ export PATH=$PATH:$HOME/dotnet
$ export DOTNET_ROOT=$HOME/dotnet