【问题标题】:Cannot install .NET Core 3.1 using Fedora 31无法使用 Fedora 31 安装 .NET Core 3.1
【发布时间】:2019-12-05 17:06:29
【问题描述】:

我遵循了使用 Fedora 31 安装 .NET Core 3.1 的文档,链接如下:https://docs.microsoft.com/en-us/dotnet/core/install/linux-package-manager-fedora30

我运行的命令是:

sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
sudo wget -q -O /etc/yum.repos.d/microsoft-prod.repo https://packages.microsoft.com/config/fedora/30/prod.repo

后跟:

sudo dnf install dotnet-sdk-3.1

它不断报告未找到该包。查看终端输出:

Last metadata expiration check: 1:14:48 ago on Thu 05 Dec 2019 15:44:56 GMT.
No match for argument: dotnet-sdk-3.1
Error: Unable to find a match: dotnet-sdk-3.1

文档有错吗?

【问题讨论】:

  • 我不熟悉dnf,但我知道apt 必须执行apt-get update 才能检索包列表,是否有与dnf 等效的东西?
  • 是的,我在 Ubuntu 上通过 aptitude 注意到了这一点。然而,Dnf 仅提供 dnf clean expire-cache 并不能解决问题。
  • 好的,试试sudo dnf install dotnet-sdk-3.1.100
  • 做得更好,dnf search dotnet-sdk-3.1 它回来了dotnet-sdk-3.1.x86_64 : Microsoft .NET Core SDK 3.1.100 3.1.100。看起来文档是错误的。
  • sudo dnf install dotnet-sdk-3.1.x86_64 不起作用

标签: .net-core


【解决方案1】:

从 Fedora 32 开始内置了 dotnet SDK 存储库:

对我有用的是:

  1. 从包管理器中删除旧存储库
sudo rm -rf /etc/yum.repos.d/microsoft-prod.repo
  1. 清理 dnf 缓存
sudo dnf clean all
  1. 删除所有 dotnet 包
sudo dnf remove dotnet*

提示:如果您使用 fish 或 zsh 作为常规 shell,请在 bash 中运行命令

  1. 然后重新安装 SDK:
sudo dnf install dotnet-sdk-3.1

【讨论】:

  • 从 Fedora 31 升级后遇到同样的问题。您的解决方案对我有用。也许添加sudo dnf remove dotnet* 作为可选步骤。
【解决方案2】:

这往往发生在从 fedora 30 升级到 31 并且之前安装了 dotnet core 版本的系统上。

我去核并删除了我所有的 dotnet 共享文件夹(警告!您将丢失所有 dotnet 引用):

sudo rm -rf /usr/share/dotnet
sudo rm -rf /usr/bin/dotnet
sudo rm -rf /etc/yum.repos.d/microsoft-prod.repo
sudo wget -q -O /etc/yum.repos.d/microsoft-prod.repo https://packages.microsoft.com/config/fedora/30/prod.repo

然后我找到了https://unix.stackexchange.com/questions/505625/fedora-29-repo-issue

然后运行以下内容:

sudo dnf clean all
sudo dnf upgrade

在此之后我再次尝试安装,它成功了:

sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
sudo wget -q -O /etc/yum.repos.d/microsoft-prod.repo https://packages.microsoft.com/config/fedora/30/prod.repo
sudo dnf install dotnet-sdk-3.1

我不清楚为什么会这样。将教我如何将我的 Fedora 系统视为宠物! :)

【讨论】:

  • 也许这里的magic saucesudo dnf clean all。不确定,我在 AWS 中为 ubuntu 进行打包程序构建时,一直看到镜像提供 duff 包。
  • 谢谢,也帮了我。我同意 sudo dnf clean all 完成这项工作的观点。
【解决方案3】:

您之前输入过 sudo dnf update 吗? 我刚刚在 Fedora 31 上安装,运行良好。

【讨论】:

  • 是的,尝试返回 Last metadata expiration check: 2:00:23 ago on Thu 05 Dec 2019 15:44:56 GMT. Dependencies resolved. Nothing to do. Complete!
  • 即使在尝试导航到packages.microsoft.com/fedora/30/prod 并直接下载并安装软件包后,anaconda 仍会报告Unable to install dotnet-sdk-3.1: Could not depsolve transaction; 1 problem detected。尝试工作了解哪个日志报告问题的方式。
【解决方案4】:

将我的系统从 Fedora 31 升级到 Fedora 32 后,我的 dotnet 命令因错误消息而中断。

It was not possible to find any installed .NET Core SDKs

dotnet core 包是在升级之前使用问题中描述的方法安装的。

在检查了我的系统上有哪些 dotnet 包之后

sudo dnf list installed 'dotnet*'

该列表还显示了 SDK 2.1、2.2 和 3.1。

为了解决这个问题,我尝试通过删除 dotnet-sdk-3.1

sudo dnf remove dotnet-sdk-3.1

并清理了 dnf 缓存

sudo dnf clean all

但重新安装后问题仍然存在。

我的解决方案是删除上面使用 dnf 命令列出的 所有 dotnet 包。

然后我就跑了

sudo dnf install dotnet-sdk-3.1

问题就解决了。

【讨论】:

    【解决方案5】:

    我尝试在 Fedora 32 上安装 dotnet-sdk-3.1 之前没有安装 dotnet。但是,我无法让它与 dnf 一起工作,我总是得到:

    It was not possible to find any installed .NET Core SDKs.

    我的解决方案是从https://dotnet.microsoft.com/download/dotnet-core 下载 Linux x64 二进制文件,将 tar.gz 解压缩到一个目录,然后将目录添加到路径中。

    【讨论】:

      【解决方案6】:

      SDK安装位置导致的问题。当你运行命令时: dnf rq -l dotnet-sdk-3.1 它指出 sdk 安装在 /usr/share/dotnet/ 下,而不是 /usr/lib64/dotnet/ 安装实际可执行文件的位置。

      当您检查该位置时,您会发现那里安装了更多,就像他们想移动软件的位置但做了一半的工作。所以我所做的...将所有内容移至 /usr/lib64/dotnet/,然后将文件夹 /usr/share/dotnet 替换为 /usr/lib64/dotnet 的链接。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-10-18
        • 1970-01-01
        • 2020-04-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-29
        相关资源
        最近更新 更多