问题描述

在Ubuntu 22.04 LTS上自己希望安装 .NET 7 preview的sdk,但是 .NET 7并未被列入apt的源中,即使加上微软的源也不行,但是实验又确实需要 .NET 7在Ubuntu上进行,网上也暂无类似问题,找不到参考。

这里给了一种解决方案,应该不仅适用于 .NET 7,还适用于所有类似安装apt源没有的 .NET 7版本。

解决方案

首先,在此微软官方文档里写了通过脚本或者二进制来安装,一开始是想通过二进制的方式安装的,但是不知道是不是姿势不对,并没法成功,于是尝试脚本安装。

首先按照文档里面说的把脚本文件下载到任意文件夹:

sudo chmod +x ./dotnet-install.sh

按照文档,我们想安装7.0就需要运行以下命令:

./dotnet-install.sh -c 7.0

但这里很可能运行失败(网络出错),因为你懂的,不是国内的,这时候建议是配置一个梯子,这样是最简单的,当然大佬也可以去分析下这个脚本修改成load本地文件安装。我用的是clash,具体配置方式网上有很多资料,这里随便甩一个我当时参考的链接:https://juejin.cn/post/7123100274171838495

如果挂上之后还是下载失败,比如显示下面的报错信息,就重启下终端即可。

OpenSSL SSL_read: Connection reset by peer, errno 104

脚本的输出提示安装成功之后,还可能出现一个问题,就是dotnet命令找不到sdk,这个我们可以通过下面的命令先看一下刚刚的sdk被安装到哪个位置了:

./dotnet-install.sh -c 7.0 --dry-run

一般来讲是安装到了~/.dotnet这个文件夹下,然后我们试一下下面的命令:

~/.dotnet/dotnet --version

如果不出意外的话会成功显示版本信息而不是提示找不到sdk。

那么为什么之前命令失败了呢?这个比较简单,运行下面命令看一下默认的dotnet是啥:

which dotnet

一般来讲运行结果是/usr/bin/dotnet,对于这个可能用root可以解决,但如果是服务器就自己用,那还是建议用软链接的方式:

sudo rm /usr/bin/dotnet
ln -s ~/.dotnet/dotnet /usr/bin/dotnet

再运行dotnet--version,不出意外的话就OK了。