やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

ラズパイにC# dotnet 5.0 をインストールした

 2021-07-27。かつては手動でインストールしたが、今はどうか。

情報源

 ラズパイ4においてできるだけ簡単にインストールするにはスクリプトを使う方法がいい。

手順

apt(失敗)

wget https://packages.microsoft.com/config/debian/10/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb
sudo apt-get update; \
  sudo apt-get install -y apt-transport-https && \
  sudo apt-get update && \
  sudo apt-get install -y dotnet-sdk-5.0
取得:1 http://ftp.jaist.ac.jp/raspbian buster InRelease [15.0 kB]
取得:2 http://archive.raspberrypi.org/debian buster InRelease [32.6 kB]                                                                          
ヒット:3 https://packages.microsoft.com/debian/10/prod buster InRelease                                                                          
取得:4 http://raspbian.raspberrypi.org/raspbian buster InRelease [15.0 kB]                                                           
取得:5 http://archive.raspberrypi.org/debian buster/main armhf Packages [376 kB]
439 kB を 3秒 で取得しました (143 kB/s)
パッケージリストを読み込んでいます... 完了
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
apt-transport-https はすでに最新バージョン (1.8.2.3) です。
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
  python-colorzero
これを削除するには 'sudo apt autoremove' を利用してください。
アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 0 個。
ヒット:1 https://packages.microsoft.com/debian/10/prod buster InRelease                                                                          
ヒット:2 http://archive.raspberrypi.org/debian buster InRelease                                                                                  
エラー:3 http://ftp.jaist.ac.jp/raspbian buster InRelease                                                                      
  'ftp.jaist.ac.jp' が一時的に解決できません
ヒット:4 http://raspbian.raspberrypi.org/raspbian buster InRelease                               
パッケージリストを読み込んでいます... 完了
W: http://ftp.jaist.ac.jp/raspbian/dists/buster/InRelease の取得に失敗しました  'ftp.jaist.ac.jp' が一時的に解決できません
W: いくつかのインデックスファイルのダウンロードに失敗しました。これらは無視されるか、古いものが代わりに使われます。
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
E: パッケージ dotnet-sdk-5.0 が見つかりません
E: 'dotnet-sdk-5.0' に一致するパッケージは見つかりませんでした
E: 正規表現 'dotnet-sdk-5.0' ではパッケージは見つかりませんでした

 はい、存在しませんね。クソですね。そんなときは以下を参照しろとのこと。

スクリプト(失敗)

wget https://dot.net/v1/dotnet-install.sh
chmod +x dotnet-install.sh
./dotnet-install.sh -c 5.0
dotnet-install: Note that the intended use of this script is for Continuous Integration (CI) scenarios, where:
dotnet-install: - The SDK needs to be installed without user interaction and without admin rights.
dotnet-install: - The SDK installation doesn't need to persist across multiple CI runs.
dotnet-install: To set up a development environment or to run apps, use installers rather than this script. Visit https://dotnet.microsoft.com/download to get the installer.

dotnet-install: Downloading primary link https://dotnetcli.azureedge.net/dotnet/Sdk/5.0.205/dotnet-sdk-5.0.205-linux-arm.tar.gz
dotnet-install: Extracting zip from https://dotnetcli.azureedge.net/dotnet/Sdk/5.0.205/dotnet-sdk-5.0.205-linux-arm.tar.gz
dotnet-install: Adding to current process PATH: `/home/pi/.dotnet`. Note: This change will be visible only when sourcing script.
dotnet-install: Note that the script does not resolve dependencies during installation.
dotnet-install: To check the list of dependencies, go to https://docs.microsoft.com/dotnet/core/install, select your operating system and check the "Dependencies" section.
dotnet-install: Installation finished successfully.
dotnet --version
bash: dotnet: コマンドが見つかりません

 ダメじゃん。

手動(成功)

 結局いままでと同じ。手動でインストールするしかない。ダッサ。

 ファイル入手&展開&パス通し。

wget https://download.visualstudio.microsoft.com/download/pr/f456f253-db24-45ea-9c73-f507f93a8cd2/6efe7bed8639344d9c9afb8a46686c99/dotnet-sdk-5.0.302-linux-arm.tar.gz
OUT=$HOME/root/sys/env/sdk/dotnet/5.0.302
mkdir -p $OUT
tar zxf dotnet-sdk-5.0.302-linux-arm.tar.gz -C $OUT
export PATH=$PATH:$OUT

 パスを永続化するなら以下。

~/.bashrc

OUT=$HOME/root/sys/env/sdk/dotnet/5.0.302
export PATH=$PATH:$OUT

 パスが通っているか確認する。新しく端末を開いて以下コマンドを実行する。

cd ~
dotnet --version
5.0.302

 OK。バージョンが出た。

ドキュメントに騙されまくってイライラ

 さも簡単にインストールできるかのように書いているが、結局、手動でしかインストールできなかった。その分だけ無駄な手順を実行させられたあげく、ページをたらい回しにされて失敗するのだからイライラしまくった。死んでほしい。

ドキュメント改善してくれ

 たのむから以下URLページで、ラズパイ4における個別インストール方法を以下のように書いてほしい。

 Raspberry Pi OSではパッケージマネージャaptを使いますが、バイナリファイルが用意されておりません。また、install dotnet スクリプトを使用する方法でもインストールできません。したがって以下のように手動でインストールします。

wget https://download.visualstudio.microsoft.com/download/pr/f456f253-db24-45ea-9c73-f507f93a8cd2/6efe7bed8639344d9c9afb8a46686c99/dotnet-sdk-5.0.302-linux-arm.tar.gz
OUT=$HOME/root/sys/env/sdk/dotnet/5.0.302
mkdir -p $OUT
tar zxf dotnet-sdk-5.0.302-linux-arm.tar.gz -C $OUT
export PATH=$PATH:$OUT

所感

 面倒だった。