Ubuntu での .NET の概要

この記事では、Ubuntu に .NET をインストールする方法について説明します。 Microsoft パッケージ リポジトリには、Ubuntu で現在または以前にサポートされていたすべてのバージョンの .NET が含まれています。 Ubuntu 22.04 以降、Ubuntu パッケージ フィードで一部のバージョンの .NET を入手できます。 入手できるバージョンについて詳しくは、「サポートされているディストリビューション」セクションをご覧ください。

警告

.NET パッケージをソースとするには、1 つのリポジトリを選ぶことをお勧めします。 アプリが特定のバージョンの .NET を解決しようとした際に問題が発生するため、複数のパッケージ リポジトリから取得した .NET パッケージを混在させないでください。

メソッド 長所 短所
パッケージ マネージャー
(Microsoft フィード)
  • 常にサポートされているバージョンを使用できる。
  • 正規の方法でパッチを入手できる。
  • 依存関係が含まれている。
  • 削除が容易。
  • Microsoft パッケージ リポジトリの登録が必要。
  • プレビュー リリースを利用できない。
  • サポートされるのは x64 Ubuntu のみ。
パッケージ マネージャー
(Ubuntu フィード)
  • 通常、最新バージョンを使用できる。
  • 正規の方法でパッチを入手できる。
  • 依存関係が含まれている。
  • 削除が容易。
  • Ubuntu のバージョンに応じて、使用できる .NET のバージョンが異なる。
  • プレビュー リリースを利用できない。
  • サポートされるのは x64 Ubuntu のみ。 (Arm64 もサポートする Ubuntu 23.04 以降を除く)
スクリプト \ 手動抽出
  • .NET をインストールする場所を制御できる。
  • プレビュー リリースを利用できる。
  • 更新プログラムのインストールは手動。
  • 依存関係のインストールは手動。
  • 削除は手動。

.NET のインストール方法を決める

ご利用のバージョンの Ubuntu で組み込みの Ubuntu フィードを介して .NET がサポートされている場合、.NET のビルド サポートは Canonical によって提供され、ビルドはさまざまなワークロードに最適化される場合があります。 Microsoft は、Microsoft パッケージ リポジトリ フィードのパッケージに対してサポートを提供します。

次のセクションを使用して、.NET のインストール方法を決めます。

Ubuntu 22.04 以降を使用しており、.NET のみが必要

Ubuntu フィードを使用して .NET をインストールします。 詳細については、次のページを参照してください。

重要

Canonical によって提供される .NET SDK のバージョンは、常に .1xx の機能帯にあります。 新しい機能帯のリリースを使用する場合は、Microsoft フィードを使用して SDK をインストールしてください。 リポジトリ フィード間の切り替えの影響を理解するには、Linux 上の .NET パッケージの混在に関する記事で情報を確認してください。

powershellmdatp、または mssql など、他の Microsoft パッケージを使用するために Microsoft リポジトリをインストールする場合は、Microsoft リポジトリで提供される .NET パッケージの優先順位を下げる必要があります。 パッケージの優先順位を下げる方法については、「Linux ディストリビューションに .NET パッケージが用意されており、それを使用する必要があります」をご覧ください。

22.04 より前のバージョンの Ubuntu を使用している

バージョン固有の Ubuntu ページの手順を実行します。

Ubuntu のバージョンでサポートされている .NET のバージョンについて詳しくは、「サポートされているディストリビューション」セクションをご覧ください。 サポート対象外のバージョンをインストールする場合は、「Microsoft パッケージ リポジトリを登録する」をご覧ください。

powershellmdatp、または mssql など、他の Microsoft パッケージを使用している

Ubuntu バージョンで組み込みの Ubuntu フィードを介して .NET がサポートされている場合は、.NET をインストールするフィードを決める必要があります。 「サポートされているディストリビューション」セクションに、パッケージ フィードで入手できる .NET バージョンの一覧表があります。

Ubuntu フィードを .NET パッケージのソースにする場合は、Microsoft リポジトリで提供される .NET パッケージの優先順位を下げる必要があります。 パッケージの優先順位を下げる方法については、「Linux ディストリビューションに .NET パッケージが用意されており、それを使用する必要があります」をご覧ください。

.NET アプリを作成する

ランタイムに使用するものと同じパッケージ ソースを SDK に使用します。 たとえば、Ubuntu 22.04 と .NET 6 を使用しており、.NET 7 を使用していない場合は、組み込みの Ubuntu フィードを使用して .NET をインストールすることをお勧めします。 ただし、Canonical から Ubuntu 22.04 用には提供されていない .NET 7 に移行する場合は、Microsoft パッケージ リポジトリを使用して再インストールする必要があります。 詳しくは、Microsoft パッケージ リポジトリの登録とインストールに関する記述をご覧ください。 また、「.NET のインストール方法を決める」セクションの他の提案も確認してください。

コンテナー、クラウド、または継続的インテグレーションのシナリオで .NET アプリを実行する

Ubuntu バージョンに必要な .NET バージョンが用意されている場合は、組み込みのフィードからインストールします。 それ以外の場合は、Microsoft パッケージ リポジトリを登録し、そのリポジトリから .NET をインストールします。 「サポートされているディストリビューション」セクションの情報をご確認ください。

必要な .NET バージョンを入手できない場合は、dotnet-install スクリプトを使用してみてください。

Ubuntu ディストリビューションに必要な .NET バージョンが含まれていない、またはサポート対象外の .NET バージョンが必要

APT と Microsoft パッケージ リポジトリを使用することをお勧めします。 詳しくは、「Microsoft パッケージ リポジトリに登録してインストールする」セクションをご覧ください。

プレビュー バージョンをインストールする

次のいずれかの方法で .NET をインストールします。

APT を使いたくない

自動インストールが必要な場合は、Linux インストール スクリプトを使用します。

.NET インストール エクスペリエンスをすべて制御したい場合は、tarball をダウンロードし、手動で .NET をインストールします。 詳しくは、「手動インストール」をご覧ください。

ARM ベースの CPU を使用している

次のいずれかの方法で .NET をインストールします。

サポートされているディストリビューション

次の表は、現在サポートされている .NET リリースと、それらがサポートされている Ubuntu のバージョンの一覧です。 各リンクは特定の Ubuntu バージョンのページに移動します。その Ubuntu バージョンに .NET をインストールする方法の具体的な手順が説明されています。

Ubuntu サポートされている .NET バージョン Ubuntu フィードで入手可能 Microsoft フィードで使用可能
24.04 8.0 8.0 なし
23.10 8.0、7.0、6.0 8.0、7.0、6.0 8.0、7.0、6.0
23.04 8.0、7.0、6.0 7.0、6.0 8.0、7.0、6.0
22.04 (LTS) 8.0、7.0、6.0 7.0、6.0 8.0、7.0、6.0、3.1
20.04 (LTS) 8.0、7.0、6.0 なし 8.0、7.0 6.0、5.0、3.1、2.1
18.04 (LTS) 7.0、6.0 なし 7.0。 6.0、5.0、3.1、2.2、2.1
16.04 (LTS) 6.0 なし 6.0、5.0、3.1、3.0、2.2、2.1、2.0

Ubuntu のバージョンがサポート対象外である場合、.NET もそのバージョンでサポート対象外となります。

次のバージョンの .NET は、❌ サポート対象外となりました。

  • .NET 5
  • .NET Core 3.1
  • .NET Core 3.0
  • .NET Core 2.2
  • .NET Core 2.1
  • .NET Core 2.0

Microsoft パッケージ リポジトリを登録する

Microsoft パッケージ リポジトリには、ご利用のバージョンの Ubuntu で現在サポートされている、または以前サポートされていたすべての .NET バージョンが含まれています。 ご利用のバージョンの Ubuntu で .NET パッケージが提供されている場合は、Ubuntu パッケージの優先順位を下げて、Microsoft リポジトリを使用する必要があります。 パッケージの優先順位を下げる方法については、「Linux ディストリビューションで提供されていないバージョンの .NET が必要です」をご覧ください。

重要

Microsoft パッケージ リポジトリでは、x64 アーキテクチャをターゲットとする .NET パッケージのみがサポートされます。 ARM など他のアーキテクチャについては、インストーラー スクリプトまたは手動のインストールなど、他の方法で .NET をインストールする必要があります。

プレビュー リリースは、Microsoft パッケージ リポジトリでは使用できません。 詳しくは、「プレビュー バージョンをインストールする」をご覧ください。

注意

1 つのリポジトリのみを使用してすべての .NET インストールを管理することをお勧めします。 以前に Ubuntu リポジトリを使用して .NET をインストールした場合は、.NET パッケージのシステムをクリーンし、Ubuntu フィードを無視するように APT を構成する必要があります。 その方法について詳しくは、「Linux ディストリビューションで提供されていないバージョンの .NET が必要です」をご覧ください。

APT を使用したインストールは、少ないコマンドで実行できます。 .NET をインストールする前に、次のコマンドを実行して、信頼されたキーの一覧に Microsoft パッケージ署名キーを追加し、パッケージ リポジトリを追加します。

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

# Get OS version info
source /etc/os-release

# Download Microsoft signing key and repository
wget https://packages.microsoft.com/config/$ID/$VERSION_ID/packages-microsoft-prod.deb -O packages-microsoft-prod.deb

# Install Microsoft signing key and repository
sudo dpkg -i packages-microsoft-prod.deb

# Clean up
rm packages-microsoft-prod.deb

# Update packages
sudo apt update

ヒント

前のスクリプトは Ubuntu 用に記述されており、派生ディストリビューション (Linux Mint など) を使用している場合は機能しない場合があります。 $repo_version 変数に正しい値が割り当てられず、wget コマンドの URI が無効になる場合があります。 この変数は、パッケージを取得する特定の Ubuntu バージョン (22.10 または 23.04 など) にマップされます。

Web ブラウザーを使用して https://packages.microsoft.com/config/ubuntu/ に移動すると、$repo_version の値として使用できる Ubuntu バージョンを確認できます。

.NET のインストール

Microsoft パッケージ リポジトリを登録した後、または Ubuntu バージョンの既定のフィードで .NET パッケージがサポートされている場合は、sudo apt install <package-name> コマンドを使用し、パッケージ マネージャー経由で .NET をインストールできます。 <package-name> を実際にインストールするパッケージ名に置き換えます。 たとえば、.NET SDK 8.0 をインストールするには、sudo apt install dotnet-sdk-8.0 コマンドを使用します。 次の表に、現在サポートされている .NET パッケージの一覧を示します。

製品 種類 パッケージ
8.0 ASP.NET Core ランタイム aspnetcore-runtime-8.0
8.0 .NET Runtime dotnet-runtime-8.0
8.0 .NET SDK dotnet-sdk-8.0
7.0 ASP.NET Core ランタイム aspnetcore-runtime-7.0
7.0 .NET ランタイム dotnet-runtime-7.0
7.0 .NET SDK dotnet-sdk-7.0
6.0 ASP.NET Core ランタイム aspnetcore-runtime-6.0
6.0 .NET ランタイム dotnet-runtime-6.0
6.0 .NET SDK dotnet-sdk-6.0

サポートされていないバージョンの .NET をインストールする場合は、「サポートされているディストリビューション」セクションをチェックして、そのバージョンの .NET を入手できるかを確認します。 次に、インストールする .NET のバージョンを置き換えます。 たとえば、ASP.NET Core 2.1 をインストールするには、パッケージ名 aspnetcore-runtime-2.1 を使用します。

ヒント

.NET アプリを作成していない場合は、.NET ランタイムを含み、ASP.NET Core アプリもサポートしている ASP.NET Core ランタイムをインストールします。

一部の環境変数は、インストール後の .NET がどのように実行されるかに影響します。 詳しくは、「.NET SDK と CLI 環境変数」をご覧ください。

.NET をアンインストールする

パッケージ マネージャーを使用して .NET をインストールした場合は、apt-get remove コマンドを使用して同じ方法でアンインストールします。

sudo apt-get remove dotnet-sdk-6.0

詳しくは、「.NET をアンインストールする」をご覧ください。

プレビュー バージョンをインストールする

.NET のプレビューおよびリリース候補バージョンは、パッケージ リポジトリでは入手できません。 .NET のプレビューとリリース候補は、次のいずれかの方法でインストールできます。

プレビュー バージョンの削除

パッケージ マネージャーを使用して .NET のインストールを管理しているとき、以前、プレビュー リリースをインストールしている場合、競合が発生することがあります。 パッケージ マネージャーは、プレビューではないリリースを .NET の以前のバージョンとして解釈することがあります。 プレビューではないリリースをインストールするには、最初にプレビュー バージョンをアンインストールします。 .NET をアンインストールする方法の詳細については、「.NET ランタイムと SDK を削除する方法」を参照してください。

APT を使用して .NET を更新する

パッケージ マネージャーを使用して .NET をインストールした場合は、apt upgrade コマンドを使用してパッケージをアップグレードできます。 たとえば、次のコマンドは、dotnet-sdk-7.0 パッケージを最新バージョンにアップグレードします。

sudo apt update
sudo apt upgrade dotnet-sdk-7.0

ヒント

.NET のインストール後に Linux ディストリビューションをアップグレードした場合は、Microsoft パッケージ リポジトリの再構成が必要な場合があります。 現在のディストリビューション バージョンのインストール手順を実行して、.NET 更新プログラムの適切なパッケージ リポジトリにアップグレードします。

トラブルシューティング

Ubuntu 22.04 以降では、一部の .NET しか使用できないと思われる状況が発生する場合があります。 たとえば、ランタイムと SDK をインストールしたものの、dotnet --info を実行するとランタイムのみが一覧表示されます。 この状況は、2 つの異なるパッケージ ソースの使用に関連する場合があります。 組み込みの Ubuntu 22.04 と Ubuntu 22.10 パッケージ フィードには一部のバージョンの .NET が含まれていますが、すべてではありません。また、Microsoft フィードからも .NET をインストールした可能性があります。 この問題を解決する方法について詳しくは、「Linux 上で見つからないファイルに関連する .NET エラーのトラブルシューティング」をご覧ください。

APT の問題

このセクションでは、APT を使用して .NET をインストールするときに発生するおそれがある一般的なエラーについて説明します。

パッケージが見つからない

重要

パッケージ マネージャーを使った Microsoft パッケージ フィードからの .NET のインストールでは、x64 アーキテクチャのみがサポートされます。 Arm などの他のアーキテクチャは、Microsoft パッケージ フィードではサポートされていません。

パッケージ マネージャーを使用せずに .NET をインストールする方法の詳細については、次の記事のいずれかを参照してください。

見つからない \ 一部のパッケージをインストールできませんでした

メモ

この情報は、.NET が Microsoft パッケージ フィードからインストールされている場合にのみ適用されます。

"パッケージ {dotnet-package} が見つかりません" や "一部のパッケージをインストールできませんでした" のようなエラー メッセージが表示される場合は、次のコマンドを実行します。

次の一連のコマンドには、2 つのプレースホルダーがあります。

  • {dotnet-package}
    これは、aspnetcore-runtime-8.0 など、インストールする .NET パッケージを表します。 これは、次の sudo apt-get install コマンドで使用されます。

まず、パッケージ リストを消去してみてください。

sudo dpkg --purge packages-microsoft-prod && sudo dpkg -i packages-microsoft-prod.deb
sudo apt-get update

次に、.NET を再度インストールしてください。 それでも解決しない場合は、次のコマンドを使用して手動インストールを実行できます。

Ubuntu 23.10 以降を使用している場合は、次のコマンドを試してください。

# Define the OS version, name, and codename
source /etc/os-release

# Download the Microsoft keys
sudo apt-get install -y gpg wget
wget https://packages.microsoft.com/keys/microsoft.asc
cat microsoft.asc | gpg --dearmor -o microsoft.asc.gpg

# Add the Microsoft repository to the system's sources list
wget https://packages.microsoft.com/config/$ID/$VERSION_ID/prod.list
sudo mv prod.list /etc/apt/sources.list.d/microsoft-prod.list

# Move the key to the appropriate place
sudo mv microsoft.asc.gpg $(cat /etc/apt/sources.list.d/microsoft-prod.list | grep -oP "(?<=signed-by=).*(?=\])")

# Update packages and install .NET
sudo apt-get update && \
  sudo apt-get install -y {dotnet-package}

23.10 より前のバージョンの Ubuntu を使用している場合は、次のコマンドを試してください。

# Define the OS version, name, and codename
source /etc/os-release

# Download the Microsoft keys
sudo apt-get install -y gpg wget
wget https://packages.microsoft.com/keys/microsoft.asc
cat microsoft.asc | gpg --dearmor -o microsoft.asc.gpg
sudo mv microsoft.asc.gpg /etc/apt/trusted.gpg.d/

# Add the Microsoft repository to the system's sources list
wget https://packages.microsoft.com/config/$ID/$VERSION_ID/prod.list
sudo mv prod.list /etc/apt/sources.list.d/microsoft-prod.list

# Set ownership
sudo chown root:root /etc/apt/trusted.gpg.d/microsoft.asc.gpg
sudo chown root:root /etc/apt/sources.list.d/microsoft-prod.list

# Update packages and install .NET
sudo apt-get update && \
  sudo apt-get install -y {dotnet-package}

フェッチできない

.NET パッケージのインストール中に、Failed to fetch ... File has unexpected size ... Mirror sync in progress? のようなエラーが表示されることがあります。 このエラーは、.NET のパッケージ フィードが新しいバージョンのパッケージでアップグレード中であり、後でもう一度試す必要があることを意味している可能性があります。 アップグレード中は、30 分以上パッケージ フィードを利用できません。 30 分以上このエラーが継続的に発生する場合は、https://github.com/dotnet/core/issues でイシューを報告してください。

依存関係

パッケージ マネージャーを使用してインストールする場合、次のライブラリが自動的にインストールされます。 ただし、.NET を手動でインストールする場合、または自己完結型アプリを発行する場合は、これらの依存関係をインストールしてアプリを実行する必要があります。

  • libc6
  • libgcc1 (16.x と 18.x の場合)
  • libgcc-s1 (20.x 以降の場合)
  • libgssapi-krb5-2
  • libicu55 (16.x 用)
  • libicu60 (18.x 用)
  • libicu66 (20.x 用)
  • libicu70 (22.04 の場合)
  • libicu71 (22.10 の場合)
  • libicu72 (23.04 以降の場合)
  • liblttng-ust1 (22.x 以降の場合)
  • libssl1.0.0 (16.x の場合)
  • libssl1.1 (18.x、20.x 用)
  • libssl3 (22.x 以降の場合)
  • libstdc++6
  • libunwind8 (22.x 以降の場合)
  • zlib1g

依存関係は apt install コマンドを使用してインストールできます。 次のスニペットは、zlib1g ライブラリのインストールを示しています。

sudo apt install zlib1g

.NET アプリで System.Drawing.Common アセンブリを使用している場合、libgdiplus もインストールする必要があります。 System.Drawing.Common は Linux でサポートされなくなったため、これは .NET 6 のみで機能し、System.Drawing.EnableUnixSupport ランタイム構成スイッチを設定する必要があります。

最新バージョンの libgdiplus をインストールするには、システムに Mono リポジトリを追加します。

次の手順