在 Debian 上安装 .NET SDK 或 .NET 运行时

本文介绍如何在 Debian 上安装 .NET。 如果 Debian 版本不受支持,则该版本不再支持 .NET。 但是,这些说明可以帮助你使 .NET 在这些版本上运行,即使它不受支持。

如果要开发 .NET 应用,请安装 SDK(包括运行时)。 或者,如果只需运行应用程序,请安装运行时。 如果要安装该运行时,建议安装 ASP.NET Core 运行时,因为它同时包括 .NET 和 ASP.NET Core 运行时。

使用 dotnet --list-sdksdotnet --list-runtimes 命令查看安装的版本。 有关详细信息,请参阅如何检查是否已安装 .NET

支持的发行版

下表列出了当前支持的 .NET 版本以及支持它们的 Debian 版本。 这些版本在 .NET 版本达到支持终止日期Debian 的版本达到生命周期之前仍受支持。

Debian .NET
13 10, 9, 8
12 10, 9, 8

以下 .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

安装预览版本

包存储库中未提供 .NET 的预览版和候选发布版本。 可通过下面其中一种方式安装 .NET 的预览版和候选发布版本:

删除预览版本

使用包管理器管理 .NET 安装时,如果之前安装了预览版本,则可能会遇到冲突。 包管理器可能会将非预览版本解释为 .NET 的较早版本。 若要安装非预览版本,需要首先卸载预览版本。 有关如何卸载 .NET 的详细信息,请参阅如何删除 .NET 运行时和 SDK

Debian 13

使用 APT 进行安装可通过几个命令来完成。 安装 .NET 之前,请运行以下命令,将 Microsoft 包签名密钥添加到受信任密钥列表,并添加包存储库。

打开终端并运行以下命令:

wget https://packages.microsoft.com/config/debian/13/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb

重要

Microsoft包源仅发布适用于 .NET 10 的 x64Arm64 包。 如果需要在其他体系结构(如 Arm32)上安装 .NET,请不要将包管理器与Microsoft包源一起使用。 有关在不使用包管理器的情况下安装 .NET 的详细信息,请参阅以下文章之一:

安装 SDK

.NET SDK 使你可以通过 .NET 开发应用。 如果安装 .NET SDK,则无需安装相应的运行时。 若要安装 .NET SDK,请运行以下命令:

sudo apt-get update && \
  sudo apt-get install -y dotnet-sdk-10.0

若要了解如何使用 .NET CLI,请参阅 .NET CLI 概述

安装运行时

通过 ASP.NET Core 运行时,可以运行使用 .NET 开发且未提供运行时的应用。 以下命令将安装 ASP.NET Core 运行时,这是与 .NET 最兼容的运行时。 在终端中,运行以下命令:

sudo apt-get update && \
  sudo apt-get install -y aspnetcore-runtime-10.0

作为 ASP.NET Core 运行时的一种替代方法,你可以安装不包含 ASP.NET Core 支持的 .NET 运行时:将上一命令中的 aspnetcore-runtime-10.0 替换为 dotnet-runtime-10.0

sudo apt-get install -y dotnet-runtime-10.0

若要了解如何使用 .NET CLI,请参阅 .NET CLI 概述

Debian 12

使用 APT 进行安装可通过几个命令来完成。 安装 .NET 之前,请运行以下命令,将 Microsoft 包签名密钥添加到受信任密钥列表,并添加包存储库。

打开终端并运行以下命令:

wget https://packages.microsoft.com/config/debian/12/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb

重要

Microsoft包源仅发布适用于 .NET 10 的 x64Arm64 包。 如果需要在其他体系结构(如 Arm32)上安装 .NET,请不要将包管理器与Microsoft包源一起使用。 有关在不使用包管理器的情况下安装 .NET 的详细信息,请参阅以下文章之一:

安装 SDK

.NET SDK 使你可以通过 .NET 开发应用。 如果安装 .NET SDK,则无需安装相应的运行时。 若要安装 .NET SDK,请运行以下命令:

sudo apt-get update && \
  sudo apt-get install -y dotnet-sdk-10.0

若要了解如何使用 .NET CLI,请参阅 .NET CLI 概述

安装运行时

通过 ASP.NET Core 运行时,可以运行使用 .NET 开发且未提供运行时的应用。 以下命令将安装 ASP.NET Core 运行时,这是与 .NET 最兼容的运行时。 在终端中,运行以下命令:

sudo apt-get update && \
  sudo apt-get install -y aspnetcore-runtime-10.0

作为 ASP.NET Core 运行时的一种替代方法,你可以安装不包含 ASP.NET Core 支持的 .NET 运行时:将上一命令中的 aspnetcore-runtime-10.0 替换为 dotnet-runtime-10.0

sudo apt-get install -y dotnet-runtime-10.0

若要了解如何使用 .NET CLI,请参阅 .NET CLI 概述

使用 APT 更新 .NET

当新的修补程序版本可用于 .NET 时,可以使用以下命令通过 APT 对其进行升级:

sudo apt-get update
sudo apt-get upgrade

如果在安装 .NET 后升级了 Linux 分发版,则可能需要重新配置Microsoft包存储库。 运行当前分发版本的安装说明,升级到相应的包存储库以进行 .NET 更新。

疑难解答

本部分提供有关使用 APT 安装 .NET 时可能会遇到的常见错误的信息。

找不到包

重要

Microsoft 包源根据 .NET 版本发布用于不同体系结构的包:

  • .NET 10:仅 x64Arm64 包。
  • .NET 9:仅 x64 包。
  • .NET 8:仅 x64 包。

如果需要在其他体系结构(如 Arm32)上安装 .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。 如果这不起作用,可使用以下命令运行手动安装:

如果使用的是 Debian 12 或更高版本,请尝试以下命令:

# 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}

如果使用的是低于 12 的 Debian 版本,请尝试以下命令:

# 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 或发布自包含的应用,则需要确保已安装以下库:

13.x

  • libc6
  • libgcc-s1
  • libgssapi-krb5-2
  • libicu72
  • libssl3
  • libstdc++6
  • zlib1g

12.x

  • libc6
  • libgcc-s1
  • libgssapi-krb5-2
  • libicu72
  • libssl3
  • libstdc++6
  • zlib1g

其他说明

可以使用 apt install 命令安装依赖项。 以下代码片段演示了如何安装 libc6 库:

sudo apt install libc6

后续步骤