在 Ubuntu 上安裝 .NET SDK 或 .NET Runtime

本文說明如何在 Ubuntu 上安裝 .NET。 Microsoft 套件存放庫包含目前或先前在 Ubuntu 上支援的每個 .NET 版本。 從 Ubuntu 22.04 開始,Ubuntu 套件摘要中提供某些版本的 .NET。 如需可用版本的詳細資訊,請參閱支援的發行版本 (部分機器翻譯) 一節。

警告

建議您選擇單一存放庫來來源 .NET 套件。 請勿混合來自多個套件存放庫的 .NET 套件,因為當應用程式嘗試解決特定版本的 .NET 時,這會導致問題。

方法 優點 缺點
套件管理員
(Microsoft 摘要)
  • 一律提供支援的版本。
  • 正確提供修補檔。
  • 包含相依性。
  • 輕鬆移除。
  • 需要註冊 Microsoft 套件存放庫。
  • 未提供預覽版本。
  • 僅支援 x64 Ubuntu。
套件管理員
(Ubuntu 摘要)
  • 通常會提供最新版本。
  • 正確提供修補檔。
  • 包含相依性。
  • 輕鬆移除。
  • 可用的 .NET 版本會因 Ubuntu 版本而異。
  • 未提供預覽版本。
  • 僅支援 x64 Ubuntu。 (除了支援 Arm64 的 Ubuntu 23.04+除外)
指令碼 \ 手動擷取
  • 控制安裝 .NET 的位置。
  • 提供預覽版本。
  • 手動安裝更新。
  • 手動安裝相依性。
  • 手動移除。

決定如何安裝 .NET

當您的 Ubuntu 版本透過內建的 Ubuntu 摘要支援 .NET 時,Canonical 會提供這些 .NET 組建的支援,而且組建可能會針對不同的工作負載進行優化。 Microsoft 支援 Microsoft 套件存放庫摘要中的套件。

使用下列各節來判斷您應該如何安裝 .NET:

我使用 Ubuntu 22.04、22.10 或 23.04,而我只需要 .NET 6.0 或 .NET 7.0

透過 Ubuntu 摘要安裝 .NET。 如需詳細資訊,請參閱下列頁面:

重要

Canonical 提供的 .NET SDK 版本一律位於 .1xx 功能區。 如果您想要使用較新的功能區版本,請使用 Microsoft 摘要來安裝 SDK 。 請務必檢閱 .NET 套件在 Linux 上混合的資訊一文,以瞭解在存放庫摘要之間切換的影響。

如果您要安裝 Microsoft 存放庫以使用其他 Microsoft 套件,例如 powershellmdatpmssql ,則必須取消 Microsoft 存放庫所提供的 .NET 套件優先順序。 如需如何取消設定套件優先順序的指示,請參閱 我的 Linux 發行版本提供 .NET 套件,而我想要使用這些 套件。

我使用 22.04 之前的 Ubuntu 版本

使用版本特定 Ubuntu 頁面上的指示。

如需 Ubuntu 版本支援哪些 .NET 版本的詳細資訊,請參閱支援的發行版本 一節。 如果您要安裝不支援的版本,請參閱註冊 Microsoft 套件存放庫 (部分機器翻譯)。

我使用其他 Microsoft 套件,例如 powershellmdatpmssql

如果您的 Ubuntu 版本透過內建的 Ubuntu 摘要支援 .NET,您必須決定應該安裝 .NET 的摘要。 支援的 散發套件區 段提供一個資料表,其中列出套件摘要可用的 .NET 版本。

如果您想要從 Ubuntu 摘要來源 .NET 套件,您必須取消排定 Microsoft 存放庫所提供的 .NET 套件優先順序。 如需如何取消設定套件優先順序的指示,請參閱 我的 Linux 發行版本提供 .NET 套件,而我想要使用這些 套件。

我想建立 .NET 應用程式

針對 SDK 使用與您針對執行階段使用相同的套件來源。 例如,如果您使用 Ubuntu 22.04 和 .NET 6,但不是 .NET 7,建議您透過內建的 Ubuntu 摘要安裝 .NET。 不過,如果您移至 Canonical for Ubuntu 22.04 未提供的 .NET 7,您應該 向 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 摘要中使用 (部分機器翻譯)
23.04 7.0、6.0 7.0、6.0 7.0、6.0
22.10 7.0、6.0 7.0、6.0 7.0、6.0、3.1
22.04 (LTS) 7.0、6.0 6.0 7.0、6.0、3.1
20.04 (LTS) (部分機器翻譯) 7.0、6.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 版本。

重要

只有在 x64 架構上才支援套件管理員安裝。 其他架構,例如 Arm ,必須透過一些其他方式來安裝 .NET,例如使用 安裝程式腳本 手動安裝

Microsoft 套件存放庫中提供預覽版本。 如需詳細資訊,請參閱安裝預覽版本 (部分機器翻譯)。

警告

我們建議您只使用一個存放庫來管理所有 .NET 安裝。 如果您先前已使用 Ubuntu 存放庫安裝 .NET,您必須清除 .NET 套件的系統,並將 APT 設定為忽略 Ubuntu 摘要。 如需如何執行這項操作的詳細資訊,請參閱 我需要 Linux 散發 套件未提供的 .NET 版本。

您可以使用幾個命令來使用 APT 完成安裝。 安裝 .NET 之前,請執行下列命令,將 Microsoft 套件簽署金鑰新增至受信任的金鑰清單,並新增套件存放庫。

開啟終端機,然後執行下列命令:

# Get Ubuntu version
declare repo_version=$(if command -v lsb_release &> /dev/null; then lsb_release -r -s; else grep -oP '(?<=^VERSION_ID=).+' /etc/os-release | tr -d '"'; fi)

# Download Microsoft signing key and repository
wget https://packages.microsoft.com/config/ubuntu/$repo_version/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。

您可以使用網頁瀏覽器,並流覽至 以查看 https://packages.microsoft.com/config/ubuntu/ 可使用哪些版本的 Ubuntu 做為 $repo_version 值。

安裝 .NET

註冊 Microsoft 套件存放庫 之後,或者,如果您的 Ubuntu 預設摘要版本支援 .NET 套件,您可以使用 命令透過套件管理員 apt install <package-name> 安裝 .NET。 將 取代 <package-name> 為您想要安裝的 .NET 套件名稱。 例如,若要安裝 .NET SDK 7.0,請使用 命令 apt install dotnet-sdk-7.0 。 下表列出目前支援的 .NET 套件:

Products 類型 套件
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 應用程式,請安裝 ASP.NET Core 執行時間,因為它包含 .NET 執行時間,也支援 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 時,只會列出執行階段。 這與使用兩個不同的套件來源有關。 內建的 Ubuntu 22.04 和 Ubuntu 22.10 套件摘要包含一些 .NET 版本,但並非全部,您可能也已從 Microsoft 摘要安裝 .NET。 如需如何修正此問題的詳細資訊,請參閱 針對 Linux 上遺失檔案的相關 .NET 錯誤進行疑難排解。

APT 問題

本節提供使用 APT 安裝 .NET 時可能會取得之常見錯誤的資訊。

找不到套件

重要

只有在 x64 架構上才支援套件管理員安裝。 其他架構,例如 Arm ,必須透過一些其他方式來安裝 .NET,例如使用 Snap、安裝程式腳本,或透過手動二進位安裝。

如需在沒有套件管理員 的情況下安裝 .NET 的詳細資訊,請參閱下列其中一篇文章:

找不到 \ 某些套件無法安裝

注意

此資訊僅適用于從 Microsoft 套件摘要安裝 .NET 時。

如果您收到類似找不到套件 {dotnet-package}某些套件無法安裝的錯誤訊息,請執行下列命令。

下列這組命令中有兩個預留位置。

  • {dotnet-package}
    這代表您要安裝的 .NET 套件,例如 aspnetcore-runtime-7.0 。 這會在下列 sudo apt-get install 命令中使用。

  • {os-version}
    這代表您正在使用的發行版本。 這會在下列 wget 命令中使用。 發行版本是數值,例如,在 Ubuntu 上為 20.04,在 Debian 上則為 10

首先,嘗試清除套件清單:

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

然後,再次嘗試安裝 .NET。 如果無法運作,您可以使用下列命令來執行手動安裝:

sudo apt-get install -y gpg
wget -O - https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor -o microsoft.asc.gpg
sudo mv microsoft.asc.gpg /etc/apt/trusted.gpg.d/
wget https://packages.microsoft.com/config/ubuntu/{os-version}/prod.list
sudo mv prod.list /etc/apt/sources.list.d/microsoft-prod.list
sudo chown root:root /etc/apt/trusted.gpg.d/microsoft.asc.gpg
sudo chown root:root /etc/apt/sources.list.d/microsoft-prod.list
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
  • libgcc-s1 (適用於 22.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。 因為 Linux 不再支援 System.Drawing.Common ,因此這只適用于 .NET 6,而且需要設定執行時間組 System.Drawing.EnableUnixSupport 態參數。

您可以將 Mono 存放庫新增至您的系統 (英文),以安裝最新版的 libgdiplus

下一步