有两个 .NET 安装:
$ lsb_release -d
Description: Ubuntu 22.04.1 LTS
$ which dotnet
/usr/bin/dotnet
$ which dotnet-sdk.dotnet
/snap/bin/dotnet-sdk.dotnet
这两个安装看似独立:
$ dotnet --list-sdks
6.0.109 [/usr/lib/dotnet/dotnet6-6.0.109/sdk]
$ dotnet-sdk.dotnet --list-sdks
7.0.100-rc.1.22431.12 [/snap/dotnet-sdk/181/sdk]
我已尝试删除所有 dotnet:
sudo apt remove --purge dotnet-sdk-6.0
sudo apt remove --purge dotnet-runtime-6.0
sudo apt remove --purge aspnetcore*
但此后,dotnet 仍然指向未通过 snap 安装的某些内容:
$ which dotnet
/usr/bin/dotnet
按照符号链接:
/usr/bin/dotnet -> /etc/alternatives/dotnet
/etc/alternatives/dotnet -> /usr/lib/dotnet/dotnet6-6.0.109/dotnet
由于 PATH/usr/bin/
在执行/snap/bin
时非 snap 版本就已经启动了dotnet
,所以强力解决方案会移到/snap/bin
PATH 的前面,但我不确定这是否会产生意想不到的后果。
协调这些的最佳方法是什么?我认为我首选的选项是仅使用 snap 管理安装。
答案1
经过又一次尝试后sudo apt remove --purge dotnet6xxxx
我终于注意到了该The following packages were automatically installed and are no longer required
部分。
sudo apt autoremove
仅剩 snap 版本之后:
$ which dotnet
/snap/bin/dotnet
$ dotnet --list-sdks
7.0.100-rc.1.22431.12 [/snap/dotnet-sdk/181/sdk]