ラズパイにC#の開発環境を構築してみた

## ゴール

ラズパイを使ってC#の学習を行うために、ラズパイにC#の開発環境を構築する。

## やってみた結果

ラズパイにC#の開発環境を構築できた!!　

公式の説明にC#の開発環境である.NET SDKのインストール方法が複数紹介されており、3つの方法を試したが2つの方法で失敗、最後の方法で成功した。

## 開発環境

- Raspberry Pi 4 Model B
- Debian 12.9
- VScode

## 事前準備

- VScodeのインストール

## やったこと

### はじめに

C#は.NET環境で動作する言語であり、.NET Runtime または.NET SDKいずれかのコンポーネントが必要となる。.NET Runtimeは、.NETアプリケーションを実行するために必要なコンポーネント。NET SDKは、.NETアプリケーションを開発するために必要なツールやライブラリをまとめたパッケージであり、.NET Runtimeも.NET SDKパッケージに含まれている。C#の開発環境を構築することが目的なので.NET SDKをインストールする。ラズパイにインストールするので、公式の記事（https://dotnet.microsoft.com/ja-jp/learn/dotnet/hello-world-tutorial/intro）の、linuxにインストールする方法を参考に環境構築を行った。

私は.NET SDKのインストールで詰まったので、その点について説明する。

### .NET SDKのインストール

C#の動作環境を作るために、まず.NET SDKのインストールを行なった。

３つの方法を試し、その方法と結果は以下のようになった。

- [スクリプトでのインストール](https://learn.microsoft.com/ja-jp/dotnet/core/install/linux-scripted-manual#scripted-install) → 成功
- [Snapを使用して.NET	SDK をインストールする](https://learn.microsoft.com/ja-jp/dotnet/core/install/linux-snap-sdk)　→ 失敗
- [Debian12にaptを使用してインストール](https://learn.microsoft.com/ja-jp/dotnet/core/install/linux-debian?tabs=dotnet9)　→	失敗

この章では、成功した「スクリプトでのインストール」の説明だけ行う。失敗した２つの方法は参考として記事の最後で説明する。

とはいえ、成功した「スクリプトでのインストール」方法はリンクに書いてあるとおりに実行することでインストールに成功したので説明することは殆どない。ただし１点、インストールするバージョンは.NET 9.0 SDKではなく、長期サポートの.NET 8.0 SDKを選択した。

## 参考：.NET SDKのインストール失敗事例

### Snapを使用したインストール

この方法では以下の環境が前提条件となる。

- snapをサポートするLinuxディストリビューション。
- snapd	snapデーモン。

ラズパイのディストリビューションはDebianで、snapをサポートするLinuxディストリビューションである。しかし、snapdは最初からインストールされていない。そのため、インストールをする必要がある。snapdは動作確認まで行い、確実にインストールされていることを確認した。[公式の説明](https://learn.microsoft.com/ja-jp/dotnet/core/install/linux-snap-sdk#1-install-the-sdk)に則り、terminalで

```bash
sudo snap install dotnet-sdk --classic --channel 08/stable
```

を実行し、.NET
version8をインストールしようとしたが、以下のようなエラーが表示された。

error: snap "dotnet-sdk" is not available on stable but is
available to install on the following channels:

```
error: snap "dotnet-sdk" is not available on stable but is
      available to install on the following channels:
      
      edge      snap install --edge dotnet-sdk
      
      Please be mindful pre-release channels may include features not completely
      tested or implemented. Get more information with 'snap info dotnet-sdk'.
```

gitに同じエラーを経験した人のスレッド（[dotnet-sdk is not available on channel 5.0 or latest/stable #22956](https://github.com/dotnet/docs/issues/22956)）があったが、解決されていなさそうだったので中断した。

### Debian12にaptを使用してインストール

debianは12であることを確認した。[公式の説明](https://learn.microsoft.com/ja-jp/dotnet/core/install/linux-debian?tabs=dotnet9#debian-12)にあるとおりに以下のインストール手順を実行した。

1. MicrosoftのパッケージリポジトリをDebian12に追加
2. aptを利用したSDK	のインストール

しかし、実行結果はエラーとなり、以下のような実行結果になった。
トラブルシューティングの見出しがあったので、試したが結果は同じだった。

```
ヒット:1 http://deb.debian.org/debian bookworm InRelease 
ヒット:2 http://deb.debian.org/debian-security bookworm-security InRelease
ヒット:3 http://deb.debian.org/debian bookworm-updates InRelease
ヒット:4 https://packages.microsoft.com/debian/12/prod bookworm InRelease
ヒット:5 http://archive.raspberrypi.com/debian bookworm InRelease
パッケージリストを読み込んでいます...
完了

パッケージリストを読み込んでいます...
完了

依存関係ツリーを作成しています...
完了

状態情報を読み取っています...
完了

E:
パッケージ
dotnet-sdk-8.0
が見つかりません

E:
'dotnet-sdk-8.0' に一致するパッケージは見つかりませんでした

E:
正規表現
'dotnet-sdk-8.0'
ではパッケージは見つかりませんでした
```


## おわりに
初めての記事です。
温かい目で見ていただけると助かります。
どなたかの助けになれば幸いです。