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

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

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

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

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

支持的发行版

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

Fedora .NET
39 8、7、6
38 8、7、6
37 8、7、6

以下 .NET 版本 ❌ 不再受到支持:

  • .NET 5
  • .NET Core 3.1
  • .NET Core 3.0
  • .NET Core 2.2
  • .NET Core 2.1
  • .NET Core 2.0

安装 .NET 8

重要

.NET 8 已于 2023 年 11 月 14 日发布。 可能需要一段时间,包才会显示在包管理器源中。

安装 SDK

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

sudo dnf install dotnet-sdk-8.0

安装运行时

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

sudo dnf install aspnetcore-runtime-8.0

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

sudo dnf install dotnet-runtime-8.0

安装 .NET 7

安装 SDK

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

sudo dnf install dotnet-sdk-7.0

安装运行时

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

sudo dnf install aspnetcore-runtime-7.0

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

sudo dnf install dotnet-runtime-7.0

安装 .NET 6

安装 SDK

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

sudo dnf install dotnet-sdk-6.0

安装运行时

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

sudo dnf install aspnetcore-runtime-6.0

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

sudo dnf install dotnet-runtime-6.0

安装预览版本

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

删除预览版本

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

依赖项

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

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

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

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

sudo yum install libicu

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

如果 .NET 应用使用 System.Drawing.Common 程序集,则还需要安装 libgdiplus。 由于 Linux 上不再支持 System.Drawing.Common,因此这仅适用于 .NET 6,并且需要设置 System.Drawing.EnableUnixSupport 运行时配置开关。

可以通过将 Mono 存储库添加到系统来安装最新版 libgdiplus

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

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

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

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

    Fedora 版本 包存储库
    36 https://packages.microsoft.com/config/fedora/36/prod.repo
    35 https://packages.microsoft.com/config/fedora/35/prod.repo
    34 https://packages.microsoft.com/config/fedora/34/prod.repo
    33 https://packages.microsoft.com/config/fedora/33/prod.repo
    32 https://packages.microsoft.com/config/fedora/32/prod.repo
    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 SDK 使你可以通过 .NET 开发应用。 如果安装 .NET SDK,则无需安装相应的运行时。 若要安装 .NET SDK,请运行以下命令:

sudo dnf install dotnet-sdk-7.0

安装运行时

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

sudo dnf install aspnetcore-runtime-7.0

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

sudo dnf install dotnet-runtime-7.0

如何安装其他版本

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

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

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

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

    • sdk(仅适用于 dotnet 产品)
    • runtime
  • version
    要安装的 SDK 或运行时的版本。 有效选项为任何已发布的版本,例如:

    • 8.0
    • 6.0
    • 3.1
    • 2.1

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

示例

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

注意

某些包在 Linux 发行版上可能不可用。

缺少包

如果包版本组合无效,则它不可用。 例如,没有 ASP.NET Core SDK。 ASP.NET Core 的所有 SDK 组件都包含在 .NET SDK 中。 aspnetcore-sdk-8.0 的值不正确,应为 dotnet-sdk-8.0。 有关 .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 错误

后续步骤