CentOS 8,之前装的2.1是正常的,然后卸载了,再装了3.1的SDK就炸了,始终command not found
[root@iZwz9883ha8ul4wcjros0tZ /]# sudo dnf install dotnet-sdk-3.1
Last metadata expiration check: 2:55:32 ago on Sat 29 Aug 2020 06:44:23 PM CST. Package dotnet-sdk-3.1-3.1.401-1.x86_64 is already installed.
Dependencies resolved.
Nothing to do.
Complete!
[root@iZwz9883ha8ul4wcjros0tZ /]# dotnet --info
-bash: dotnet: command not found
[root@iZwz9883ha8ul4wcjros0tZ /]# whereis dotnet
dotnet: /usr/bin/dotnet /usr/lib64/dotnet /etc/dotnet /usr/local/bin/dotnet /usr/share/dotnet /usr/share/man/man1/dotnet.1.gz
[root@iZwz9883ha8ul4wcjros0tZ /]# ls /usr/bin/dotnet/sdk
3.1.401
[root@iZwz9883ha8ul4wcjros0tZ /]# ls /usr/lib64/dotnet
host packs shared
[root@iZwz9883ha8ul4wcjros0tZ /]# ls /usr/local/bin/dotnet/sdk
3.1.401
[root@iZwz9883ha8ul4wcjros0tZ /]# ls /usr/share/dotnet/sdk
3.1.401
[root@iZwz9883ha8ul4wcjros0tZ /]#
试试 https://github.com/dotnet/runtime/issues/2929 中的方法
sudo ln -sf /usr/share/dotnet/dotnet /usr/local/bin/dotnet
试过了 sudo ln -sf /usr/share/dotnet /usr/bin/dotnet
@找不到一个满意的昵称: 直接运行 /usr/bin/dotnet --info
出现什么提示?
@dudu: -bash: /usr/bin/dotnet: Is a directory
[root@localhost dotnet]# whereis dotnet dotnet: /usr/bin/dotnet /usr/lib64/dotnet /etc/dotnet /usr/share/man/man1/dotnet.1.gz [root@localhost dotnet]# ls -l /usr/bin/dotnet lrwxrwxrwx. 1 root root 30 8月 11 20:05 /usr/bin/dotnet -> ../..//usr/lib64/dotnet/dotnet [root@localhost dotnet]# ls -l /usr/lib64/dotnet 总用量 120 -rwxr-xr-x. 1 root root 83872 8月 11 20:06 dotnet drwxr-xr-x. 3 root root 17 8月 29 23:03 host -rw-r--r--. 1 root root 1116 7月 30 10:08 LICENSE.txt drwxr-xr-x. 6 root root 153 8月 11 20:02 packs drwxr-xr-x. 3 root root 21 8月 29 23:04 sdk drwxr-xr-x. 4 root root 67 8月 29 23:04 shared drwxr-xr-x. 3 root root 19 8月 29 23:03 templates -rw-r--r--. 1 root root 31330 7月 30 10:08 ThirdPartyNotices.txt [root@localhost dotnet]# ls -l /etc/dotnet 总用量 4 -rw-r--r--. 1 root root 18 8月 11 20:05 install_location [root@localhost dotnet]#
搞了台新的机器也是centos 8
dnf install dotnet-sdk-3.1安装之后一切正常
我准备把老的机器上面的dotnet-sdk全部remove,然后再手动把dotnet的文件夹全部删除之后再安装试试
@找不到一个满意的昵称: /usr/bin/dotnet
的软链接不对,现在可能错误地链接到了/usr/share/dotnet
,应该是链接到/usr/share/dotnet/dotnet
@dudu:
Complete! [root@iZwz9883ha8ul4wcjros0tZ /]# dotnet -bash: dotnet: command not found [root@iZwz9883ha8ul4wcjros0tZ /]# whereis dotnet dotnet: /usr/lib64/dotnet /usr/share/dotnet [root@iZwz9883ha8ul4wcjros0tZ /]# ls /usr/lib64/dotnet host packs shared [root@iZwz9883ha8ul4wcjros0tZ /]# ls /usr/share/dotnet sdk templates [root@iZwz9883ha8ul4wcjros0tZ /]#
卸载完并手动删除所有dotnet目录之后,再dnf install dotnet-sdk-3.1安装,感觉少了很多东西一样。
跟上面比少了两样东西
1,/usr/lib64/dotnet/目录下没有dotnet
2, /usr/bin/dotnet 目录下没有/usr/lib64/dotnet/dotnet 的软连接
发现版本也不太一样,正常机器是3.1.107, 这台装的是3.1.401
@找不到一个满意的昵称: 用 yum 安装试试
@dudu: 啥都试了..
先卸载,然后rm几个dotnet目录,然后yum安装,跟dnf装的没啥区别。
[root@iZwz9883ha8ul4wcjros0tZ]# dnf remove dotnet-sdk-3.1 ... Complete! [root@iZwz9883ha8ul4wcjros0tZ]# whereis dotnet dotnet: [root@iZwz9883ha8ul4wcjros0tZ]# yum install dotnet-sdk-3.1 ... Complete! [root@iZwz9883ha8ul4wcjros0tZ]# dotnet --info -bash: dotnet: command not found
然后试着切换版本安装,一样
dnf install https://packages.microsoft.com/centos/8/prod/dotnet-sdk-3.1.107-x64.rpm ... Complete! [root@iZwz9883ha8ul4wcjros0tZ]# whereis dotnet dotnet: /usr/lib64/dotnet /usr/share/dotnet [root@iZwz9883ha8ul4wcjros0tZ]# ls /usr/lib64/dotnet host packs shared [root@iZwz9883ha8ul4wcjros0tZ]# ls /usr/share/dotnet sdk templates [root@iZwz9883ha8ul4wcjros0tZ]# dotnet --info -bash: dotnet: command not found
装出的目录跟(正常)虚拟机里面的都不一样/usr/lib64/dotnet/下少个dotnet
不知道什么原因,同样的CentOS 8.2,包都是3.1.107_x64,装出来目录和文件都不一样
@找不到一个满意的昵称: 建议参考微软官方文档,先试试 scripted install,如果还是不行,试试 manual install
@dudu: 感谢dudu,你太有耐心了... 终于好了,我之前也是一直看的官方文档安装的,前面的方式都试过了;始终有点排斥手动安装,怕搞不定。
#提取(下载自己需要的版本) dotnet-sdk-3.1.401-linux-x64.tar.gz 到 /usr/local/bin/dotnet 目录 [root@iZwz9883ha8ul4wcjros0tZ ~]# mkdir -p "/usr/local/bin/dotnet" && tar zxf dotnet-sdk-3.1.401-linux-x64.tar.gz -C "/usr/local/bin/dotnet" #提取完之后需要配置一个软连接到/usr/bin/dotnet,也可以配置环境变量,否则dotnet: command not found [root@iZwz9883ha8ul4wcjros0tZ ~]# ln -sf /usr/local/bin/dotnet/dotnet /usr/bin/dotnet [root@iZwz9883ha8ul4wcjros0tZ ~]# whereis dotnet dotnet: /usr/bin/dotnet /usr/local/bin/dotnet [root@iZwz9883ha8ul4wcjros0tZ ~]# dotnet --info .NET Core SDK (reflecting any global.json): Version: 3.1.401 Commit: 39d17847db ...
确定装好了?要环境变量的吧
我安装5.0 也是遇到了这个问题。装了几次,都是失败。
发现我先安装的.net core runtime,然后再安装的sdk。可能因为安装顺序不对,造成的。
--后来用新系统重新安装,先安装sdk,安装包要比 先安装runtime的时候,大了100M左右,安装之后,runtime 5.0也带上了的,并且dotnet 命令可以顺利执行。
我猜测,可能是sdk和runtime 安装顺序的问题。
搞了半天,你这个是忘记卸载host了 所以dotnet命令无效。
正确做法 卸载全部netcore包 命令:【sudo yum remove dotnet-host】,(https://docs.microsoft.com/zh-cn/dotnet/core/install/remove-runtime-sdk-versions?pivots=os-linux)里有写。
然后重新安装
1,sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
2,sudo yum install dotnet-sdk-5.0 (这步骤SDK包已经包含了运行时)
安装完毕后 执行 dotnet --info 就可以了,如果出现info信息 就ok了,不用再添加软连接啥的