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

.NET 在 Fedora 上受支持,本文就将介绍如何在 Fedora 上安装 .NET。 如果 Fedora 版本不受支持,则该版本不再支持 .NET。

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

如果已安装 SDK 或运行时,请使用 dotnet --list-sdksdotnet --list-runtimes 命令查看安装了哪些版本。 有关详细信息,请参阅如何检查是否已安装 .NET

有关在不使用包管理器的情况下安装 .NET 的详细信息,请参阅以下文章之一:

安装 .NET 5.0

Fedora 的默认包存储库中提供的 .NET 最新版是 .NET 5.0。

安装 SDK

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

sudo dnf install dotnet-sdk-5.0

安装运行时

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

sudo dnf install aspnetcore-runtime-5.0

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

sudo dnf install dotnet-runtime-5.0

安装 .NET Core 3.1

安装 SDK

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

sudo dnf install dotnet-sdk-3.1

安装运行时

.NET Core 运行时允许运行使用不随附运行时的 .NET Core 所开发的应用。 以下命令安装 ASP.NET Core 运行时,这是与 .NET Core 最兼容的运行时。 在终端中,运行以下命令。

sudo dnf install aspnetcore-runtime-3.1

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

sudo dnf install dotnet-runtime-3.1

支持的发行版

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

  • ✔️ 指示 Fedora 或 .NET 版本仍受支持。
  • ❌ 指示 Fedora 或 .NET 版本在该 Fedora 版本上不受支持。
  • 当 Fedora 版本和 .NET 版本都有 ✔️ 时,将支持该 OS 和 .NET 组合。
.NET 版本 Fedora 34 ✔️ 33 ✔️ 32 ✔️ 31 ❌ 30 ❌ 29 ❌ 28 ❌ 27 ❌
.NET 5.0 ✔️ ✔️ ✔️
.NET Core 3.1 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
.NET Core 2.1 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️

以下 .NET 版本不再受到支持。 这些版本的下载仍保持发布状态:

  • 3.0
  • 2.2
  • 2.0

删除预览版本

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

依赖项

使用包管理器进行安装时,将为你安装这些库。 但是,如果手动安装 .NET Core 或发布自包含的应用,则需要确保已安装以下库:

  • krb5-libs
  • libicu
  • openssl-libs
  • zlib

如果目标运行时环境的 OpenSSL 版本为1.1 或更高版本,则需要安装 compat-openssl10。

有关依赖项的详细信息,请参阅独立式 Linux 应用

对于使用 System.Drawing.Common 程序集的 .NET Core 应用,还需要以下依赖项:

在早期的发行版上进行安装

Fedora 的早期版本的默认包存储库中并不包含 .NET Core。 可使用 snap 通过 dotnet-install.sh 脚本安装 .NET,或使用 Microsoft 的存储库安装 .NET:

  1. 首先,将 Microsoft 签名密钥添加到受信任的密钥列表。

    sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
    
  2. 接下来,添加 Microsoft 包存储库。 存储库的源基于你的 Fedora 版本。

    Fedora 版本 包存储库
    31 https://packages.microsoft.com/config/fedora/31/prod.repo
    30 https://packages.microsoft.com/config/fedora/30/prod.repo
    29 https://packages.microsoft.com/config/fedora/29/prod.repo
    28 https://packages.microsoft.com/config/fedora/28/prod.repo
    27 https://packages.microsoft.com/config/fedora/27/prod.repo
    sudo wget -O /etc/yum.repos.d/microsoft-prod.repo https://packages.microsoft.com/config/fedora/31/prod.repo
    

安装 SDK

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

sudo dnf install dotnet-sdk-3.1

安装运行时

.NET Core 运行时允许运行使用不随附运行时的 .NET Core 所开发的应用。 以下命令安装 ASP.NET Core 运行时,这是与 .NET Core 最兼容的运行时。 在终端中,运行以下命令。

sudo dnf install aspnetcore-runtime-3.1

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

sudo dnf install dotnet-runtime-3.1

如何安装其他版本

.NET 的所有版本均可从 https://dotnet.microsoft.com/download/dotnet 下载,但需要手动安装。 可尝试使用包管理器安装不同版本的 .NET。 但请求的版本可能不可用。

添加到包管理器源的包以可改动的格式命名,例如:{product}-{type}-{version}

  • product
    要安装的 .NET 产品的类型。 有效选项是:

    • dotnet
    • aspnetcore
  • type
    选择 SDK 或运行时。 有效选项是:

    • SDK
    • Runtime — 运行时
  • version
    要安装的 SDK 或运行时的版本。 本文始终提供最新支持的版本的说明。 有效选项为任何已发布的版本,例如:

    • 5.0
    • 3.1
    • 3.0
    • 2.1

    尝试下载的 SDK/运行时可能不适用于 Linux 发行版。 有关受支持的发行版列表,请参阅在 Linux 上安装 .NET

示例

  • 安装 ASP.NET Core 5.0 运行时:aspnetcore-runtime-5.0
  • 安装 .NET Core 2.1 运行时:dotnet-runtime-2.1
  • 安装 .NET 5.0 SDK:dotnet-sdk-5.0
  • 安装 .NET Core 3.1 SDK:dotnet-sdk-3.1

缺少包

如果包版本组合无效,则它不可用。 例如,未安装 ASP.NET Core SDK,所有 SDK 组件都包含在 .NET SDK 中。 aspnetcore-sdk-2.2 的值不正确,应为 dotnet-sdk-2.2。 有关 .NET 支持的 Linux 发行版的列表,请参阅 .NET 依赖项和要求

包管理器疑难解答

本部分提供有关使用包管理器安装 .NET 或 .NET Core 时可能会遇到的常见错误的信息。

找不到包

有关在不使用包管理器的情况下安装 .NET 的详细信息,请参阅以下文章之一:

未能提取

安装 .NET 包时,可能会看到类似于 signature verification failed for file 'repomd.xml' from repository 'packages-microsoft-com-prod' 的错误。 一般而言,此错误表示 .NET 的包源正在通过更新的包版本进行更新,应稍后重试。 升级期间,包源的不可用时间不应超过 2 小时。 如果持续收到此错误超过 2 小时,请在 https://github.com/dotnet/core/issues 中提交问题。

有关如何解决这些问题的详细信息,请参阅排查 fxrlibhostfxr.soFrameworkList.xml 错误

后续步骤