在Ubuntu的Snap下安装了VS Code无法启动
sudo apt install snapd
sudo snap install code --classic
mkdir ($id -u)
sudo mv ($id -u) /run/user/
code &
[1] 18060
安装snap和code以后,运行code毫无反应结束。
执行code verbose
执行code verbose如下,以后发现是X-Window打不开。详细内容请见附录。
code --verbose
...
Xlib: extension "XInputExtension" missing on display ":1".
Xlib: extension "XInputExtension" missing on display ":1".
[12192:1109/190657.768585:ERROR:electron_browser_main_parts.cc(200)] X IO error received (X server probably went away)
解决
参考这个帖子
Unable to open VS Code on Ubuntu VM instance on Google Cloud
https://github.com/microsoft/vscode/issues/86372
create the modified lib
mkdir ~/lib
cp /usr/lib/x86_64-linux-gnu/libxcb.so.1 ~/lib
sed -i 's/BIG-REQUESTS/_IG-REQUESTS/' ~/lib/libxcb.so.1
export LD_LIBRARY_PATH=$HOME/lib code #don't know if that's still necessary
unmount the snap so it can be modified and copy the modified lib into /usr/share/code/ --> then rebuild the snap and copy it back to its original location
sudo umount /snap/code/21
sudo unsquashfs /var/lib/snapd/snaps/code_21.snap
sudo cp '/home/ubuntu/lib/libxcb.so.1' /home/ubuntu/squashfs-root/usr/share/code/
sudo mksquashfs squashfs-root code_21.snap
sudo cp code_21.snap /var/lib/snapd/snaps/code_21.snap
sudo mount -t squashfs -o ro,nodev,relatime,x-gdu.hide /var/lib/snapd/snaps/code_21.snap /snap/code/21
附录:日志
$ code --verbose
[12192:1109/190657.487889:ERROR:appcenter_api.cc(52)] expecting appcenter url prefix
Xlib: extension "XInputExtension" missing on display ":1".
Xlib: extension "XInputExtension" missing on display ":1".
[12223:1109/190657.567112:ERROR:gl_surface_glx.cc(459)] GLX 1.3 or later is required.
[12223:1109/190657.567267:ERROR:gl_initializer_x11.cc(148)] GLSurfaceGLX::InitializeOneOff failed.
[12223:1109/190657.569496:ERROR:viz_main_impl.cc(152)] Exiting GPU process due to errors during initialization
Xlib: extension "XInputExtension" missing on display ":1".
[90m[main 2020-11-09T11:06:57.687Z][0m Starting VS Code
[90m[main 2020-11-09T11:06:57.689Z][0m from: /snap/code/49/usr/share/code/resources/app
[90m[main 2020-11-09T11:06:57.689Z][0m args: {
_: [],
diff: false,
add: false,
goto: false,
'new-window': false,
'reuse-window': false,
wait: false,
help: false,
'list-extensions': false,
'show-versions': false,
version: false,
verbose: true,
status: false,
'prof-startup': false,
'disable-extensions': false,
'disable-gpu': false,
telemetry: false,
debugRenderer: false,
logExtensionHostCommunication: false,
'skip-release-notes': 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,
'do-not-sync': false,
trace: false,
'force-user-env': false,
'open-devtools': false,
'no-proxy-server': false,
nolazy: false,
'force-renderer-accessibility': false,
'ignore-certificate-errors': false,
'allow-insecure-localhost': false
}
[90m[main 2020-11-09T11:06:57.691Z][0m Resolving machine identifier...
[90m[main 2020-11-09T11:06:57.691Z][0m Resolved machine identifier: 35b2ebcf92f39956a12f824572a63b1f76ae328ca90809d444b861cb84f9cfbb
[90m[main 2020-11-09T11:06:57.711Z][0m update#setState idle
[90m[main 2020-11-09T11:06:57.717Z][0m [storage state.vscdb] open(/home/caros/.config/Code/User/globalStorage/state.vscdb, retryOnBusy: true)
[90m[main 2020-11-09T11:06:57.718Z][0m lifecycle (main): phase changed (value: 2)
[90m[main 2020-11-09T11:06:57.719Z][0m windowsManager#open
[90m[main 2020-11-09T11:06:57.720Z][0m windowsManager#open pathsToOpen [ [Object: null prototype] {} ]
[90m[main 2020-11-09T11:06:57.722Z][0m window#validateWindowState: validating window state on 1 display(s) {
width: 1024,
height: 768,
mode: 1,
x: 138,
y: -34,
hasDefaultState: true
}
[90m[main 2020-11-09T11:06:57.722Z][0m window#validateWindowState: 1 monitor working area { x: 0, y: 0, width: 1300, height: 674 }
[90m[main 2020-11-09T11:06:57.722Z][0m window#ctor: using window state {
width: 1024,
height: 674,
mode: 1,
x: 138,
y: 0,
hasDefaultState: true
}
Xlib: extension "XInputExtension" missing on display ":1".
Xlib: extension "XInputExtension" missing on display ":1".
[12192:1109/190657.768585:ERROR:electron_browser_main_parts.cc(200)] X IO error received (X server probably went away)