使用安装脚本或通过提取二进制文件在 Linux 上安装 .NET

本文演示如何使用安装脚本或通过提取二进制文件,在 Linux 上安装 .NET SDK 或 .NET 运行时。 有关支持内置包管理器的发行版列表,请参阅在 Linux 上安装 .NET

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

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

.NET 版本

有两种类型的受支持版本:长期支持 (LTS) 版本或标准期限支持 (STS)。 所有版本的质量都是一样的。 唯一的区别是支持的时间长短。 LTS 版本可获得 3 年的免费支持和修补程序。 STS 版本可获得 18 个月的免费支持和修补程序。 有关详细信息,请参阅 .NET 支持策略

下表列出了每个版本的 .NET(和 .NET Core)的支持状态:

✔️ 受支持 ❌ 不受支持
8 (LTS) 5
7 (STS) 3.1
6 (LTS) 3.0
2.2
2.1
2.0
1.1
1.0

依赖项

安装 .NET 时,例如手动安装时,可能不会安装特定依赖项。 下面的列表详细列出了 Microsoft 支持的 Linux 发行版以及可能需要安装的依赖项。 更多信息,请查看发行版页面:

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

RPM 依赖项

如果之前未列出发行版,并且该版本基于 RPM,则可能需要以下依赖项:

  • krb5-libs
  • libicu
  • openssl-libs

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

DEB 依赖项

如果之前未列出发行版,并且该版本基于 debian,则可能需要以下依赖项:

  • libc6
  • libgcc1
  • libgssapi-krb5-2
  • libicu67
  • libssl1.1
  • libstdc++6
  • zlib1g

通用依赖项

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

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

脚本安装

dotnet-install 脚本用于 SDK运行时的自动化和非管理员安装。 可通过 https://dot.net/v1/dotnet-install.sh 下载脚本。如果以这种方式安装 .NET,必须安装 Linux 发行版所需的依赖项。 使用在 Linux 上安装 .NET一文中的链接获得特定 Linux 分发版。

重要事项

需要 Bash 才能运行该脚本。

可通过 wget 下载脚本:

wget https://dot.net/v1/dotnet-install.sh -O dotnet-install.sh

运行此脚本之前,请确保授予此脚本作为可执行文件运行的权限:

chmod +x ./dotnet-install.sh

此脚本默认安装最新的长期支持 (LTS) SDK 版本,即 .NET 8。 若要安装最新版本(可能不是 (LTS) 版本),请使用 --version latest 参数。

./dotnet-install.sh --version latest

若要安装 .NET 运行时而非 SDK,请使用 --runtime 参数。

./dotnet-install.sh --version latest --runtime aspnetcore

可以通过 --channel 参数更改特定主要版本来指示特定版本。 以下命令安装 .NET 8.0 SDK。

./dotnet-install.sh --channel 8.0

有关详细信息,请参阅 dotnet-install 脚本参考

若要在命令行上启用 .NET,请参阅设置系统范围的环境变量

手动安装

除了使用包管理器,还可以下载并手动安装 SDK 和运行时。 手动安装通常作为持续集成测试的一部分执行,或在不支持的 Linux 发行版上执行。 对于开发人员或用户,使用包管理器会更好。

从以下站点之一下载 SDK 或运行时的二进制版本。 .NET SDK 包括相应的运行时:

提取已下载的文件并使用 export 命令将 DOTNET_ROOT 设置为提取文件夹的位置,然后确保 .NET 位于 PATH 中。 导出 DOTNET_ROOT 会使 .NET CLI 命令在终端中可用。 有关 .NET 环境变量的详细信息,请参阅 .NET SDK 和 CLI 环境变量

可以将不同版本的 .NET 提取到同一文件夹,这些版本并存。

示例

以下命令使用 Bash 将环境变量 DOTNET_ROOT 设置为当前工作目录,后跟 .dotnet。 如果该目录不存在,则会创建它。 DOTNET_FILE 环境变量是要安装的 .NET 二进制版本的文件名。 此文件会提取到 DOTNET_ROOT 目录中。 DOTNET_ROOT 目录及其 tools 子目录都添加到 PATH 环境变量中。

重要事项

如果运行这些命令,请记住将 DOTNET_FILE 值更改为下载的 .NET 二进制文件的名称。

DOTNET_FILE=dotnet-sdk-8.0.100-linux-x64.tar.gz
export DOTNET_ROOT=$(pwd)/.dotnet

mkdir -p "$DOTNET_ROOT" && tar zxf "$DOTNET_FILE" -C "$DOTNET_ROOT"

export PATH=$PATH:$DOTNET_ROOT:$DOTNET_ROOT/tools

可以在同一文件夹中安装多个版本的 .NET。

还可以将 .NET 安装到由 HOME 变量或 ~ 路径标识的主目录:

export DOTNET_ROOT=$HOME/.dotnet

验证下载的二进制文件

下载安装程序后,请对其进行验证,以确保文件未被更改或损坏。 可以验证计算机上的校验和,然后将其与下载网站上报告的内容进行比较。

从官方下载页下载安装程序或二进制文件时,会显示该文件的校验和。 选择“复制”按钮将校验和值复制到剪贴板。

具有校验和的 .NET 下载页

使用 sha512sum 命令打印已下载的文件的校验和。 例如,以下命令报告 dotnet-sdk-8.0.100-linux-x64.tar.gz 文件的校验和

$ sha512sum dotnet-sdk-8.0.100-linux-x64.tar.gz
13905ea20191e70baeba50b0e9bbe5f752a7c34587878ee104744f9fb453bfe439994d38969722bdae7f60ee047d75dda8636f3ab62659450e9cd4024f38b2a5  dotnet-sdk-8.0.100-linux-x64.tar.gz

将校验和与下载站点提供的值进行比较。

重要事项

尽管这些示例中显示了 Linux 文件,但此信息同样适用于 macOS。

使用校验和文件进行验证

.NET 发行说明包含校验和文件的链接,可用于验证下载的文件。 以下步骤介绍了如何下载校验和文件并验证 .NET 安装二进制文件:

  1. GitHub 上的 .NET 8 发行说明页面 (https://github.com/dotnet/core/tree/main/release-notes/8.0) 包含“版本”部分。 该部分中的表链接到每个 .NET 8 版本的下载和校验和文件:

    .NET 的 github 发行说明版本表

  2. 选择下载的 .NET 版本的链接。 上一部分使用的 .NET SDK 8.0.100 位于 .NET 8.0.0 版本中。

  3. 在版本页面,可以看到 .NET 运行时和 .NET SDK 版本,以及校验和文件的链接:

    具有 .NET 校验和的下载表

  4. 将链接复制到校验和文件。

  5. 使用以下脚本,但替换链接以下载合适的校验和文件:

    curl -O https://dotnetcli.blob.core.windows.net/dotnet/checksums/8.0.0-sha.txt
    
  6. 将校验和文件和 .NET 版本文件下载到同一目录后,请使用 sha512sum -c {file} --ignore-missing 命令来验证下载的文件。

    如果验证通过,会看到打印了 OK 状态的文件:

    $ sha512sum -c 8.0.0-sha.txt --ignore-missing
    dotnet-sdk-8.0.100-linux-x64.tar.gz: OK
    

    如果看到文件标记为失败,则下载的文件无效,不应使用。

    $ sha512sum -c 8.0.0-sha.txt --ignore-missing
    dotnet-sdk-8.0.100-linux-x64.tar.gz: FAILED
    sha512sum: WARNING: 1 computed checksum did NOT match
    sha512sum: 8.0.0-sha.txt: no file was verified
    

设置系统范围的环境变量

如果使用了以前的安装脚本,则设置的变量仅适用于当前的终端会话。 将其添加到 shell 配置文件。 Linux 提供了许多不同的 shell,每个都有不同的配置文件。 例如:

  • Bash Shell: ~/.bash_profile~/.bashrc
  • Korn Shell:~/.kshrc 或 .profile
  • Z Shell:~/.zshrc 或 .zprofile

在 shell 配置文件中设置以下两个环境变量:

  • DOTNET_ROOT

    此变量设置为 .NET 安装到的文件夹,如 $HOME/.dotnet

    export DOTNET_ROOT=$HOME/.dotnet
    
  • PATH

    此变量应同时包含 DOTNET_ROOT 文件夹和 DOTNET_ROOT/tools 文件夹:

    export PATH=$PATH:$DOTNET_ROOT:$DOTNET_ROOT/tools
    

后续步骤