次の方法で共有


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

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

Snap は、さまざまな Linux ディストリビューションで機能するアプリとその依存関係のバンドルです。 Snap は、Snap Store で見つけてインストールできます。 Snap の詳細については、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 では、長期サポート (LTS) と標準期間サポート (STS) の 2 つの異なるサポート ポリシーの下で .NET を公開しています。 すべてのリリースの品質は同じです。 唯一の違いは、サポート期間の長さです。 LTS リリースでは、3 年間、無料サポートとパッチを利用できます。 STS リリースでは、18 か月間、無料サポートとパッチを利用できます。 詳細については、.NET のサポート ポリシーに関するページを参照してください。

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

  • 8.0 (LTS)— 2026 年 11 月 10 日にサポートが終了します。
  • 6.0 (LTS)— 2024 年 11 月 12 日にサポートが終了します。

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

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

.NET SDK 用の Snap パッケージはすべて、同じ識別子 dotnet-sdk で公開されます。 特定のバージョンの SDK は、チャネルを指定することによってインストールできます。 SDK には、そのSDK に合わせてバージョン管理された ASP.NET Core と .NET ランタイムの両方が含まれています。

ヒント

Snapcraft .NET SDK パッケージ ページには、Snapcraft と .NET のインストール方法に関するディストリビューション固有の手順が記載されています。

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

  2. snap install を使用して.NET SDK Snap パッケージをインストールします。 たとえば、次のコマンドは、既定の latest/stable チャネルをインストールします。

    sudo snap install dotnet-sdk --classic
    
    • --classic パラメーターは必須です。
    • --channel パラメーターを使用して、インストールするバージョンを指定します。 このパラメーターを省略すると、latest/stable が使用されます。 たとえば、--channel 8.0/stable は .NET SDK 8.0 をインストールします。

dotnet snap の別名が自動的に作成され、Snap パッケージの dotnet コマンドにマップされます。

次の表に、インストールできるパッケージ チャネルを示します。

.NET バージョン Snap パッケージまたはチャネル
8 (LTS) 8.0/stable
latest/stable
lts/stable
7 7.0/stable (サポート対象外)
6 (LTS) 6.0/stable
5 5.0/stable (サポート対象外)
3.1 3.1/stable (サポート対象外)
2.1 2.1/stable (サポート対象外)

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

DOTNET_ROOT 環境変数は、.NET がインストールされている場所を判断するためにツールによって使用されることがよくあります。 スナップを使用して .NET をインストールすると、この環境変数は構成されません。 プロファイルで DOTNET_ROOT 環境変数を構成する必要があります。 スナップへのパスは、/snap/{package}/current の形式を使用します。

export DOTNET_ROOT=/snap/dotnet-sdk/current

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

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

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

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

シェルの適切なソース ファイルを編集し、export DOTNET_ROOT=/snap/dotnet-sdk/current を追加します。

3..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 の概要」を参照してください。

トラブルシューティング

dotnet ターミナル コマンドが機能しない

Snap パッケージは、パッケージによって提供されるコマンドに別名をマップできます。 既定では、.NET SDK Snap パッケージによって、dotnet コマンドの別名が作成されます。 別名が作成されていないか、以前に削除された場合、次のコマンドは別名をマップする方法を示しています。

sudo snap alias dotnet-sdk.dotnet dotnet

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 実行可能ファイルが配置されている場所を特定することによって行われます。 Snap がインストールされた .NET SDK により、これらのアプリが混乱する可能性があります。 これらのアプリで .NET SDK を解決できない場合は、次のいずれかのメッセージのようなエラーが表示されます。

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

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

  1. DOTNET_ROOT 環境変数を永続的にエクスポートしていることを確認します。

  2. snap dotnet 実行可能ファイルをプログラムが探している場所にシンボリック リンクしてみます。

    dotnet コマンドで検索される 2 つの一般的なパスは次のとおりです。

    • /usr/local/bin/dotnet
    • /usr/share/dotnet

    次のコマンドを使用して、Snap パッケージへのシンボリック リンクを作成します。

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

TLS/SSL 証明書のエラー

Snap を使用して .NET をインストールする場合、一部のディストリビューションで .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 場所
Fedora /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem
OpenSUSE /etc/ssl/ca-bundle.pem
Solus /etc/ssl/certs/ca-certificates.crt