我之前写过一篇《通过 WSL2 运行 GUI 程序》的 Blog,感兴趣的朋友可以关注我的主页。今天我试了一下用在 WSL2 中安装 VSCode,挺麻烦的就想着留个笔记。
步骤
更新 wsl2
进入 ubuntu,检查 snap
$ snap version
snap 2.58+20.04
snapd unavailable
series 16
Windows Subsystem for Linux -
kernel 5.15.79.1-microsoft-standard-WSL2 (amd64)
复制代码
通过 snap 安装 vscode
$ sudo snap install --classic code
error: cannot communicate with server: Post http://localhost/v2/snaps/code: dial unix /run/snapd.socket: connect: no such file or directory
复制代码
此时,依旧存在报错,据网上资料,win10 的 WSL2 才会有,而 Win11 的 WSL2 是正常的
$ systemctl status snapd.service
System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down
复制代码
可以看出 systemd 没有通过 sudo vi /etc/wsl.conf 添加
退出 wsl,重启 wsl
检查 systemd 是否启动了
$ sudo systemctl status
[sudo] password for ubuntu:
● MSI
State: degraded
Jobs: 0 queued
Failed: 2 units
Since: Tue 2023-02-21 10:56:11 CST; 1min 17s ago
CGroup: /
├─user.slice
│ └─user-1000.slice
│ ├─user@1000.service …
│ │ ├─pulseaudio.service
│ │ │ └─1457 /usr/bin/pulseaudio --daemonize=no --log-target=journal
│ │ ├─init.scope
│ │ │ ├─1450 /lib/systemd/systemd --user
│ │ │ └─1451 (sd-pam)
│ │ └─dbus.service
│ │ └─1481 /usr/bin/dbus-daemon --session --address=systemd: --nofork --nopidfile --systemd-activation ->
│ └─session-c3.scope
│ ├─1317 /bin/login -f
│ └─1458 -bash
├─init.scope
│ └─1 /sbin/init
└─system.slice
├─systemd-networkd.service
│ └─88 /lib/systemd/systemd-networkd
├─systemd-udevd.service
│ └─77 /lib/systemd/systemd-udevd
├─cron.service
│ └─405 /usr/sbin/cron -f
├─polkit.service
│ └─279 /usr/lib/policykit-1/polkitd --no-debug
├─networkd-dispatcher.service
复制代码
检查 snapd 是否正常
$ sudo systemctl status snapd.service
● snapd.service - Snap Daemon
Loaded: loaded (/lib/systemd/system/snapd.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2023-02-21 10:56:20 CST; 1min 23s ago
TriggeredBy: ● snapd.socket
Main PID: 1244 (snapd)
Tasks: 29 (limit: 19054)
Memory: 37.8M
CGroup: /system.slice/snapd.service
└─1244 /usr/lib/snapd/snapd
...
复制代码
安装 vscode
$ sudo snap install code --classic
复制代码
安装完成后,可能会出现 code 触发的是 windows 本机的 code
$ which -a code # 查看code全部所属
/mnt/c/Users/[User Name]/AppData/Local/Programs/Microsoft VS Code/bin/code
/snap/bin/code
复制代码
调用/snap/bin/code
就可以正常调用 wsl2 中的 code
评论