当我用sudo运行一个编译过的程序时,例如:sudo ./program
,它说:
必须安装.NET才能运行此应用程序。
应用程序:/home/pi/program架构:arm应用主机版本:6.0.10.NET位置:未找到
了解运行时安装:https://aka.ms/dotnet/app-launch-failed
下载.NET运行时:https://aka.ms/dotnet-core-applaunch?missing_runtime=true&arch=手臂&rid=raspbian.11arm&apphost_version=6.0.10
然而,它同时安装在root
和pi
两个帐户中,我知道它与sudo有关,但我不知道如何修复它。Afaik sudo创建了一个干净的环境,但无论我在/etc/sudoers
中禁用secure_path
,甚至添加路径,它都会不断显示上述消息。
我已经在树莓派3b+中安装了dotnet 6.0.10的脚本版本:
uname -a
输出:
Linux raspberrrypi 5.15.74-v7+#1595 SMP 10月26日星期三英国夏令时2022 armv7l GNU/Linux
我已经在root
和pi
:中导出了两条到env的路径
.bashrc
内容:
export DOTNET_ROOT=$HOME/.DOTNETexport PATH=$PATH:$HOME/.dotnet
每次修改后,我都会重新启动几次,env路径会相应地更新,但它总是失败
它的唯一工作方式是使用sudo su
或sudo -i
以root身份登录,但每次我想使用root访问运行程序时,这样做都会让人头疼
我能做什么?
好吧,最简单的解决方案总是最好的。
sudo
有一个保留环境的参数-E,因此它可以识别网络路径。
一个简单的解决方案是运行sudo -E ./program
或创建一个包含-E的别名,并为每次使用保留环境。
显示溶液的sudo参数