
从官方源开始:为什么这是最靠谱的选择
你可能会问,网上那么多一键安装脚本,为什么非要折腾官方源?这里我得掏心窝子跟你说个我的真实经历:去年给公司服务器部署.NET项目,图省事用了某论坛的第三方源,当时确实快,几分钟就装好了。结果三个月后微软发布安全补丁,我运行apt upgrade想更新,系统直接提示“无法验证包完整性”——第三方源根本没同步更新!最后没办法,只能卸载重装,项目停了半小时才恢复。后来查微软官方文档(https://learn.microsoft.com/zh-cn/dotnet/core/install/linux-ubuntu?nofollow)才发现,人家早就说了“不推荐使用非官方渠道的安装包,可能存在安全风险或兼容性问题”。
官方源到底好在哪?我 了三个点,你记一下:
第一是安全
,微软的签名密钥会给每个安装包加密,APT验证通过才会安装,不用担心恶意软件; 第二是更新及时,不管是功能更新还是安全补丁,官方源都是第一时间同步,不像第三方源可能拖几周甚至几个月; 第三是兼容性强,官方源会根据你的Ubuntu版本(比如20.04、22.04)自动匹配兼容的dotnet版本,不会出现“装了能用但跑项目就崩”的情况。
不过配置官方源确实比第三方源多几步,但这点时间花得值。就像你网购宁愿多等两天也要官方旗舰店,图的就是放心,对吧?
手把手命令行操作:从0到1配置dotnet环境
第一步:准备工作——确认你的Ubuntu版本
在开始之前,你得知道自己的Ubuntu是什么版本,因为不同版本支持的dotnet版本不一样。打开终端,输入这个命令:
lsb_release -r
会显示类似“Release: 22.04”的信息,记下来。比如Ubuntu 20.04最高支持到.NET 8,22.04能支持到最新的.NET 9预览版,这个对应关系微软官网有表格,我把常用的整理成了下面的表,你可以对照着看:
Ubuntu版本 | 支持的最新.NET版本 | SDK包名称示例 |
---|---|---|
20.04 LTS | .NET 8 | dotnet-sdk-8.0 |
22.04 LTS | .NET 9(预览版) | dotnet-sdk-9.0 |
24.04 LTS | .NET 9 | dotnet-sdk-9.0 |
表:Ubuntu版本与.NET版本对应关系(数据来源:微软官方文档)
第二步:添加微软官方签名密钥和源
这一步是核心,很多人失败就是因为密钥没加对,或者源地址写错了。你跟着我一步步来,别着急复制粘贴。
安装必要的依赖包,这些是APT用来处理HTTPS源的,输入:
sudo apt-get update && sudo apt-get install -y apt-transport-https ca-certificates curl
如果提示“已经是最新版本”就不管,继续下一步。
然后添加微软的签名密钥,这个密钥用来验证安装包是不是微软官方发布的,输入:
curl https://packages.microsoft.com/keys/microsoft.asc | gpg dearmor | sudo tee /etc/apt/trusted.gpg.d/microsoft.gpg > /dev/null
这里注意,网址必须是https的,之前有同事用http,结果密钥下载不全,后面装包一直报错“签名无效”,折腾了好久才发现是这个问题。
接下来配置APT源,根据你的Ubuntu版本,选下面对应的命令。比如你的是22.04,就用第二个:
sudo add-apt-repository "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-focal-prod focal main"
sudo add-apt-repository "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-jammy-prod jammy main"
sudo add-apt-repository "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-noble-prod noble main"
输完命令后,系统会提示“是否继续”,按Enter就行。这时候源就配置好了,记得再更新一下APT缓存:
sudo apt-get update
如果这一步提示“GPG error: 公钥不可用”,别慌,说明密钥没加成功,回到添加密钥那一步重新来一遍,我第一次操作时也手抖输错过命令,多试一次就好。
第三步:安装SDK还是Runtime?根据你的需求选
现在源配好了,该装软件了。这里你要搞清楚,你需要的是SDK还是Runtime?简单说:
我自己肯定装SDK,毕竟要写代码嘛。安装命令很简单,比如你要装.NET 8的SDK,输入:
sudo apt-get install -y dotnet-sdk-8.0
如果只要Runtime,就装:
sudo apt-get install -y aspnetcore-runtime-8.0
(ASP.NET Core项目用这个)
或者 sudo apt-get install -y dotnet-runtime-8.0
(控制台应用用这个)
装的时候可能会看到“正在解包”“正在设置”的提示,等几分钟,别中途关终端。我之前帮实习生装,他看进度条不动就关了,结果文件损坏,只能卸载重装,所以耐心点。
第四步:验证安装——确认一切正常
装完了别着急关终端,验证一下是否成功。输入:
dotnet version
如果显示类似“8.0.100”的版本号,恭喜你,成功了!如果提示“dotnet: 未找到命令”,先检查前面的步骤有没有漏,特别是源配置和安装命令有没有输对,或者重启终端再试,有时候环境变量没刷新。
再进阶一点,你可以运行dotnet info
,会显示更详细的信息,包括安装路径、Runtime版本、支持的架构等。我每次装完都会截图保存,万一以后项目出问题,这些信息对排查错误很有用。
多版本共存:怎么装旧版本又不冲突
如果你像我一样,既要维护老项目(比如用.NET 6),又要开发新项目(用.NET 8),可以同时装多个版本,系统会自动管理。安装方法和前面一样,比如再装个.NET 6的SDK:
sudo apt-get install -y dotnet-sdk-6.0
装完后,用dotnet list-sdks
可以看到所有已安装的SDK,像这样:
6.0.417 [/usr/share/dotnet/sdk]
8.0.100 [/usr/share/dotnet/sdk]
默认情况下,系统会用最新的版本,如果你想切换默认版本,用这个命令:
sudo update-alternatives config dotnet
会列出所有已安装的版本,输入序号就能切换,我之前不知道这个命令,每次切换版本都重装,现在想想真是太傻了。
踩坑实录:我遇到过的5个典型问题及解决办法
就算步骤都对,也可能遇到各种小问题,我把自己踩过的坑和解决办法整理出来,你可以对照着看:
E: 无法定位软件包 dotnet-sdk-8.0
原因:源配置错误,或者你的Ubuntu版本不支持这个.NET版本。
解决:用lsb_release -r
确认Ubuntu版本,再检查源地址是不是对应版本的,比如20.04用focal,22.04用jammy,别混了。
dotnet run
时报“缺少libicuuc.so.66” 原因:缺少国际化支持库,Ubuntu默认可能没装。
解决:装libicu库:sudo apt-get install -y libicu66
(20.04用66,22.04用70,根据提示的版本号改)。
原因:当前用户对目录没有写权限。
解决:别用root用户装SDK,普通用户装完后,在自己的家目录(比如~/projects)创建项目,或者改目录权限:sudo chown -R $USER:$USER 你的目录
。
dotnet version
显示的版本不对 原因:之前用其他方式装过dotnet,路径冲突了。
解决:先卸载旧版本:sudo apt-get remove -y dotnet*
,然后重新按步骤装。
原因:微软可能调整了源地址,或者你的网络不通(比如公司防火墙拦截)。
解决:去微软官网查最新的源地址,或者用手机热点试试,我之前在公司内网就遇到过,换热点一下就好了。
按照这些步骤走,你应该能顺利装好dotnet环境了。我自己前后帮十几个人装过,只要严格按官方源来,成功率基本100%。如果中间哪个环节卡住了,或者有其他问题,随时回来留言,我看到都会回复。对了,装完后记得跑个小项目试试,比如用dotnet new console -o myapp
创建个控制台应用,再cd myapp && dotnet run
,看到“Hello World!”就说明大功告成啦!
你问Ubuntu服务器版和桌面版装dotnet是不是一个步骤?我跟你说,只要系统版本一样,比如都是22.04或者20.04,那命令行操作从头到尾都能通用。我之前给公司配服务器的时候,就是对着桌面版的教程一步步敲命令,从添加微软的签名密钥,到配置APT源地址,再到装SDK或者Runtime,甚至验证版本的dotnet version命令,完全没差别。服务器版虽然没图形界面,但装dotnet本来就靠终端,反而更纯粹,不用分心点鼠标;桌面版你要是习惯用终端,操作步骤跟服务器版分毫不差,我自己笔记本上装的时候,就是打开终端复制粘贴命令,十分钟搞定。
不过有个小细节得注意,服务器版为了轻量,默认可能没装curl和apt-transport-https这两个工具——这俩是用来下载官方源密钥和处理HTTPS链接的。你要是在服务器上装,先跑一下sudo apt-get install curl apt-transport-https,花一分钟补全依赖,后面就和桌面版一模一样了。桌面版出厂就带了这些工具,所以不用这一步。其他像验证安装、多版本管理这些操作,不管是服务器还是桌面版,用的命令都一样,比如dotnet list-sdks看已装版本,或者update-alternatives切换默认版本,完全通用。我之前帮朋友在他的Ubuntu笔记本上装,又在公司服务器上配,两套环境用的是同一份笔记,一点没踩坑。
如何卸载已安装的dotnet版本?
如果需要卸载某个dotnet版本(如旧版本SDK或Runtime),可以通过APT命令直接操作。卸载SDK使用:sudo apt-get remove -y dotnet-sdk-版本号
(例如卸载.NET 6 SDK:sudo apt-get remove -y dotnet-sdk-6.0
);卸载Runtime使用:sudo apt-get remove -y aspnetcore-runtime-版本号
(ASP.NET Core项目)或sudo apt-get remove -y dotnet-runtime-版本号
(控制台应用)。若需彻底清理残留配置,可追加purge
参数(如sudo apt-get remove purge dotnet-sdk-6.0
),但注意这会删除所有相关配置文件,仅 完全不需要该版本时使用。
安装后运行“dotnet”命令提示“未找到命令”,可能是什么原因?
这种情况通常是环境变量未正确加载或安装路径未添加到系统PATH。首先检查终端是否重启过,刚安装完dotnet后,环境变量需要重启终端才能生效;若重启后仍提示,可手动验证安装路径:ls /usr/share/dotnet
,若显示dotnet可执行文件,说明安装成功,只需将路径添加到PATH:export PATH=$PATH:/usr/share/dotnet
,并将该命令添加到~/.bashrc
(或对应shell的配置文件)中永久生效。如果路径不存在,可能是安装过程中断, 重新执行安装命令并检查输出日志。
Ubuntu服务器版(无图形界面)和桌面版安装dotnet的步骤一样吗?
完全一样。无论是服务器版(如Ubuntu Server 22.04)还是桌面版(Ubuntu Desktop 22.04),只要系统版本相同,安装dotnet的命令行步骤(添加官方源、安装依赖、配置密钥等)完全一致。服务器版无需额外安装图形化工具,所有操作通过终端即可完成;桌面版若使用终端执行命令,步骤与服务器版无差异。唯一可能的区别是服务器版默认可能未安装curl
或apt-transport-https
,需先通过sudo apt-get install curl apt-transport-https
补充依赖,而桌面版通常已预装这些工具。
官方源下载速度慢,有没有办法加速?
若官方源(https://packages.microsoft.com
)速度较慢,可优先考虑微软官方提供的中国镜像源(需注意验证源的可靠性)。 将源地址中的https://packages.microsoft.com
替换为https://mirror.azure.cn/microsoft
(微软 Azure 中国镜像),具体步骤:编辑源文件(sudo nano /etc/apt/sources.list.d/microsoft.list
),将原地址替换为镜像地址,保存后执行sudo apt-get update
即可。注意:非官方镜像可能存在同步延迟风险,生产环境 优先使用官方源,个人开发环境可临时使用镜像加速,但需定期同步官方源确保更新及时。
如何查看系统中已安装的dotnet SDK和Runtime版本?
通过两个简单命令即可查看:查看已安装的SDK版本,执行dotnet list-sdks
,输出格式类似“8.0.100 [/usr/share/dotnet/sdk]”;查看已安装的Runtime版本,执行dotnet list-runtimes
,输出包含Runtime类型(如ASP.NET Core Runtime、.NET Runtime)及版本路径。这两个命令能帮你快速确认安装是否成功,以及是否存在多个版本共存的情况,方便后续版本切换或项目环境匹配。