Debian 安装 .NET 的汇总

1.APT 安装

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

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

Bash复制

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

安装 SDK

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

Bash复制

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

2.脚本安装

dotnet-install 脚本用于 SDK 和运行时的自动化和非管理员安装。

Bash复制

wget https://dot.net/v1/dotnet-install.sh -O dotnet-install.sh
chmod +x ./dotnet-install.sh
./dotnet-install.sh --version latest

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

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

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

手动安装 .NET 不会添加系统范围的环境变量,并且通常仅适用于安装 .NET 的会话。 应为操作系统设置两个环境变量:

  • DOTNET_ROOT此变量设置为 .NET 安装到的文件夹,例如 $HOME/.dotnet(对于 Linux 和 macOS )和 PowerShell 中的 $HOME\.dotnet(对于 Windows)。
  • PATH此变量应同时包含 DOTNET_ROOT 文件夹和用户的 .dotnet/tools 文件夹。 通常,在 Linux 和 macOS 上为 $HOME/.dotnet/tools,在 Windows 上为 PowerShell 中的 $HOME\.dotnet\tools

 提示

对于 Linux 和 macOS,请使用 echo 命令在 shell 配置文件中设置变量,例如 .bashrc:

Bash复制

echo 'export DOTNET_ROOT=$HOME/.dotnet' >> ~/.bashrc
echo 'export PATH=$PATH:$DOTNET_ROOT:$DOTNET_ROOT/tools' >> ~/.bashrc

问题处理:bash: dotnet: command not found

某些情况下,当使用APT安装完成之后,dotnet --info 显示 命令没有找到!使用ll查看 “/usr/bin/dotnet” 链接 指向 “/usr/share/dotnet/dotnet”,但是/usr/share/dotnet/dotnet中并没有dotnet文件。

ll /usr/bin/dotnet
lrwxrwxrwx 1 root root 24 Dec 28 19:22 /usr/bin/dotnet -> /usr/share/dotnet/dotnet

发现APT安装时缺少文件,产生的文件数量不完整。

处理方法:先使用安装脚本安装到 “.dotnet/”文件夹下,拷贝文件到 /usr/share/dotnet,再 使用 ln 链接到 /usr/share/dotnet/dotnet(已创建链接,可以跳过),然后删除 .dotnet 文件夹。

wget https://dot.net/v1/dotnet-install.sh
chmod +x dotnet-install.sh
./dotnet-install.sh
cp -r -n .dotnet/* /usr/share/dotnet
ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet
rm -rf .dotnet

注意:APT安装 在 “.dotnet”文件夹 ,脚本安装 在 “/usr/share/dotnet”文件夹中。所以不要两种安装方法同时,会创建两个副本,占用1个G的空间。可以使用上面的命令,脚本安装,复制子文件后删除一个副本。


问题处理:找不到\无法安装某些包

如果收到类似于“找不到包 {dotnet-package}”或“无法安装某些包”的错误消息,请运行以下命令

以下命令组中有两个占位符。

  • {dotnet-package}
    此项表示要安装的 .NET 包,如 aspnetcore-runtime-8.0。 它在以下 sudo apt-get install 命令中使用。
  • {os-version}
    这表示你正在使用的发行版。 此项在以下 wget 命令中使用。 发行版是数值,如 Ubuntu 上的 20.04 或 Debian 上的 10

首先,尝试清除包列表:

Bash复制

sudo dpkg --purge packages-microsoft-prod && sudo dpkg -i packages-microsoft-prod.deb
sudo apt-get update

然后,再次尝试安装 .NET。 如果这不起作用,可使用以下命令运行手动安装:

Bash复制

sudo apt-get install -y gpg
wget -O - https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor -o microsoft.asc.gpg
sudo mv microsoft.asc.gpg /etc/apt/trusted.gpg.d/
wget https://packages.microsoft.com/config/debian/{os-version}/prod.list
sudo mv prod.list /etc/apt/sources.list.d/microsoft-prod.list
sudo chown root:root /etc/apt/trusted.gpg.d/microsoft.asc.gpg
sudo chown root:root /etc/apt/sources.list.d/microsoft-prod.list
sudo apt-get update && \
  sudo apt-get install -y {dotnet-package}

手动删除 .NET 运行时和 SDK

如果使用 dotnet-install 脚本或通过提取 tarball 来安装 .NET,则必须使用手动方法删除 .NET。

手动安装 .NET 时,它通常安装到 /usr/share/dotnet//usr/lib/dotnet/ 或 $HOME/.dotnet 目录中。 SDK、运行时和 .NET 主机安装到单独的子目录中。 这些“组件”目录包含每个 .NET 版本的目录。 通过删除版本控制目录,可以从系统中删除该版本的 .NET。 这些目录可能因你的 Linux 分发版而异。

可以使用三个命令来发现 .NET 的安装位置:dotnet --list-sdks(用于 SDK)、dotnet --list-runtimes(用于运行时)和 dotnet --info(用于所有内容)。 这些命令不会列出 .NET 主机。 若要确定安装了哪些主机,请检查 /usr/share/dotnet/host/fxr/ 目录。 以下列表表示特定版本的 .NET 的目录,其中 $version 变量表示 .NET 的版本:

  • SDK/usr/share/dotnet/sdk/$version/
  • 运行时:运行时基于特定的 .NET 产品运行时,例如 Microsoft.AspNetCore.All 或 Microsoft.NETCore.App(特别是 .NET 运行时)。 它们将安装到 /usr/share/dotnet/shared/$product/$version 目录,其中 $product 是产品运行时。 例如,可能会看到以下目录:复制/usr/share/dotnet/shared/Microsoft.NETCore.App/$version/ /usr/share/dotnet/shared/Microsoft.AspNetCore.App/$version/ /usr/share/dotnet/shared/Microsoft.AspNetCore.All/$version/
  • .NET 主机/usr/share/dotnet/host/fxr/$version/

使用 rm -rf 命令删除 .NET 版本。 例如,若要删除 6.0.406 SDK,请运行以下命令:

Bash复制

sudo rm -rf /usr/share/dotnet/sdk/6.0.406

 重要

版本目录可能与要卸载的“版本”不匹配。 与单个 .NET 版本一起安装的各个运行时和 SDK 可能具有不同的版本。 例如,你可能安装了 ASP.NET Core 8 运行时,其中安装了 8.0.2 ASP.NET Core 运行时和 8.0.8. NET 运行时。 二者有不同版本的目录。 有关详细信息,请参阅 .NET 的版本控制方式概述


使用 URL 配置终结点

以下部分介绍如何使用以下方式配置终结点:

  • ASPNETCORE_URLS 环境变量。
  • --urls 命令行参数。
  • urls 主机配置键。
  • UseUrls 扩展方法。
  • WebApplication.Urls 属性。

在 Linux 上使用 linux-dev-certs 信任 HTTPS 证书

dotnet tool update -g linux-dev-certs
dotnet linux-dev-certs install

安装dotnet 脚本

dotnet tool install -g csharprepl
dotnet tool install -g dotnet-script
dotnet tool install -g Microsoft.dotnet-httprepl

查看安装的脚本

dotnet tool list -g
其他命令:

install <PACKAGE_ID> Install global or local tool. Local tools are added to manifest and restored.

uninstall <PACKAGE_ID> Uninstall a global tool or local tool.

update <PACKAGE_ID> Update a global or local tool.

list <PACKAGE_ID> List tools installed globally or locally.

run <COMMAND_NAME> <toolArguments> Run a local tool. Note that this command cannot be used to run a global tool.

search <SEARCH_TERM> Search dotnet tools in nuget.org

restore Restore tools defined in the local tool manifest.