Ubuntu での .NET の概要

この記事では、Ubuntu に .NET をインストールする方法について説明します。 Ubuntu 22.04 以降、サポートされているほとんどのバージョンの .NET は、組み込みの Ubuntu フィードから取得できます。 Ubuntu .NET バックポート パッケージ リポジトリには、サポートされている残りの .NET バージョンが含まれています。 入手できるバージョンについて詳しくは、「サポートされているディストリビューション」セクションをご覧ください。

Canonical が Ubuntu での .NET の発行を引き継ぎしました。 Ubuntu 22.04 以降、Microsoft は Ubuntu 用 .NET を Microsoft パッケージ リポジトリに配布しなくなりました。

警告

.NET パッケージを入手するには、Ubuntu フィードまたは Microsoft フィードのいずれかを選択することをお勧めします。 アプリが特定のバージョンの .NET を解決しようとした際に問題が発生するため、複数のパッケージ リポジトリから取得した .NET パッケージを混在させないでください。

メソッド 長所 短所
パッケージ マネージャー
(組み込み
Ubuntu フィード)
  • 通常、最新バージョンを使用できる。
  • 正規の方法でパッチを入手できる。
  • 依存関係が含まれている。
  • 削除が容易。
  • 使用可能な .NET バージョンは、特定の Ubuntu バージョンのサポート期間に対しサポートされています。
  • Ubuntu 24.04 上の .NET 8 用 IBM System Z プラットフォームのサポート。
  • Ubuntu 16.04、18.04、20.04 では使用できません。
  • Ubuntu のバージョンに応じて、使用できる .NET のバージョンが異なる。
  • プレビュー リリースを利用できない。
パッケージ マネージャー
(.NET バックポート
Ubuntu フィード)
  • 組み込みの Ubuntu フィードに含まれていない、全てのサポートされているバージョンが含まれています。
  • 正規の方法でパッチを入手できる。
  • 依存関係が含まれている。
  • 削除が容易。
  • 組み込みの Ubuntu フィードと互換性があります。
  • Ubuntu 16.04、18.04、20.04 では使用できません。
  • Ubuntu .NET バックポート パッケージ リポジトリを登録する必要があります。
  • プレビュー リリースを利用できない。
パッケージ マネージャー
(Microsoft フィード)
  • 常にサポートされているバージョンを使用できる。
  • 正規の方法でパッチを入手できる。
  • 依存関係が含まれている。
  • 削除が容易。
  • Ubuntu 24.04 以降では使用できません。
  • Microsoft パッケージ リポジトリの登録が必要。
  • プレビュー リリースを利用できない。
  • サポートされるのは x64 Ubuntu のみ。
スクリプト \ 手動抽出
  • .NET をインストールする場所を制御できる。
  • プレビュー リリースを利用できる。
  • 更新プログラムのインストールは手動。
  • 依存関係のインストールは手動。
  • 削除は手動。

Ubuntu をアップグレードするときの考慮事項

Ubuntu を 22.04 以降にアップグレードしますか? 最初に .NET をアンインストールすることを検討してください。

パッケージ マネージャーを使用して Microsoft パッケージ リポジトリから .NET をインストールした場合、Ubuntu のアップグレード後にパッケージのミックスアップの問題が発生します。 Canonical が Ubuntu 22.04 (およびそれ以降のバージョン) のパッケージ フィードに .NET を発行したので、パッケージ マネージャーは以前にインストールした .NET バージョンについて認識しません。 パッケージを最新の .NET にアップグレードすることはできません。 まず、それらをアンインストールしてから、[Ubuntu パッケージ リポジトリ] から再インストールします。

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

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

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

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

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

重要

.NET 8 SDK と Ubuntu 22.04 を使用している場合は、Canonical によって提供される 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 フィードを使用して .NET をインストールすることをお勧めします。 ただし、別のソースから .NET をインストールする場合 (たとえば、上位の SDK 機能バンドにアクセスするために Microsoft パッケージ リポジトリを使用する) は、.NET をアンインストールして、Ubuntu フィードからの .NET パッケージを無視するようにパッケージ マネージャーを構成し、他のソースから再インストールする必要があります。

.NET のインストール方法を決める」セクションの、他の提案をご確認ください。

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

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

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

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

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

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

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

APT を使いたくない

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

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

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

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

必要な .NET のバージョンが入手できない場合は、次のいずれかの方法を使用して .NET をインストールしてみてください。

IBM System Z プラットフォームを使用している場合

Ubuntu 24.04 の .NET 8 以降、Canonical では IBM System Z プラットフォーム用の .NET がサポートされています。 Canonical は、サポートを他の .NET および Ubuntu バージョンに拡張する作業を行っています。

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

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

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

Ubuntu サポートされている .NET バージョン 利用可能
組み込みの Ubuntu フィード
利用可能:
.NET バックポート
Ubuntu フィード
利用可能:
Microsoft フィード
24.10 9.0, 8.0 9.0, 8.0 なし なし
24.04 (LTS) 9.0, 8.0, 6.0 8.0 9.0, 7.0, 6.0 なし
22.04 (LTS) 9.0, 8.0, 6.0 8.0、7.0、6.0 9.0 8.0、7.0、6.0、3.1
20.04 (LTS) 8.0、6.0 なし なし 8.0、7.0 6.0、5.0、3.1、2.1

重要

.NET 9 は現在プレビュー段階です。

Ubuntu バージョンのサポート期間が終了すると、.NET はその特定の Ubuntu バージョンでサポートされなくなります。

Canonical は、Microsoft が提供するサポート有効期間を超えても、その Ubuntu バージョンの有効期間中は組み込みの Ubuntu フィードに含まれる .NET バージョンをサポートします。また、.NET バックポート パッケージ リポジトリ内の .NET バージョンについては、ベスト エフォート サポートを提供します。これは、Microsoft が提供するサポートの有効期間を超えません。

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

  • .NET 7
  • .NET 6 (2024 年 11 月 12 日より)
  • .NET 5
  • .NET Core 3.1
  • .NET Core 3.0
  • .NET Core 2.2
  • .NET Core 2.1
  • .NET Core 2.0

Ubuntu の .NET バックポート パッケージ リポジトリ

Ubuntu の .NET バックポート パッケージ リポジトリには、組み込みの Ubuntu フィードでは使用できないバージョンの .NET が用意されています。 「サポートされているディストリビューション」セクションに、パッケージ フィードで入手できる .NET バージョンの一覧表があります。 Canonical は、このパッケージ リポジトリに含まれるパッケージのメンテナンスを行い、Microsoft が提供するサポートの有効期間、または特定の Ubuntu バージョンのサポート期間を超えない範囲でベスト エフォート サポートを提供します。

詳細については、「Ubuntu の .NET バックポート パッケージ リポジトリの Web ビュー」を参照してください。

Ubuntu の .NET バックポート パッケージ リポジトリを登録する

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

sudo add-apt-repository ppa:dotnet/backports

ヒント

apt update を呼び出す必要はありません。 add-apt-repository コマンドは、既定でこれを行います。

Note

Ubuntu の .NET バックポート パッケージ リポジトリは、組み込みの Ubuntu フィードと互換性があります。 そのため、組み込みの Ubuntu フィード内の .NET パッケージを無視するようにパッケージ マネージャーを構成する必要はありません。

Ubuntu の .NET バックポート パッケージ リポジトリの登録を解除する

Ubuntu の .NET バックポート パッケージ リポジトリからパッケージを使用しなくなった場合は、登録を解除できます。 ターミナルを開き、次のコマンドを実行します。

sudo add-apt-repository --remove ppa:dotnet/backports

重要

Ubuntu の .NET バックポート パッケージ リポジトリの登録を解除しても、パッケージはアンインストールされません。

add-apt-repository コマンドが見つからない

add-apt-repository(1) ユーティリティは、ほとんどの Ubuntu インストールにプレインストールされています。

add-apt-repository コマンドが見つからなかったというエラー メッセージが表示された場合は、このコマンドを提供する software-properties-common パッケージをインストールする必要があります。 ターミナルを開き、次のコマンドを実行します。

sudo apt update
sudo apt install software-properties-common

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

重要

これは、24.04 より前の Ubuntu バージョンにのみ適用されます。 Ubuntu 24.04 以降、Microsoft はパッケージを Microsoft パッケージ リポジトリに発行しなくなりました。 サポートされているディストリビューション テーブルを使用して.NET をインストールする最適な方法を決定します。

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 which adds the $ID and $VERSION_ID variables
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 などの派生ディストリビューションを使用している場合は機能しない可能性があります。 $ID変数と$VERSION_ID変数に正しい値が割り当てられず、wget コマンドの URI が無効になる可能性があります。 $IDはディストリビューション (ubuntu など) に対応しますが、$VERSION_IDは、22.04 や 23.10 などのパッケージを取得する特定のバージョンの Ubuntu にマップされます。

たとえば、Ubuntu 22.04 では、 $IDubuntu され、 $VERSION_ID22.04。 URL は次のようになります。
https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb.

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

.NET のインストール

sudo apt install <package-name> コマンドを使用して、パッケージ マネージャーを使用して .NET をインストールします。 <package-name> を実際にインストールするパッケージ名に置き換えます。 たとえば、.NET SDK 8.0 をインストールするには、sudo apt install dotnet-sdk-8.0 コマンドを使用します。 次の表に、現在サポートされている .NET パッケージを示します ( は Ubuntu のバージョンによって異なります)。

Product 種類 パッケージ
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
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 ランタイムを含み、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-8.0 パッケージを最新バージョンにアップグレードします。

sudo apt update
sudo apt upgrade dotnet-sdk-8.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 以降を使用している場合は、次のコマンドを試してください。

# Get OS version info which adds the $ID and $VERSION_ID variables
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 を手動でインストールする場合、または自己完結型アプリを発行する場合は、これらの依存関係をインストールしてアプリを実行する必要があります。

  • ca-certificates
  • 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 の場合)
  • libicu72 (23.10 用)
  • libicu74 (24.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 リポジトリを追加します。

次のステップ