Snap を使用.NET SDK をインストールする

この記事では、.NET SDK スナップ パッケージをインストールする方法について説明します。 .NET SDK スナップ パッケージは、Canonical によって提供および管理されます。 Snap は、Linux ディストリビューションに組み込まれているパッケージ マネージャーに代わる優れた方法です。

Snap は、さまざまな Linux ディストリビューションで機能するアプリとその依存関係のバンドルです。 Snap は、Snap Store で見つけてインストールできます。 Snap の詳細については、「 はじめに」を参照してください。

重要

Snap を使用して.NETをインストールする場合は、Snap を使用してすべての.NETインストールを管理します。 パッケージ マネージャーやスクリプトインストールなどの他のインストール方法と Snap を混在させないでください。これは、混合方法によって競合が発生する可能性があるためです。

注意事項

.NETのスナップ インストールでは、.NET ツールの実行に問題が発生する可能性があります。 .NET ツールを使用する場合は、dotnet-install スクリプトまたは特定の Linux ディストリビューションのパッケージ マネージャーを使用して.NETをインストールすることをお勧めします。

snap を使用して.NETをインストールすると、dotnet watch コマンドが機能しないという既知の問題です。

.NET ツールまたは dotnet watch コマンドを使用する場合は、dotnet-install スクリプトを使用して.NETをインストールすることをお勧めします。

前提条件

  • Snap をサポートする Linux ディストリビューション。
  • スナップ デーモン snapd

Linux ディストリビューションには既に Snap が含まれている可能性があります。 ターミナルから snap を実行して、コマンドが機能するかどうかを確認してください。 サポートされている Linux ディストリビューションのリストと Snap のインストール方法については、snapd のインストールに関するページを参照してください。

.NET リリース

Microsoft .NETは、長期サポート (LTS) と Standard Term Support (STS) の 2 つの異なるサポート ポリシーの下で公開しています。 すべてのリリースの品質は同じです。 唯一の違いは、サポート期間の長さです。 LTS リリースでは、3 年間、無料サポートとパッチを利用できます。 STS リリースでは、2 年間無料のサポートとパッチが提供されます。 詳細については、「.NET サポート ポリシー」を参照してください。

現在 Microsoft でサポートされている.NETのバージョンは次のとおりです。

  • 10.0 (LTS) - サポートは 2028 年 11 月 14 日に終了します
  • 9.0 (STS) - サポートは 2026 年 11 月 10 日に終了します。
  • 8.0 (LTS)— 2026 年 11 月 10 日にサポートが終了します。

.NETをビルドしてリリースするその他のエンティティでは、さまざまなサポート ポリシーが導入される場合があります。 .NETがどのようにサポートされているかを理解するには、必ず確認してください。

1.SDK をインストールする

.NET SDK をインストールするには、バージョン固有のスナップ パッケージ識別子を使用します。この方法では、複数の SDK バージョンをサイド バイ サイドでインストールして管理できるためです。 たとえば、.NET 8 には dotnet-sdk-80、.NET 10 にはdotnet-sdk-100を使用します。 SDK には、SDK にバージョン管理された ASP.NET Core ランタイムと .NET ランタイムの両方が含まれています。 この記事では、.NET 10 SDK スナップ パッケージを使用します。別のパッケージを使用している場合は、代わりに使用します。

ヒント

Snapcraft .NET SDK パッケージ ページ (.NET 8.NET 9.NET 10) には、Snapcraft と .NET のインストール方法に関する配布固有の手順が含まれています。

  1. ターミナルを開きます。

  2. snap install を使用して、.NET SDK スナップ パッケージをインストールします。

    次のコマンドは SDK 10 .NETインストールします。

    sudo snap install dotnet-sdk-100
    

次の表に、インストールできる .NET SDK スナップ パッケージの一覧を示します。

.NET バージョン Snap パッケージ
10 (LTS) dotnet-sdk-100
9 (STS) dotnet-sdk-90
8 (LTS) dotnet-sdk-80

2. dotnet コマンドをマップする

Snap ではバージョン管理されていない dotnet コマンドは作成されないため、シンボリック リンクを作成して、システム全体 dotnet 使用できるようにします。 このリンクは、 dotnet コマンドをこの特定の Snap インストールにマップする場合にのみ作成します。 別の方法ですでに .NET をインストールしている場合は、このリンクを作成すると、そのマッピングが上書きされます。

/usr/local/bin/dotnet既に存在する場合は、リンクを作成する前に削除してください。

sudo ln -s /snap/dotnet-sdk-100/current/usr/bin/dotnet /usr/local/bin/dotnet

3.インストール場所をエクスポートする

シェル プロファイルでDOTNET_ROOT環境変数を構成します。ツールはそれを使用して、.NETがインストールされている場所を特定するためです。 スナップ インストールでは、この変数は自動的に設定されません。 パスは次の形式を使用します: /snap/{package}/current/usr/lib/dotnet

export DOTNET_ROOT=/snap/dotnet-sdk-100/current/usr/lib/dotnet

100は、.NET 8 の80や、.NET 9 の90など、インストールした SDK バージョンに置き換えます。

環境変数を永続的にエクスポートする

上記の export コマンドは、コマンドを実行したターミナル セッションの環境変数のみを設定します。

シェル プロファイルを編集して、コマンドを永続的に追加することができます。 Linux ではさまざまなシェルを使用でき、それぞれに異なるプロファイルがあります。 次に例を示します。

  • Bash シェル: ~/.bash_profile~/.bashrc
  • Korn シェル: ~/.kshrc または .profile
  • Z シェル: _~/.zshrc* または .zprofile

シェルの適切なソース ファイルを編集し、インストールされている .NET バージョンのエクスポート コマンドを追加して、変更を保存します。

たとえば、 export DOTNET_ROOT=/snap/dotnet-sdk-100/current/usr/lib/dotnetと指定します。

4..NET CLI を使用する

ターミナルを開き、 dotnet コマンドを実行します。

dotnet

次の出力が表示されます。

Usage: dotnet [options]
Usage: dotnet [path-to-application]

Options:
  -h|--help         Display help.
  --info            Display .NET information.
  --list-sdks       Display the installed SDKs.
  --list-runtimes   Display the installed runtimes.

path-to-application:
  The path to an application .dll file to execute.

.NET CLI の使用方法については、.NET CLI の概要を参照してください。

トラブルシューティング

WSL2 に Snap をインストールできない

Snap をインストールするには、事前に WSL2 インスタンスで systemd を有効にする必要があります。

  1. 任意のテキスト エディターで /etc/wsl.conf を開きます。

  2. 次の構成を貼り付けます。

    [boot]
    systemd=true
    
  3. ファイルを保存し、PowerShell を使用して WSL2 インスタンスを再起動します。 wsl.exe --shutdown コマンドを使用します。

dotnet コマンドまたは SDKを解決できない

コード IDE や Visual Studio Code の拡張機能などの他のアプリでは、.NET SDK の場所を解決しようとするのが一般的です。 通常、検出は DOTNET_ROOT 環境変数を確認するか、dotnet 実行可能ファイルが配置されている場所を特定することによって行われます。 スナップインストールされた .NET SDK は、これらのアプリを混乱させる可能性があります。 これらのアプリで .NET SDK を解決できない場合は、次のいずれかのメッセージのようなエラーが表示されます。

  • SDK 'Microsoft.NET.Sdk' が指定されたものが見つかりませんでした
  • SDK 'Microsoft.NET.Sdk.Web' が見つかりませんでした
  • 指定された SDK 'Microsoft.NET.Sdk.Razor' が見つかりませんでした。

問題を修正するには、次の手順を試してください。

  1. 完了 2.dotnet コマンドをマップします
  2. 「環境変数を完全にエクスポートする」に従って、DOTNET_ROOT環境変数を永続的に設定します。

TLS/SSL 証明書のエラー

.NET Snap を使用してインストールすると、一部のディストリビューションで.NET TLS/SSL 証明書が見つからない可能性があり、restore中にエラーが発生する可能性があります。

Processing post-creation actions...
Running 'dotnet restore' on /home/myhome/test/test.csproj...
  Restoring packages for /home/myhome/test/test.csproj...
/snap/dotnet-sdk/27/sdk/2.2.103/NuGet.targets(114,5): error : Unable to load the service index for source https://api.nuget.org/v3/index.json. [/home/myhome/test/test.csproj]
/snap/dotnet-sdk/27/sdk/2.2.103/NuGet.targets(114,5): error :   The SSL connection could not be established, see inner exception. [/home/myhome/test/test.csproj]
/snap/dotnet-sdk/27/sdk/2.2.103/NuGet.targets(114,5): error :   The remote certificate is invalid according to the validation procedure. [/home/myhome/test/test.csproj]

この問題を解決するには、いくつかの環境変数を設定します。

export SSL_CERT_FILE=[path-to-certificate-file]
export SSL_CERT_DIR=/dev/null

証明書の場所は、ディストリビューションによって異なります。 問題が発生したディストリビューションの場所を次に示します。

Distribution 場所
フェドラ /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem
OpenSUSE /etc/ssl/ca-bundle.pem
Solus /etc/ssl/certs/ca-certificates.crt