Ubuntu 上的 .NET 概觀
本文描述如何在 Ubuntu 上安裝 .NET。 從 Ubuntu 22.04 開始,大部分支援的 .NET 版本都可以在內建的 Ubuntu 軟體庫中取得。 Ubuntu .NET backports 套件存放庫包含其餘支援的 .NET 版本。 如需可用版本的詳細資訊,請參閱支援的發行版本 (部分機器翻譯) 一節。
Canonical 已接管在 Ubuntu 上發佈 .NET。 從Ubuntu 22.04開始,Microsoft不再將適用於Ubuntu的 .NET散發至Microsoft套件存放庫。
警告
建議您選擇 Ubuntu 或 Microsoft 作為提供來源以獲取 .NET 套件。 請勿混合來自多個套件存放庫的 .NET 套件,因為當應用程式嘗試解析特定版本的 .NET 時,會導致問題。
方法 | 優點 | 缺點 |
---|---|---|
套件管理員 (內建的 Ubuntu 摘要) |
|
|
套件管理員 (.NET 回溯移植 Ubuntu 訂閱源) |
|
|
套件管理員 (Microsoft 摘要) |
|
|
指令碼 \ 手動擷取 |
|
|
升級Ubuntu時的考慮
將Ubuntu升級至22.04或更新版本? 請考慮先卸載 .NET。
如果您使用套件管理工具從 Microsoft 套件存放庫安裝 .NET,在升級 Ubuntu 之後,最終可能會遇到套件混淆問題。 現在,Canonical 會將 .NET 發佈至 Ubuntu 22.04 的套件摘要(和更新版本),套件管理員不會知道先前安裝的 .NET 版本。 套件無法升級至最新的 .NET。 首先,卸載它們,然後從 [Ubuntu 套件存放庫] 重新安裝它們。
決定如何安裝 .NET
當您的 Ubuntu 版本透過內建的 Ubuntu 軟體源或 .NET backports 軟體源支援 .NET 時,Canonical 會提供對那些 .NET 組建的支援,而這些組建可能會針對不同的工作負載進行最佳化。 Microsoft 支援 Microsoft 套件存放庫供應源中的套件。
使用下列各節來判斷您應該如何安裝 .NET:
- 我正在使用 Ubuntu 22.04 或更高版本,只需要 .NET
- 我使用某個 22.04 之前的 Ubuntu 版本
-
我使用其他 Microsoft 套件,例如
powershell
、mdatp
或mssql
- 我想要建立 .NET 應用程式 (部分機器翻譯)
- 我想要在容器、雲端或持續整合案例中執行 .NET 應用程式 (部分機器翻譯)
- 我的 Ubuntu 發行版本沒有包含我想要的 .NET 版本,或者,我需要一個已不受支援的 .NET 版本
- 我想要安裝預覽版本
- 我不想使用 APT c
- 我使用基於 Arm 架構的 CPU
- 我使用 IBM System Z 平台
我使用的是 Ubuntu 22.04,而且我只需要 .NET
如果您不需要其他 Microsoft 套件,例如 powershell
、mdatp
或 mssql
,請透過 Ubuntu 軟體源安裝 .NET。 如需詳細資訊,請參閱下列頁面:
重要
如果您使用 .NET 8 SDK 和 Ubuntu 22.04,請瞭解 Canonical 所提供的 SDK 版本一律位於 .1xx 功能區段。 如果您想要使用較新的功能組版本,請使用 Microsoft 來源來安裝 SDK。 請務必檢閱 .NET 套件在 Linux 上的混淆 文章資訊,以了解在儲存庫來源之間切換的影響。
如果您要安裝其他 Microsoft 存放庫以使用其他 Microsoft 套件 (例如 powershell
、mdatp
或 mssql
),則必須取消設定 Microsoft 存放庫所提供之 .NET 套件的優先順序。 如需如何取消設定套件優先順序的相關指示,請參閱我的 Linux 發行版本提供 .NET 套件,而且我想要使用這些套件 (部分機器翻譯)。
我使用 22.04 之前的 Ubuntu 版本
使用特定版本的 Ubuntu 頁面上的指示。
如需您的 Ubuntu 版本所支援之 .NET 版本的詳細資訊,請參閱支援的發行版本 (部分機器翻譯) 一節。 如果您要安裝尚未支援的版本,參考註冊 Microsoft 套件存放庫。
我使用其他 Microsoft 套件,例如 powershell
、mdatp
或 mssql
如果您的 Ubuntu 版本透過 Ubuntu 軟體來源支援 .NET,則您必須決定要從哪一個來源安裝 .NET。 支援的發行版本一節提供一個表格,其中列出套件摘要中提供哪些 .NET 版本。
如果您想要從 Ubuntu 摘要取得 .NET 套件,您必須降低 Microsoft 存放庫所提供的 .NET 套件的優先級。 如需如何取消設定套件優先順序的相關指示,請參閱我的 Linux 發行版本提供 .NET 套件,而且我想要使用這些套件 (部分機器翻譯)。
我想要建立 .NET 應用程式
請為 SDK 使用與執行時相同的套件來源。 建議您透過 Ubuntu 套件來源安裝 .NET。 不過,如果您想要從另一個來源 (例如 Microsoft 套件存放庫安裝 .NET 以存取較高的 SDK 功能範圍),您應該解除安裝 .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。 如需詳細資訊,請參閱下列頁面:
- 在 Ubuntu 24.10 上安裝 .NET 9。
支援的發行版本
下表是目前支援的 .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 | 8.0 | 9.0, 7.0, 6.0 | 無 |
22.04 (LTS) | 9.0, 8.0 | 8.0、7.0、6.0 | 9.0 | 8.0、7.0、6.0、3.1 |
20.04 (LTS) | 9.0, 8.0 | 無 | 無 | 8.0、7.0。 6.0、5.0、3.1、2.1 |
當 Ubuntu 版本到達其支援期間時,該特定 Ubuntu 版本就不再支援 .NET。
Canonical 支援存在於 Ubuntu 內建鏈接中的 .NET 版本,延續到該 Ubuntu 版本的整個存留期,即使超過 Microsoft 提供的支援存留期;對於回溯套件庫中的 .NET 版本,Canonical 提供盡力支援,但不會超出 Microsoft 提供的支援存留期。
下列版本的 .NET ❌ 已不再支援:
- .NET 7
- .NET 6
- .NET 5
- .NET Core 3.1
- .NET Core 3.0
- .NET Core 2.2
- .NET Core 2.1
- .NET Core 2.0
註冊套件存放庫
根據您的 Ubuntu 版本,您可能需要註冊 Ubuntu backports 或 Microsoft 套件存放庫。
重要
請務必考慮 決定如何安裝 .NET 區段中的資訊。
Ubuntu .NET backports 套件存放庫
Ubuntu .NET 回溯套件儲存庫提供在內建 Ubuntu 摘要中無法取得的 .NET 版本。 支援的發行版本一節提供一個表格,其中列出套件摘要中提供哪些 .NET 版本。 Canonical 會維護此套件存放庫中所包含的套件,並提供最佳支援,不會超過 Microsoft 提供的支援存留期或特定 Ubuntu 版本的支援期間。
如需詳細資料,請參閱 Ubuntu .NET backports 套件存放庫的網頁檢視。
註冊 Ubuntu .NET backports 套件存放庫
開啟終端機,並執行下列命令:
sudo add-apt-repository ppa:dotnet/backports
注意
Ubuntu .NET backports 套件存放庫與內建的 Ubuntu 源相容。 因此,您不需要將套件管理員設定為忽略內建 Ubuntu 摘要中的 .NET 套件。
取消註冊 Ubuntu .NET 回溯套件存放庫
如果您不想再從 Ubuntu .NET backports 套件存放庫取用套件,您可以將其取消註冊。 開啟終端機,並執行下列命令:
sudo add-apt-repository --remove ppa:dotnet/backports
重要
取消註冊 Ubuntu .NET backports 套件存放庫並不會解除安裝任何套件。
找不到 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 套件存放庫中未提供預覽版本。 如需詳細資訊,請參閱安裝預覽版本。
警告
建議您只使用一個存放庫來管理您的所有 .NET 安裝。 如果您先前已使用 Ubuntu 存放庫安裝 .NET,就必須清除 .NET 套件系統,並將 APT 設定為忽略 Ubuntu 摘要。 如需了解如何執行此操作的詳細資訊,請參閱我需要 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
則對應於特定的 Ubuntu 版本,如 22.04 或 23.10,這是您想要獲取套件的版本。
例如,在 Ubuntu 22.04 $ID
上是 ubuntu
,$VERSION_ID
是 22.04
。 URL 看起來會像: https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb
。
您可以使用網頁瀏覽器並瀏覽至 https://packages.microsoft.com/config/ubuntu/ ,以查看哪些 Ubuntu 版本可用來作為 $repo_version
值。
安裝、卸載或更新 .NET
下列各節說明如何透過套件管理員管理 .NET。
安裝 .NET
使用 sudo apt install <package-name>
命令透過套件管理員安裝 .NET。 以您想要安裝的 .NET 套件名稱取代 <package-name>
。 例如,若要安裝 .NET SDK 9.0,請使用 命令 sudo apt install dotnet-sdk-9.0
。 下表列出目前支援的 .NET 套件(可能 因您的 Ubuntu 版本而異):
產品 | 類型 | 套件 | |
---|---|---|---|
9.0 | ASP.NET Core | 執行階段 | aspnetcore-runtime-9.0 |
9.0 | .NET | 執行階段 | dotnet-runtime-9.0 |
9.0 | .NET | SDK | dotnet-sdk-9.0 |
8.0 | ASP.NET Core | 執行階段 | aspnetcore-runtime-8.0 |
8.0 | .NET | 執行階段 | dotnet-runtime-8.0 |
8.0 | .NET | SDK | dotnet-sdk-8.0 |
提示
如果您未建立 .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,您可以使用 apt upgrade
命令來升級套件。 例如,下列命令使用最新版本來升級 dotnet-sdk-9.0
套件:
sudo apt update
sudo apt upgrade dotnet-sdk-9.0
提示
如果您已在安裝 .NET 之後升級 Linux 發行版本,可能需要重新設定 Microsoft 套件存放庫。 執行您目前發行版本的安裝指示,以升級至 .NET 更新適用的套件存放庫。
管理預覽版本
下列各節說明如何安裝和卸載 .NET 的預覽版本。
安裝預覽版本
.NET 的預覽版與候選版均無法在套件存放庫中取得。 您可以使用下列其中一種方式來安裝 .NET 的預覽版與候選版:
- 使用 install-dotnet.sh 進行指令碼安裝
- 手動擷取二進位 (部分機器翻譯)
移除預覽版本
使用套件管理員來管理 .NET 的安裝時,如果您先前已安裝預覽版,可能會發生衝突。 套件管理員可能會將非預覽版理解為舊版 .NET。 若要安裝非預覽版本,請先解除安裝預覽版本。 如需了解更多關於解除安裝 .NET 的資訊,請參閱如何移除 .NET 執行階段和 SDK。
疑難排解
從 Ubuntu 22.04 開始,您可能會遇到似乎只有一段 .NET 可用的情況。 例如,您已安裝執行階段和 SDK,但在執行 dotnet --info
時,只會列出執行階段。 這種情況可能與使用兩個不同的套件來源有關。 內建的 Ubuntu 22.04 與 Ubuntu 22.10 軟體資源庫包含某些 .NET 版本,但並非所有版本,而且您可能也已從 Microsoft 資源庫安裝 .NET。 如需有關解決此問題的詳細資訊,請參閱針對與 Linux 上遺失檔案相關的 .NET 錯誤進行疑難排解 (部分為機器翻譯)。
APT 問題
本節提供您在使用 APT 安裝 .NET 時可能遇到的常見錯誤相關資訊。
找不到套件
重要
使用套件管理員從 Microsoft 套件摘要安裝 .NET,僅支援 x64 結構。 其他結構,例如 Arm,不受 Microsoft 套件摘要 支援。
如需在沒有套件管理員的情況下安裝 .NET 的詳細資訊,請參閱下列其中一篇文章:
-
使用
install-dotnet
指令碼來安裝 .NET。 - 手動安裝 .NET。
找不到 \ 某些套件無法安裝
注意
此資訊僅適用於從 Microsoft 套件摘要安裝 .NET 時。
如果您收到類似找不到套件 {dotnet-package} 或某些套件無法安裝的錯誤訊息,請執行下列命令。
下列這組命令中有兩個佔位符。
{dotnet-package}
這代表您要安裝的 .NET 套件,例如aspnetcore-runtime-8.0
。 這會在下列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 憑證
- 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 。 如需詳細資訊,請參閱 僅限 Windows 上支援的 System.Drawing.Common。
您可以將 Mono 存放庫新增至您的系統 (英文),以安裝最新版的 libgdiplus。