首页 > 解决方案 > .NET Core 3.1 安装在 Fedora 32 上,但它不起作用

问题描述

dotnet 程序位于目录“/usr/bin/dotnet”中。当我切换到该目录并运行 dotnet new web 时,我得到的只是:

找不到任何已安装的 .NET Core SDK 您是要运行 .NET Core SDK 命令吗?从以下位置安装 .NET Core SDK:> https://aka.ms/dotnet-download

建议?

标签: .net-corefedora

解决方案


当我切换到那个目录

不要dotnet new/usr/bin目录中运行。里面有一个指向实际二进制文件的符号链接,以便它在您的 PATH 中可用。所以/usr/bin/dotnet可能会指向一个位置,例如/usr/lib64/dotnet/dotnet. 您应该能够dotnet从您的用户有权访问的任何位置运行。

dotnet-sdk-3.1问题可能与现在在官方的 fedora 存储库和 microsoft 存储库中可用的事实有关,因此您可能混合了不兼容的二进制文件。

我今天遇到了类似的问题,我安装了以下类似的软件包:

dotnet-apphost-pack-3.1   x86_64    3.1.8-1.fc32    @updates
dotnet-host               x86_64    3.1.8-1.fc32    @updates
dotnet-hostfxr-3.1        x86_64    3.1.8-1.fc32    @updates
dotnet-runtime-3.1        x86_64    3.1.8-1.fc32    @updates
dotnet-runtime-deps-3.1   x86_64    3.1.8-1         @packages-microsoft-com-prod
dotnet-sdk-3.1            x86_64    3.1.402-1       @packages-microsoft-com-prod
dotnet-targeting-pack-3.1 x86_64    3.1.8-1.fc32    @updates
...

事实证明,我之前从 Microsoft 的 repo 安装的软件包与 Fedora 的软件包(带有 .fc32 的软件包)不能很好地配合。

为了解决这个问题,我只需要卸载我所有的 dotnet 包:sudo dnf remove dotnet-*然后将 fedora 存储库的优先级设置为高于 microsoft。这是通过编辑受影响的存储库来完成的,例如/etc/yum.repos.d/fedora.repo并添加:

优先级 = N (其中 N 是 1 到 99 之间的数字)

我将 Fedora 的 repos 设置为优先级 1(无论如何他们确实应该这样做),将 microsoft 的 repos 设置为 5。

然后简单地再次安装,这次它会从 Fedora repo 中下载:

sudo dnf install dotnet-sdk-3.1

现在更像是:

dotnet-sdk-3.1            x86_64    3.1.108-1.fc32  @updates
dotnet-apphost-pack-3.1   x86_64    3.1.8-1.fc32    @updates
dotnet-host               x86_64    3.1.8-1.fc32    @updates
dotnet-hostfxr-3.1        x86_64    3.1.8-1.fc32    @updates
dotnet-runtime-3.1        x86_64    3.1.8-1.fc32    @updates
dotnet-targeting-pack-3.1 x86_64    3.1.8-1.fc32    @updates
...

一切正常。运行dotnet --list-sdks输出:3.1.108 [/usr/lib64/dotnet/sdk]


推荐阅读