通过 SSH 启动 X 应用程序时出现 libGL 错误

通过 SSH 启动 X 应用程序时出现 libGL 错误

我有一个在虚拟 KVM 机器中运行的 Debian Stretch x64 服务器。我已在 Windows 7 Pro x64 上安装了 Cygwin,并希望在 Debian 计算机上使用 Windows 计算机上的 Cygwin X 服务器运行 X 应用程序。

这是我的服务器端 SSH 守护进程配置(Debian 端):

AcceptEnv LANG LC_*
AllowAgentForwarding no
AllowTcpForwarding no
AllowStreamLocalForwarding no
ChallengeResponseAuthentication no
Ciphers [email protected],[email protected],aes256-ctr
Compression no
DebianBanner no
HostKeyAlgorithms [email protected],[email protected],ssh-rsa,ssh-ed25519
KbdInteractiveAuthentication no
KexAlgorithms curve25519-sha256,[email protected],diffie-hellman-group-exchange-sha256
ListenAddress 192.168.20.12:22
LoginGraceTime 20
MACs [email protected],[email protected]
PasswordAuthentication no
PermitUserRC no
Protocol 2
PubkeyAcceptedKeyTypes ssh-rsa,ssh-ed25519
RekeyLimit 100M 20m
Subsystem sftp /usr/lib/openssh/sftp-server
TCPKeepAlive no
X11Forwarding yes
X11UseLocalhost yes

这是我用来konsole在服务器(Windows 端)上启动的批处理文件:

set CYG=c:\cygwin64

%CYG%\bin\run.exe XWin -multiwindow -resize -clipboard -listen inet :1
SET DISPLAY=:1
SET LANG=en_US.UTF-8
%CYG%\bin\ssh.exe -f -Y [email protected] "LANG=en_US.UTF-8 konsole"
"C:\Program Files (x86)\cmdow\cmdow.exe" X-Morn-multiwindow /HID
exit

原则上,这是有效的:执行此批处理文件时,konsole在我的 Windows 桌面上的窗口中启动。但窗口中出现两条错误消息cmd

libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast

作为最后的手段,我可​​以忍受这些错误,因为konsole(以及我需要的其他应用程序)显然实际上可以工作,但我真的更愿意知道那里发生了什么(即导致错误消息的原因)。

通过阅读我上面提到的其他问题/线程/博客条目,我的印象是该问题可能与缺失nvidiamesa组件有关。因此,我在 Debian 服务器上安装了其中一些组件(以 root 身份):

aptitude install libgl1-mesa-glx libgl1-glvnd-nvidia-glx

事实上,当我运行上面提到的批处理文件时,libGL不再抛出错误。但不幸的是,现在konsoleWindows 桌面上不再出现该窗口。

再次卸载这两个软件包后,konsole当我运行批处理文件时,该窗口再次出现 - 当然,libGL错误消息也是如此。

我想了解这两种现象。那么错误消息的原因可能是什么libGL(考虑到通过 SSH 运行 X 应用程序时缺少mesa驱动nvidia程序或库不应发挥作用),以及为什么安装上述两个软件包会阻止窗口konsole出现?

答案1

对我来说

apt install libgl1-mesa-glx

在 20.0.8-0ubuntu1~20.04.1 下有什么区别吗?两条错误消息都消失了

答案2

安装以下软件包后问题就消失了(apt已将它们安装在一起):

  • dbus-x11
  • libglib2.0-测试
  • libdbus-glib-1-2
  • libgee-0.8-2
  • libmoonshot1

我无法确定这些包中的哪个(或其组合)使问题消失。我不打算做进一步的检查,因为这台机器同时已经成为生产服务器。

不过,我想我可以给出一个有根据的猜测:

  • libgee-0.8-2并且libmoonshot1与低级 X11 或 UI 部分没有任何直接关系,因此我非常确定它们已退出游戏。
  • libglib2.0-tests(顾名思义)只是 的测试套件GLib,所以我很确定这也超出了游戏范围。
  • 我实在不知道剩下的两位候选人中哪一位可能解决了这个问题。我感觉这个问题更多的是与 相关,GLib而不是与 相关X11,所以我最喜欢的是libdbus-glib-1-2。但这确实只是一种感觉……

如果处于相同情况的人(即设置 Debian 延伸服务器并通过 SSH 运行 X 应用程序)能够确认这一点,那就太好了。但即使没有,我认为这个答案是有用的,因为这个问题已经在其他地方被问过几十次了,但没有给出解决方案(据我所知)。

相关内容