升级至Debian Testing Buster后游戏出现QXcbConnection错误,root用户无法启动
问题求助:Debian升级后root用户无法启动游戏(普通用户正常)
之前在Debian 9.3 Stretch系统下游戏能正常运行,升级到Debian Testing Buster后,用相同的启动命令运行时,出现了Error protocol和QXcbConnection错误。关键是普通用户可以毫无问题地启动游戏,但root用户完全没法启动,系统信息见附图。
几个可以尝试的解决思路
- 先排查X11访问权限:root用户默认可能没有权限访问当前的X显示会话。你可以先在普通用户的终端里执行
xhost +local:root,然后切换到root用户再启动游戏试试。这个操作是临时开放权限,重启后会失效,如果有效,再考虑配置永久的权限规则。 - 检查游戏配置文件的权限:系统升级后,游戏的配置文件(一般在
~/.config/[你的游戏名]或者游戏安装目录下)权限可能发生了变化,导致root用户读不到或者写不了。你可以用ls -l ~/.config/[游戏名称]查看权限,如果是普通用户专属的权限,要么把配置复制一份到root的/root/.config目录下,要么调整权限让root能访问。 - 修复Qt/Xcb的环境配置:
QXcbConnection错误大多和Qt的Xcb后端有关,root用户的环境变量可能缺了必要的配置。先对比普通用户和root用户的echo $DISPLAY输出,确保root的DISPLAY值和普通用户一致(通常是:0)。另外,试试在root用户下先执行export QT_XCB_GL_INTEGRATION=xcb_glx,再运行游戏启动命令。 - 尽量避免用root运行GUI程序:说句题外话,Linux下不推荐用root运行图形界面应用,不仅有安全风险,还容易碰到各种权限、环境不一致的问题。如果不是必须用root,建议还是用普通用户账号运行游戏。
内容的提问来源于stack exchange,提问作者Orlando Cartagena




