我刚刚开始使用 WSLg,我可以运行 nautilus OK 之类的应用程序,但不能以 root 身份运行它们。
如果我使用 Windows 的“以管理员身份运行”选项运行它,那么该应用程序似乎只是以普通用户身份运行:
(base) ian@IansDesktop:~$ sudo ps aux | grep nautilus
ian 521 4.0 0.8 573876 70432 pts/1 Ssl+ 21:55 0:14 nautilus --new-window
如果我尝试从终端运行,sudo
它会退出并出现错误:
(base) ian@IansDesktop:~$ sudo nautilus --new-window
** (org.gnome.Nautilus:1025): WARNING **: 22:02:15.647: Error on getting connection: Failed to load SPARQL backend: Error spawning command line ?dbus-launch --autolaunch= --binary-syntax --close-stderr?: Child process exited with code 1
如何以 root 身份启动 WSLg 应用程序?
答案1
虽然我无法重现您的问题,但请让我分享我所知道的信息(到目前为止),因为它太长了,无法发表评论/聊天。我刚刚设置了一个全新的 20.04 WSL2(Windows 11)发行版来尝试重现您的问题,但它对我有用——我能够使用 启动 WSLg sudo nautilus --new-window
。
这个 Ask Ubuntu 答案在引用类似错误的问题上似乎表明尝试运行多个 Nautilus 实例时存在冲突,但我无法通过这种方式重现。
几点说明:
首先,最重要的是,这可能不是所有 GUI 应用程序的问题。我建议尝试:
sudo apt install xterm
sudo xterm
我预计这要么对您有用(使用 xterm 中的 root shell),要么帮助我们识别您的 root 问题(没有双关语;只是一个意外的惊喜)。
您还可以尝试wsl --terminate <distribution_name>
在新启动的实例中以 root 身份运行 Nautilus。
而且,也有可能sudo -E nautilus --new-window
得到不同的结果,但根据我的测试,我认为这种情况不太可能发生。不过,还是值得一试。
最后,需要意识到的一件重要事情是,在 WSLg 下运行 Gnome 应用程序并不像运行大多数其他 GUI 应用程序那么简单。Gnome 应用程序高度依赖许多其他相互关联的功能,例如:
- D-总线
- 系统化
- gio/gvfs
我以为我能够将您的特定问题追踪到其中之一,但我还无法将这些点连接起来并在我的系统上重现它。
通常可能的来克服 WSL 上的 Gnome 问题,但它肯定比其他应用程序需要更多的努力。
例如,即使作为普通用户,Operation not supported
如果您尝试访问“垃圾箱”功能,Nautilus 也可能会出错。这可以通过以下方法解决:
dbus-launch nautilus
...它将在 D-bus 用户会话内启动 Nautilus,从而gvfs
通过 D-bus 提供支持。
这引出了最后一个想法——您也可以尝试:
sudo dbus-launch nautilus