Ubuntu+VNC環境でVSCode が起動しない
概要
VSCodeをUbuntuで動いているVNCサーバーでの上で起動しようとしたがすぐには動かなかった。ネットで見つけた方法で対応したら動くようになった。
経緯
競技プログラミングをお勉強中、コーディング速度が非常に重要と分かってきた。いままでKVM管理下でUbuntuを動かし、その端末上のvimとコマンドによるコンパイル・実行で対応していたが、ネットをみているとコーディング環境についてVSCodeついて言及されているものが多かったので試しに入れてみることにした。しかし、導入して起動しようとしてもうんともすんとも言わない。ネットで検索したところ対処方法が記載されていたので、対応したところ動くようにはなった。メモとして残しておく。
環境
myoden@ubuntu002:~$ uname -a
Linux ubuntu002 4.15.0-70-generic #79-Ubuntu SMP Tue Nov 12 10:36:11 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
myoden@ubuntu002:~$ cat /etc/os-release
NAME="Ubuntu"
VERSION="18.04.3 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.3 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic
myoden@ubuntu002:~$
myoden@ubuntu002:~$ dpkg -l | grep -i vnc4server
ii vnc4server 4.1.1+xorg4.3.0-37.3ubuntu2 amd64 Virtual network computing server software
myoden@ubuntu002:~$
対応
プロンプトから"code"と入力してもなにも反応がないままコードが終了する。"--vervose"オプションつけて実行したところ以下のようなログを出力して停止
[myoden@ubuntu002 デスクトップ]$ code --verbose
Xlib: extension "XInputExtension" missing on display "localhost:2.0".
Xlib: extension "XInputExtension" missing on display "localhost:2.0".
[10408:1201/072304.164159:ERROR:gl_surface_glx.cc(430)] GLX 1.3 or later is required.
[10408:1201/072304.164535:ERROR:gl_initializer_x11.cc(147)] GLSurfaceGLX::InitializeOneOff failed.
[10408:1201/072304.180115:ERROR:viz_main_impl.cc(170)] Exiting GPU process due to errors during initialization
[10385:1201/072304.197770:WARNING:gpu_process_host.cc(1193)] The GPU process has crashed 1 time(s)
Xlib: extension "XInputExtension" missing on display "localhost:2.0".
[10385:1201/072304.364384:WARNING:gpu_process_host.cc(967)] Reinitialized the GPU process after a crash. The reported initialization time was 74 ms
[main 2019-11-30T22:23:04.364Z] Starting VS Code
[main 2019-11-30T22:23:04.366Z] from: /usr/share/code/resources/app
[main 2019-11-30T22:23:04.366Z] args: {
_: [],
diff: false,
add: false,
goto: false,
'new-window': false,
'reuse-window': false,
wait: false,
version: false,
help: false,
telemetry: false,
'list-extensions': false,
'show-versions': false,
verbose: true,
status: false,
'prof-startup': false,
'disable-extensions': false,
'disable-gpu': false,
'extension-development-confirm-save': false,
logExtensionHostCommunication: false,
'skip-getting-started': false,
'skip-release-notes': false,
'sticky-quickopen': false,
'disable-restore-windows': false,
'disable-telemetry': false,
'disable-updates': false,
'disable-crash-reporter': false,
'disable-user-env-probe': false,
'skip-add-to-recently-opened': false,
'unity-launch': false,
'open-url': false,
'file-write': false,
'file-chmod': false,
'driver-verbose': false,
force: false,
trace: false,
'force-user-env': false,
'no-proxy-server': false,
nolazy: false
}
[main 2019-11-30T22:23:04.368Z] Resolving machine identifier...
[main 2019-11-30T22:23:04.369Z] Resolved machine identifier: 26aa198ee07e89232219186ffee757460162e0bbdbc95a9ba90a17efaa868deb (trueMachineId: undefined)
[main 2019-11-30T22:23:04.419Z] update#setState idle
[main 2019-11-30T22:23:04.423Z] [storage state.vscdb] open(/home/myoden/.config/Code/User/globalStorage/state.vscdb, retryOnBusy: true)
[main 2019-11-30T22:23:04.424Z] lifecycle (main): phase changed (value: 2)
[main 2019-11-30T22:23:04.425Z] windowsManager#open
Xlib: extension "XInputExtension" missing on display "localhost:2.0".
Xlib: extension "XInputExtension" missing on display "localhost:2.0".
[10385:1201/072304.547696:ERROR:atom_browser_main_parts.cc(183)] X IO error received (X server probably went away)
[myoden@ubuntu002 デスクトップ]$
適当にググったところこの辺りが同じ現象Visual Studio Code won't open on Ubuntu 16.04 via VNC、VS Code not working on Ubuntu when connected using XRDP. #3451の様子なので、以下の対応を実施
[myoden@ubuntu002 ~]$ mkdir ~/lib
[myoden@ubuntu002 ~]$ cp /usr/lib/x86_64-linux-gnu/libxcb.so.1 ~/lib
[myoden@ubuntu002 ~]$ sed -i 's/BIG-REQUESTS/_IG-REQUESTS/' ~/lib/libxcb.so.1
[myoden@ubuntu002 ~]$ export LD_LIBRARY_PATH=~/lib
[myoden@ubuntu002 ~]$ code
バグの内容はよくわかっていないが、まずは画面が起動するようになったことは確認できた。