如果从 LXD 容器中的 Ubuntu SDK IDE 执行的应用程序无法连接到 X 服务器,则 /tmp/.X11-unix 中的 X11 套接字可能已被删除,并且容器无法再访问 X 服务器。
其中一个容器启动时可能会删除套接字,请确保容器中未安装 lightdm(或任何其他登录管理器):
# lxc exec <container> -- apt-cache policy lightdm
还要确保 X11 服务器没有使用“-nolisten local”启动:
# bash -c "for i in $(pidof Xorg); do xargs -0 echo < /proc/$i/cmdline; done"
一些来自 beta 测试阶段(2016 年 8 月 25 日之前)的旧 SDK 映像安装了 lightdm 并删除了 X11 套接字,请通过重新创建容器确保当前使用的图像不是太旧。
但是如果这不是一个选项,那么下一步就是调试容器。要找出哪个容器正在移除套接字,请执行以下操作:
# lxc stop <container>
# touch /tmp/.X11-unix/X0
# lxc start <container>
检查受影响的文件是否消失,如果是,则容器已将其删除。默认 SDK 映像不应删除该文件,因此很可能是更新或手动安装的软件包导致了问题。
如果没有任何帮助,请通过 IRC freenode、#ubuntu-app-devel 联系我们 (zbenjamin、bzoltan)。