有趣,在WSL2上运行VSCode

774 阅读1分钟

之前写过一篇《通过WSL2运行GUI程序》的Blog,感兴趣的朋友可以关注我的主页。今天我试了一下用在WSL2中安装VSCode,挺麻烦的就想着留个笔记。

步骤

更新wsl2

> wsl --update

进入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添加

[boot]
systemd=true

退出wsl,重启wsl

> wsl --shutdown
> bash

检查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