V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
einsdisp
V2EX  ›  程序员

Win10 的 WSLg 能否完美替代 Linux 下日常开发?

  •  
  •   einsdisp · 174 天前 · 8017 次点击
    这是一个创建于 174 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我之前一直是在 linux 下开发( go/node/python/java 都有,但不涉及机器学习这种需要显卡的开发),积累了大量的 shell 脚本、工具链、程序、配置等,日常使用 vs code 或者 jetbrains 开发。

    这么多年了,linux 的图形界面的稳定性一直挺烂的,但考虑到其生态系统与命令行的强大,一直忍了下来,偶尔桌面崩溃,或者图形界面的 bug 啥的,倒也可以忍受。

    直到最近几个月常常需要远程桌面办公,linux 下就没一个好用的远程桌面,效果比微软自带的 RDP 差远了,这件事促使我决定迁移到 win10 。

    虽说很多软件与编程语言的工具链,有 windows 原生版本,但我基本不考虑,只考虑 wsl,一来,我原先在 linux 下积累的大量的脚本、程序、配置,不想再重新搞一遍,二来,原生 win 下,win 的路径分隔、win 系统对 utf8 的支持烂,这些对编程并不友好。

    想问问,目前阶段,WSLg 能否完美替代 Linux 下日常开发?运行 vs code 或者 jetbrains 的图形界面,运行各种编程语言的工具链,性能跟原生 linux 比,能差多少?

    81 条回复    2021-06-21 08:56:11 +08:00
    raaaaaar
        1
    raaaaaar  
       174 天前 via Android
    怎么说呢,有些命令,文件啥的和真正的 Linux 还是有区别的,经常有些文件,命令不存在啥的
    AoEiuV020
        2
    AoEiuV020  
       174 天前 via Android   ❤️ 1
    最近在用 wsl2+vcxsrv 搞 Linux 环境安卓开发,最大问题是输入法不支持,其他没感觉比直接 window 差,但理论上是肯定有差距的,
    lawfun
        3
    lawfun  
       174 天前
    @AoEiuV020 WSL2 连接不了 USB 设备,你那怎么使用 adb 的
    rububio
        4
    rububio  
       174 天前 via Android
    现在 wslg 稳定性挺差的,再等等吧,现在时不时 Linux 图形程序就打不开了,报错 connection refused,需要重启 wsl 或者重启系统才能解决。。
    MakeItGreat
        5
    MakeItGreat  
       174 天前 via Android   ❤️ 1
    如果你是因为远程桌面,可以虚拟机里 linux 啊
    3dwelcome
        6
    3dwelcome  
       174 天前
    去 github 上看了一下 WSLg, 原理就是一个远程桌面,把 linux 内部 GUI RDP 远程到 windows host 上。

    如果只是 vs code/jetbrains,那用 exe 版本也没什么问题吧。
    sunny2580839896
        7
    sunny2580839896  
       174 天前
    systemctl 貌似不能用
    also24
        8
    also24  
       174 天前
    @lawfun #3
    可以直接用 adb.exe
    no1xsyzy
        9
    no1xsyzy  
       174 天前   ❤️ 1
    init 进程是 WSL 自己的,所以相应的一堆东西没得用
    dbus 支持诡异
    输入法得 WSL 内和 Windows 内各自装一套
    WSL2 的话防火墙需要仔细配置一下,并且 IP 会变,倒不是不能解决,但也就那样吧……
    no1xsyzy
        10
    no1xsyzy  
       174 天前
    对了,
    VS Code 可以把 WSL 当 remote,基本没什么异样感
    JB 付费版也可以,但完成度据说还不如 VSC
    wangsd
        11
    wangsd  
       174 天前
    感觉没有 Windows 下快
    hwdef
        12
    hwdef  
       174 天前
    此时此刻, 2021.6.17,是不可用的,也不是正式版,还是 dev,甚至都不是 beta,,,

    用了一会,,感觉,,linux 的窗口都挺丑,好像是默认的 gtk,缩放还是有问题,没有中文字体,要自己装。
    clf
        13
    clf  
       174 天前
    Jetbrains+Docker 的方案应该更好?
    jswh
        14
    jswh  
       174 天前
    wsl 目前的影响日常使用体验的,其实是磁盘性能,尤其是小文件一多。
    bthulu
        15
    bthulu  
       174 天前   ❤️ 1
    并不能, 这就是个小玩具, 别想拿来当生产力
    BeautifulSoap
        16
    BeautifulSoap  
       174 天前   ❤️ 1
    不一定要用 WSLg,传统的 vcxsrv 运行 GUI 方法你也能用在 wsl 上(和 windows 没有过多文件硬件交互的话,推荐直接上 wsl2 )
    总体来说这类方法最大问题还是在输入法,你没法直接用 windows 输入法在 linux 的 gui 里输入文字,你需要在 wsl2 或虚拟机里配置 linux 的输入法
    对输入法的不便能接受的话,那么 lz 基本能大致完美替代 Linux 的开发了(对 systemd 有刚需的话 wsl2 可能比较折腾)
    LokiSharp
        17
    LokiSharp  
       174 天前
    直接用 Linux 虚拟机开发不就好了
    AoEiuV020
        18
    AoEiuV020  
       174 天前
    @lawfun 我 windows linux wsl 一直都是 wifi 远程 adb 连手机的,
    NIYIKI
        19
    NIYIKI  
       174 天前
    不能
    Dragonphy
        20
    Dragonphy  
       174 天前
    1. GUI 缩放不行;
    2. VSCode 开发的话不需要 GUI,直接用 remote 插件就行了,我一直用 WSL2 做前端开发,windows 桌面 IDEA
    charlie21
        21
    charlie21  
       174 天前
    win 10 远程桌面很好
    WSL 里使用 linux 工具链很好( win 作为宿主机)
    WSL 本身可以安装一个 xfce 桌面环境,然后( win 作为一端) xrdp 3389 端口连进去( WSL 作为远程桌面的另一端)。这种方案相当于远程连接到任何一台 linux 电脑
    参考 zhihu.com/question/350529856/answer/1237413438 内置 WSL 2 的 Windows 10 可以完全取代桌面版 Linux 吗

    WSLg 本身和 WSL 耦合得太紧了,故而不值得用
    ysn2233
        23
    ysn2233  
       174 天前
    我现在用 vcxsrv 配 wsl2 下的 ide 开发就和 linux 下没什么区别了
    silkriver
        24
    silkriver  
       174 天前
    Linux 下远程桌面服务端程序用 xrdp,客户端程序用 remmina,我觉得比微软自带的 RDP 强
    surfwave
        25
    surfwave  
       174 天前
    WSL2 时不时就自动更换 IP,很麻烦,不推荐了。
    hzjseasea
        26
    hzjseasea  
       174 天前
    替代可以,完美不行
    LokiSharp
        27
    LokiSharp  
       174 天前
    WSL 是个残废,WSL2 就是个阉割版虚拟机
    lxrmido
        28
    lxrmido  
       174 天前
    不能,设备经常变来变去,三天两头就要 winsock reset 一次才能连上网,配置好的端口、IP 绑定经常失效。推荐 VSC 的 ssh remote 开发,配合 vsc 内置的终端还是很好用的。
    Nerv
        29
    Nerv  
       174 天前 via Android
    ubuntu 的图形界面稳定性本来就堪忧,再套上个 wsl2,真的是 bug 多到飞起,至少现在是这样。
    Kaisar
        30
    Kaisar  
       174 天前
    linux 下远程桌面用 vnc 目前用起来没什么问题啊 或者说问题不大
    zjsxwc
        31
    zjsxwc  
       174 天前
    不能,还不如直接 win 下开虚拟机玩 linux,
    或者继续 linux 下开虚拟机玩 win

    我选择后者。
    sleepm
        32
    sleepm  
       174 天前
    @lxrmido 下载个 uu 加速器,找齿轮菜单里的网络工具,修复 lsp,不重启就好了,不用 winsock reset

    几年用 ubuntu 开发,桌面没崩过,见过最多的错误是 wps 的,不影响使用(大学几年用的 fedora,也很稳定)
    远程桌面 anydesk todesk rustdesk + zerotier 还是可以的
    在家 wsl2,文件在 wsl2 里速度快,在挂载的 /mnt 下就比较慢,有时候会怀疑人生,变 ip 是痛点,不过可以写脚本设置自动更新 ip 到 win10 hosts
    polaa
        33
    polaa  
       174 天前
    我现在的方式是 vscode 通过 remote ssh 进行开发
    Pycharm 也是设置 remote deployment 环境

    ubuntu 装的 server 版 没有 GUI

    感觉良好
    hihanley
        34
    hihanley  
       174 天前
    Java 开发,一直 Win10 + VMWare,装 Ubuntu Server,然后用 Jetbrains 的 Projector 开发,Projector 越来越好用了,中文输入也快支持了。
    偶尔也用 VSCode SSH Remote,写 JS,Python,Go
    JustRuning
        35
    JustRuning  
       174 天前
    用过一段时间,最大的问题是 IO 问题,当挂载的文件过多的时候挺别慢。
    johnsona
        36
    johnsona  
       174 天前 via iPhone
    不能 双系统虚拟机拉倒
    MiniUniverse
        37
    MiniUniverse  
       174 天前 via Android
    Manjaro 欢迎你
    zone10
        38
    zone10  
       174 天前
    最好的 Linux: Docker + VS Code Remote Containers
    次好的 Linux: Ubuntu Server + VS Code Remote SSH
    aristolochic
        39
    aristolochic  
       174 天前
    目前可公开的情报( x

    以下仅针对 WSL2

    GUI 的话 WSLg 倒是挺好用的,就是会设置奇怪的 XDG Runtime 目录环境变量,而且加了个库不是软链接,Arch 每次更新会提示比较烦;
    Systemd 的话现在 Genie 已经比较成熟了,没遇到什么坑,除了需要放弃在 WSL 里挂载 Windows 文件系统的能力(说起来我用的 zsh 配置由于会高亮路径,要检查 Windows 的目录,结果就是输入有肉眼可见的延迟。用了 Genie 后由于没有 Windows 目录了,体验反而上升了,这才知道是什么原因。
    USB 的话还得自己折腾网络方案,每次需要自己折腾 USB 的时候就想到之前 WSLg 没出的时候配置音频的痛苦,就觉得自己用 WSL 是为了省时间的,就放弃了;
    嵌套虚拟化的话近期更新的内核默认开启了 KVM,但目前 Libvirt 是不行的,会嫌弃 WSL 没有设备信息(当然没有)然后 error,不知道其他怎么样,比如手动拼接 QEMU-KVM 命令能不能行,我是懒得折腾了。
    alexkkaa
        40
    alexkkaa  
       174 天前 via Android
    个人觉得 gnome 现在已经很好了
    dingwen07
        41
    dingwen07  
       174 天前
    目前还不支持大多数程序的高分辨率,正式版比较推荐

    踩 WSL2 吹 WSL1 的,你们不知道这俩可以同时开启使用的吗?需要 WSL1 就进 WSL1,需要 2 就进 2 。文件 I/O,WSL1 和 2 分别是 Windows 文件系统更快和 Linux 文件系统更快,那就把需要大量 Windows 文件系统操作的任务放到 WSL1,把需要大量 Linux 文件系统操作的任务放到 WSL2 进行不就得了。
    raynor2011
        42
    raynor2011  
       174 天前
    wsl2 + emacs 图形化界面 , 用了很久了, 没什么问题
    flyhaozi
        43
    flyhaozi  
       174 天前
    无图形界面的 wsl2 就可以胜任很多开发工作了,毕竟 wslg 需要 windows 10 预览版,目前还是先用稳定版比较好,另外稳定版的 wsl2 当前只能手动一步步安装: https://docs.microsoft.com/en-us/windows/wsl/install-win10#manual-installation-steps
    编辑器支持方面,vscode 和 jetbrains 都可以用 windows 版来连接到 wsl2,
    vscode: https://code.visualstudio.com/blogs/2019/09/03/wsl2 ,
    jetbrains: https://www.jetbrains.com/help/idea/how-to-use-wsl-development-environment-in-product.html,
    vscode 远程连接 wsl2 的体验目前已经很完美了,可以直接在 wsl2 目录输入 code .在 vscode windows 版中打开项目,也可以使用 wsl2 中的 git ; jetbrains 没有用过,目测体验可能没有那么好。

    性能方面,由于 wsl2 本质上还是虚拟机,所以项目文件一定要放在 wsl2 中性能才不会受影响,在 wsl2 中读取 windows 文件性能并不太好。根据微软的文档 nodejs 在 wsl2 里的性能是要比 windows 版好的。

    语言和工具链支持方面,nodejs 和 python web 在 wsl2 下的开发都有微软官方的入门文档:
    https://docs.microsoft.com/zh-cn/windows/dev-environment/javascript/nodejs-on-wsl,
    https://docs.microsoft.com/zh-cn/windows/python/web-frameworks,
    就个人的体验来看,前端的开发工具链在 wsl2 下是完全没有问题的。

    wsl2 目前很大的一个问题是没有 systemd,wsl2 也不会随 windows 启动而启动,如果有需要长期运行的服务 wsl2 并不适合,wsl2 更合适用来开发调试,不能拿来当作生产环境。
    tsaohai
        44
    tsaohai  
       174 天前 via iPhone
    弄个 hyperv 的 vm 就完事了
    SenLief
        45
    SenLief  
       174 天前 via Android
    @flyhaozi 有两个替代的工具,不过都需要在 win 下的终端执行的。开机自启可以利用计划任务吧。
    flyhaozi
        46
    flyhaozi  
       174 天前
    @SenLief 是可以,想解决的话 wsl2 下大部分问题都有 workaround,最好还是能自身支持
    akira
        47
    akira  
       174 天前
    在 win 下跑有 ui 的
    在 linux server 下面跑没 ui 的
    Dragonphy
        48
    Dragonphy  
       174 天前
    wsl2 用 docker 就好了,systemctl 不好用
    kksco
        49
    kksco  
       173 天前
    我觉得 ubuntu 也还好,非要说缺点就是 jetbrains 家的 ide 总是莫名其妙的内存泄露把内存吃满。。
    her999
        50
    her999  
       173 天前
    ubuntu 的桌面很稳定。输入法可以用 搜狗 和 rime
    hei1000
        51
    hei1000  
       173 天前
    "这么多年了,linux 的图形界面的稳定性一直挺烂的"????不知道你用的什么发行版和桌面环境,我用的 Manjaro+XFCE/KDE 很稳定啊,很少出问题,我的 Win10 都只安装在虚拟机里面,日常就 Linux 桌面环境
    zxCoder
        52
    zxCoder  
       173 天前
    还是稍微有一点别扭
    DonaldY
        53
    DonaldY  
       173 天前
    ubuntu 也不稳定哈。浏览器老是崩溃。gnome-shell 飙高
    join
        54
    join  
       173 天前
    linux 的 gui 本身就这么烂,指望非原生 wslg 会好? 幼稚。
    FakNoCNName
        55
    FakNoCNName  
       173 天前
    @DonaldY 16\18 确实有这个问题,20.04 用到现在还没出现过 gnome 把机器跑死的情况。
    FakNoCNName
        56
    FakNoCNName  
       173 天前
    Linux 确实没有太好用的远程工具,向日葵、toDesk 也不那么好使。

    不过可以考虑 ssh 过去 vim 开发,但如果能 ssh 过去就说明你的机器可以暴露到公网上,这样的话在 linux 上装个 RDP 服务器,用 RDP 客户端远程连过来开发更爽。
    EIJAM
        57
    EIJAM  
       173 天前
    wsl 就是个杂合怪胎,换个名字叫“狮虎兽”。想要替代 Linux 是不可能的
    thtznet
        58
    thtznet  
       173 天前
    想太多,不要为了技术而技术,直接虚拟机,不想装第三方的就用自带的 Hyper-V,所有问题都不是问题,只是不够酷罢了。
    richardwong
        59
    richardwong  
       173 天前
    @raynor2011 怎么配的,我中文没法输入,也没法显示
    HankAviator
        60
    HankAviator  
       173 天前 via Android
    @no1xsyzy wsl2,IP 变化的问题,我之前也遇到过。后来为了修复罗技鼠标驱动,打开页面空白的问题,把 wsl2 导出之后导入,结果就可以识别出来真正的 IP 地址。
    写到这儿才想到是不是被导入成 wsl1 了……
    raynor2011
        61
    raynor2011  
       173 天前
    @richardwong 中文输入法用的 fcitx, 然后把系统语言改成中文
    vone
        62
    vone  
       173 天前
    @surfwave 你可以使用 localhost,数据会被转发到 WSL2 的系统中。
    surfwave
        63
    surfwave  
       173 天前
    @vone 如果宿主机本身开了同样端口的服务,用 localhost 会冲突的。
    wccc
        64
    wccc  
       173 天前
    目前 还是 manjaro + kvm 虚拟化 windows 使用 remmina spice 协议连接
    复制粘贴 到虚拟机没什么问题 外加一个 smb
    hz2019
        65
    hz2019  
       173 天前
    如果是用 vscode,可以直接 win-vscode+WSL,体验很好。jetbrains 对 WSL 的支持也不错,只是需要经过一些配置,比如 WSL python 开 venv,win-vscode 打开不需要配置,win-jetbrains 得写个脚本来指定目录。WSLg 的 vscode 没用过,用的 QtCreator,按键上的体验不太好,尤其和 win 上的窗口进行切换,比如 qtcreator-vim 在 insert 模式下切到 win,在切回来,有时候会莫名其妙不停自动输入 jjjjjjjjj 。。。。
    SenLief
        66
    SenLief  
       173 天前
    @flyhaozi 是的,没啥好的办法了。只能说是能用。
    crazykay
        67
    crazykay  
       173 天前
    小前端一枚, Linux base 开发使用好多年了, 觉得 Linux 下图形界面的稳定性一点也不烂.

    wechat-devtools-linux 实在没有作者跳出来维护了,腾讯更新了版本之后就折腾不好. 最近刚好 win11 出来, 搞个硬盘装来试试, 顺便恰口饭, 日子太难了

    PS. 远程办公一定要远程桌面是什么逻辑? 远程桌面解决方案也挺多的啊, rustdesk 啥的
    libook
        68
    libook  
       173 天前
    看干啥,如果只是做做 Web 开发啥的应该没问题,但如果做系统开发可能问题会比较多,毕竟 WSL 和 Linux 差别还挺大的。

    比如每次启动 IP 会变,不能使用服务管理(如 Systemd ),没法访问一些硬件设备。

    目前我是用的在 Win10 上用 Cygwin 装 XServer,然后从 WSL2 里启动基于 X 的程序,可以做到让 Win10 来管理窗口。

    我的配置信息在 GitHub 上,可以搜 WSL-GUI

    输入法据说在 WSL2 里装 Fcitx,我没试过,平时没有输入中文的需求。

    其实微软完全可以走 X 那一套,都不需要多少开发成本。
    Outshine
        69
    Outshine  
       173 天前
    wsl2 太难用,我已经换了 deepin 。。。
    vhui
        70
    vhui  
       173 天前
    @libook 可以给 wsl2 设置固定 ip,systemd 也有替代方案,比如 subsystemctl 。
    Donahue
        71
    Donahue  
       172 天前
    ubuntu20.04 原生桌面我觉得挺好用,远程用自带的一个软件 好像叫 remmia
    chaleaoch
        72
    chaleaoch  
       172 天前
    jetbrains 和 vscode 都有了支持远程开发的方案了.

    我用 windows + docker
    Showfom
        74
    Showfom  
       172 天前
    不如虚拟机做开发环境的好
    harwck
        75
    harwck  
       172 天前 via Android
    没有 systemctl,io performance 烂成不知道什么样,用的头疼
    magicdu
        76
    magicdu  
       172 天前
    ubuntu 用的自带的 remote desktop 感觉还可以啊
    lm902
        77
    lm902  
       171 天前
    @harwck wsl2 有了,wsl2 就是完整的 Linux 虚拟机
    harwck
        78
    harwck  
       171 天前
    @lm902 wsl2 也是沒有 systemd 的,但這個已經有人解決了
    真正致命的是 io,就如上面有人說了,小文件一多的話我試過和 native linux 可以有上百倍的差距。
    ysn2233
        79
    ysn2233  
       171 天前
    可能没法媲美 linux 开发环境,但绝对不会比 macos 差
    ysn2233
        80
    ysn2233  
       171 天前
    @harwck 只用 wsl2 内部的文件系统不会吧,只是和 windows 文件系统交互比较慢,用 wslg 的目的就是直接在 wsl2 里打开 ide 了,文件性能问题应该影响不大。
    aneostart173
        81
    aneostart173  
       170 天前
    图形性能感觉不是很好,开个 emacs 都会卡。
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2690 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 13:00 · PVG 21:00 · LAX 05:00 · JFK 08:00
    ♥ Do have faith in what you're doing.