Ubuntu 20 环境下彻底卸载与升级 Dotnet 的完整指南
1. 为什么要彻底卸载旧版Dotnet在Ubuntu 20.04上开发.NET应用时我经常遇到这样的困扰系统里残留多个版本的Dotnet SDK和运行时导致项目构建时版本冲突。比如上周调试一个ASP.NET Core项目时明明指定了.NET 6.0却总是莫名其妙调用到7.0的组件。这种幽灵依赖问题往往是因为旧版本卸载不彻底造成的。微软的.NET采用并行版本安装机制不同版本会共存于/usr/share/dotnet目录。但直接用apt remove卸载时常会留下运行时文件、共享组件和配置文件。实测发现仅用默认命令卸载后dotnet --list-sdks仍可能显示残留版本信息。更麻烦的是这些残留文件可能占用数百MB磁盘空间还会影响新版本的安装过程。2. 彻底卸载Dotnet的完整流程2.1 检查已安装的Dotnet版本在开始卸载前我们需要先摸清系统现状。打开终端执行dotnet --list-sdks dotnet --list-runtimes这两个命令会分别列出所有已安装的SDK和运行时版本。在我的测试机上输出是这样的2.1.818 [/usr/share/dotnet/sdk] 3.1.426 [/usr/share/dotnet/sdk] 5.0.408 [/usr/share/dotnet/sdk] 6.0.301 [/usr/share/dotnet/sdk]特别注意那些标记为[upgradable from: x.x.x]的版本这表示该版本有可用更新。记录下这些信息后面卸载时会用到。2.2 使用APT卸载主程序包对于每个要卸载的版本执行以下命令模板sudo apt remove --purge dotnet-sdk-版本号 sudo apt remove --purge dotnet-runtime-版本号比如要卸载.NET 5.0sudo apt remove --purge dotnet-sdk-5.0 sudo apt remove --purge dotnet-runtime-5.0关键点在于--purge参数它会同时删除配置文件。我对比过不加这个参数时/etc/dotnet目录下的配置文件会保留可能导致后续安装出现问题。2.3 清理残留文件和目录APT卸载后还需要手动清理这些位置/usr/share/dotnet核心安装目录/etc/dotnet全局配置文件/usr/local/bin可能存在的符号链接~/.dotnet用户级缓存执行以下清理命令sudo rm -rf /usr/share/dotnet sudo rm -rf /etc/dotnet sudo rm -rf ~/.dotnet find /usr/local/bin -lname /usr/share/dotnet/* -delete特别注意如果系统有其他用户也在使用Dotnet他们的~/.dotnet目录也需要单独清理。2.4 验证卸载结果完成上述步骤后运行dotnet --version应该看到类似这样的错误信息No .NET SDKs were found. Download a .NET SDK: https://aka.ms/dotnet/download这表示卸载已成功。为保险起见还可以检查which dotnet是否返回空结果。3. 安装新版Dotnet的最佳实践3.1 准备安装环境首先确保系统已更新sudo apt update sudo apt upgrade -y然后安装基础依赖sudo apt install -y wget tar gzip3.2 添加微软软件源执行以下命令添加官方源以Ubuntu 20.04为例wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb rm packages-microsoft-prod.deb这里有个坑要注意如果之前安装过旧版/etc/apt/sources.list.d/microsoft-prod.list文件可能指向过期仓库。建议先删除旧文件sudo rm /etc/apt/sources.list.d/microsoft-prod.list3.3 安装指定版本SDK更新软件包索引后可以选择安装最新LTS版本推荐生产环境使用sudo apt install -y dotnet-sdk-8.0或最新稳定版sudo apt install -y dotnet-sdk-9.0如果开发需要多版本共存可以同时安装多个SDK。比如sudo apt install -y dotnet-sdk-6.0 dotnet-sdk-8.03.4 配置全局设置安装完成后建议设置默认SDK版本dotnet new globaljson --sdk-version 8.0.404 --force这会生成global.json文件确保项目默认使用指定版本。查看生效版本dotnet --version4. 常见问题解决方案4.1 安装后命令找不到如果遇到dotnet: command not found通常是PATH设置问题。解决方法export PATH$PATH:$HOME/.dotnet:$HOME/.dotnet/tools echo export PATH$PATH:$HOME/.dotnet:$HOME/.dotnet/tools ~/.bashrc4.2 版本冲突处理当项目要求的SDK版本与全局版本不匹配时有几种解决方案在项目目录创建global.json指定版本使用dotnet tool install安装局部工具通过dotnet new模板创建项目时指定SDK版本4.3 磁盘空间优化Dotnet SDK会占用较大空间可以通过以下命令清理缓存dotnet nuget locals all --clear dotnet workload uninstall对于不常用的SDK版本可以考虑只保留运行时sudo apt remove dotnet-sdk-6.0 sudo apt install dotnet-runtime-6.05. 进阶维护技巧5.1 自动化版本管理建议使用dotnet-core-uninstall工具管理版本wget https://dotnet.microsoft.com/download/dotnet/scripts/v1/dotnet-uninstall-pkgs.sh chmod x dotnet-uninstall-pkgs.sh sudo ./dotnet-uninstall-pkgs.sh这个脚本可以列出所有可卸载的版本并支持批量操作。5.2 离线安装方案对于内网环境可以下载离线包安装wget https://download.visualstudio.microsoft.com/download/pr/包ID/哈希/dotnet-sdk-8.0.404-linux-x64.tar.gz mkdir -p $HOME/dotnet tar zxf dotnet-sdk-8.0.404-linux-x64.tar.gz -C $HOME/dotnet export DOTNET_ROOT$HOME/dotnet export PATH$PATH:$HOME/dotnet5.3 容器化部署对于生产环境建议使用Docker镜像docker run --rm mcr.microsoft.com/dotnet/sdk:8.0 dotnet --version这能实现环境隔离避免主机污染。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2524240.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!