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

抛弃 WSL2 使用 scoop 搭建开发环境

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

    之前一直是用 WSL2 来作为开发环境的,博客、数据分析和编程等都在 WSL2 里进行,虽然 WSL2 已经很方便,但是我仍然心里有疙瘩,因为两个原因:Hyper-V 的性能损失和无法自动释放内存/硬盘。

    实际上后面两个问题在 2.0.0 的 WSL 中(似乎)已经解决了,在去年的更新中,详情可见 微软开发者 blog,我仔细看了一下,似乎大部分的实质性更新都只在 Windows11 中适用,但是根据描述,部分实验性更新在 Windows10 中是可以用的,毕竟 Windows11 还是太抽象(个人感觉),我最关注的两个功能即内存回收与虚拟硬盘空间释放,似乎在 Windows10 中可用,但我测试了一下,使用 Windows10 LTSC 2021 最新可更新的 WSL ,两项功能在 .wslconfig 中可以正常启用,但没有效果。另一大问题就是性能损失问题了,据我个人测试,开启虚拟化之后 Windows 宿主机造成了大约 12%的性能损失。

    下图是开虚拟化平台之前的跑分:

    下图是开虚拟化平台之后的跑分:

    为了保证跑分结果准确,我特意在两种情况下多跑了几次,分值都差不多。主要的损失来自于 CPU ,而 CPU12%的性能损失还是挺严重的。

    这实际上不是 WSL 的锅,而是因为 Hyper-V ,开启虚拟化之后 Windows 宿主机也会变成一个 Hyper-V 的虚拟机,而这个变化通常情况下是无感的,但是 ... 我要打游戏 ...

    于是只能去掉 WSL2 ,使用 scoop 来进行环境搭建。实际上 scoop 超乎了我的预期,它不仅可以装开发软件,甚至微信 QQ 这种日常生活软件也可以安装,而且第三方开发者提供的各种 buckets 包含了极多的软件!

    如果以上我的说法什么的哪里有问题,还望 V 站前辈不吝赐教

    44 条回复    2024-04-30 05:44:51 +08:00
    Eiden
        1
    Eiden  
       57 天前
    能用 scoop 解决问题的, 那也确实没必要 wsl2
    StrangerA
        2
    StrangerA  
       57 天前   ❤️ 11
    scoop 解决的是 windows 默认不带包管理器的问题。

    wsl 解决的是 windows 跑 linux 环境的问题。

    这俩放一块属于是头痛医脚了。

    举例,我想用 docker 跑个青龙面板,还是得开 wsl (兴许只用 virtual pc 开个虚拟机也可以?)。
    NessajCN
        3
    NessajCN  
       57 天前
    建议一步到位改用 Linux 发行版
    因为你的使用场景,编程开发、博客、数据分析,全都是 Linux 比 Windows 好用的场景,
    而 Windows 好用的地方,譬如桌面办公软件,游戏,工业设计软件,你都没有提到
    indevn
        4
    indevn  
       57 天前
    能用 scoop 解决的问题,说明本身也没有任何用 wsl2 的必要…
    wsl2 本身也可能会带来一堆问题,我都是迫不得已才用的
    Nasei
        5
    Nasei  
       57 天前
    @NessajCN 你看漏了,他是因为要打游戏才关心 cpu 跑分的
    NessajCN
        6
    NessajCN  
       57 天前
    @Nasei ....确实,你说的对。那我没办法建议了,毕竟游戏佬对 Windows 的依赖是坚不可摧的
    Nasei
        7
    Nasei  
       57 天前
    我个人其实觉得除非打游戏真的变卡了,不然不用太关心跑分降低,而且你这配置,内存硬盘翻倍,i3 换 i5 可能会舒服很多
    0o0O0o0O0o
        8
    0o0O0o0O0o  
       57 天前
    其实我觉得 winget 更适合搭建开发环境,scoop 更适合普通用户安装应用,因为:

    https://learn.microsoft.com/en-us/windows/package-manager/configuration/create
    testcaoy7
        9
    testcaoy7  
       57 天前
    开了 Hyper-V 宿主机就成为了 dom0
    我用下来并不觉得性能损失有多大,有是有,但没 12%那么大
    跑分图一乐,代表不了任何实际使用的情况
    CPU 还是用 Intel LINPACK 测试 GFlops 靠谱
    RogerL
        10
    RogerL  
       57 天前
    scoop 装 cli 还行,装软件的话,因为它是放到自己目录里的,会出现各种奇葩的问题(比如企业微信),建议 gui 这种还是用 winget 装
    AoEiuV020JP
        11
    AoEiuV020JP  
       57 天前 via Android
    12%有点意外了,仔细想想我好像也不是很需要 wsl 和 hyperv ,
    cwcc
        12
    cwcc  
       57 天前
    如果用的开发环境没有使用非 linux 不可的(比如依赖 glibc 、posix 接口等),scoop 确实足够了。
    ilaipi
        13
    ilaipi  
       57 天前
    @StrangerA #2 用 docker 的话,wsl 只是一个 docker engine backend ,启动 docker desktop 之后,terminal 直接执行 docker 命令也是可以的,不需要去操作 wsl
    StrangerA
        14
    StrangerA  
       57 天前
    @ilaipi 我反复确认了几遍这个贴里讨论的不是关 hyper v 的问题吗?您意思是关掉了用 wsl 1 ?
    UncleCAT4
        15
    UncleCAT4  
    OP
       57 天前
    @Eiden scoop 目前足以使用了
    @indevn


    @Nasei 学生党,当初差钱才这么配的,后面有钱提一下🤣游戏确实有点掉帧了,之前一直 WSL2 ,后面关了发现就可以了
    @0o0O0o0O0o 我回头看看
    @NessajCN 之前用过一段时间 arch 和 Debian ,但是实在离不开游戏🤣
    @cwcc 目前不依赖,后面要是读研的话应该需要,但是到时候估计没工夫打游戏了
    @RogerL 我用的那些软件目前没什么问题,后面看看 winget
    @testcaoy7 回头我试一下
    NessajCN
        16
    NessajCN  
       57 天前   ❤️ 3
    @UncleCAT4 根据我的观察,离不开游戏的学生还是先专心玩游戏,等到彻底玩腻了玩不动了电子阳痿了再考虑开发的事情。不然搭完了这么一个开发环境你就有理由骗自己其实还是有在学习的
    testcaoy7
        17
    testcaoy7  
       57 天前
    @UncleCAT4
    dom0 不算是虚拟机,最多算是“半虚拟化”( Para-virtualization )

    此外,WSL2 只是用了“虚拟机平台”这个组件,根本不需要开 Hyper-V
    Hyper-V 跟“虚拟机平台”是两个不同的 Windows 组件,后者被 Windows 沙盒以及 WSL 依赖,但这两个功能根本不依赖 Hyper-V

    所以只用 WSL 的话根本不需要开 Hyper-V

    WSL 也分 1 代跟 2 代
    1 代属于二进制转译技术,连虚拟化都不需要,单装 WSL 就行了,当然这样子 2 代的新功能也不能用了,如果不需要那些功能,其实也没必要上 2 代
    lengyuqu
        18
    lengyuqu  
       57 天前
    开发环境 mysys2 似乎更好用一些
    BeautifulSoap
        19
    BeautifulSoap  
       57 天前 via Android
    开 hyper-v 应该会对性能有影响,但应该不至于达到 12%这么大的区别吧

    我觉得还是 bios 设置之类的看看,然后安装个全新系统来测试比较好
    laobobo
        20
    laobobo  
       57 天前
    @BeautifulSoap 有人测试基本上在 10% 左右
    dolorain
        21
    dolorain  
       57 天前
    win 上做开发不用 wsl ? 简直折磨自己
    idealhs
        22
    idealhs  
       57 天前
    这俩玩意能放在一起谈我就觉得很奇怪
    其次 HyperV 也没 12%的性能损耗
    其次玩游戏电脑真的有必要装开发环境?
    zhao8681286
        23
    zhao8681286  
       57 天前
    win11 哪里抽象了?一个 startallback + win10 的右键菜单 你不说我根本忘记我在用 win11 了。
    ncepuzs
        24
    ncepuzs  
       57 天前
    使用 Scoop 几年后,作出的选择与你相反
    m1nm13
        25
    m1nm13  
       57 天前
    感谢..赶紧过去吧 hyperv 关了,单核跑分高了 5%
    QXDM
        26
    QXDM  
       57 天前
    UncleCAT4
        27
    UncleCAT4  
    OP
       57 天前
    @dolorain 目前状态还算良好
    @zhao8681286 我有系统洁癖。。。win10 都是 ltsc 的,能不要的东西都不要
    @ncepuzs 每个人有每个人的习惯和偏好
    @idealhs 学生党。。。要打游戏,有时候还要做点东西
    UncleCAT4
        28
    UncleCAT4  
    OP
       57 天前
    @lengyuqu scoop 还可以装一些日常使用的软件
    BuffDog
        29
    BuffDog  
       57 天前
    开发机一台,游戏娱乐一台
    现在那种迷你机子也不贵
    hysjw
        30
    hysjw  
       57 天前
    Linux 一样可以玩游戏 看你玩的游戏了
    interim
        31
    interim  
       57 天前   ❤️ 1
    "开启虚拟化之后 Windows 宿主机也会变成一个 Hyper-V 的虚拟机",老谣言了,官方文档说明的很清楚,开启后 windwos 不是运行在虚拟机层
    LongMaoz
        32
    LongMaoz  
       57 天前   ❤️ 1
    pota
        33
    pota  
       57 天前
    op 测试的情况下管理 wsl 的运行了吗?
    pota
        34
    pota  
       57 天前
    @pota #33 关闭,这垃圾输入法
    OliverDD
        35
    OliverDD  
       57 天前 via iPhone
    看你要看你要开发什么了,java 、python 这种有“虚拟机”/解释型语言完全无所谓; go 、rust 这种比较新的把不同系统细节封装比较好的也可以永 scoop ;如果 c/c++那建议还是 wsl2 ,除非目标平台就是原生 win
    zwyyy456
        36
    zwyyy456  
       57 天前 via Android
    scoop 与 wsl 似乎并不构成竞争关系。
    mxT52CRuqR6o5
        37
    mxT52CRuqR6o5  
       57 天前
    开启虚拟化之后 Windows 宿主机会不会变成 Hyper-V 的虚拟机我没细研究过,但我记得微软是说过开启虚拟化后会影响一些宿主机的某些的行为的
    UncleCAT4
        38
    UncleCAT4  
    OP
       57 天前
    @pota 关了
    @OliverDD R&Py ,scoop 刚刚好,C 的话目前 gcc 也够用
    @hysjw wegame 的,Linux 没有。。
    n1cogrv
        39
    n1cogrv  
       57 天前
    鄙人不才,还恰好全都在用。Scoop ,WSL2 (Debian),Manjaro 。其实哪有这么复杂,也就三个场景。

    Windows 用来写与操作系统非强相关,并且较为轻量化的项目,像撸个 py 脚本这些,或者影音娱乐。scoop 管理三几个 jdk 装点开源软件问题不大,那些不遵守开发规范的国内奇葩软件就算了,老老实实用安装器安装。

    WSL2 就用来干中等或者重活,我个人感觉 WSL2 很适合前端那一套,nvm 啥的基本就纯 unix/linux 体验,port forward 出来还能有个 win chrome 调试,美学设计啥的随手都有 win 生态的工具。

    Manjaro 就纯干重活,一些需要 cuda 的,编译的,或者一定要求 linux 作为宿主的活。

    OP 这配置打游戏足够了,想干活体验更好就内存另加个 kit 。TLDR ,再加个 NVMe 固态装 linux 解君愁。
    xianyukang
        40
    xianyukang  
       57 天前
    支持,你应该相信自己的测试和判断。
    我个人还是选择用 WSL ,因为 WSL 的 Linux 环境特别方便,另外就算有 10% 的 CPU 差距也影响不了多少帧数。
    lengyuqu
        41
    lengyuqu  
       57 天前 via Android
    @UncleCAT4 直接 winget 也可以
    elevioux
        42
    elevioux  
       56 天前
    scoop 和 wsl 是完全不同的两个东西啊,怎么会有代替的说法呢?
    zyxbcde
        43
    zyxbcde  
       56 天前 via iPhone
    我直接搞黑苹果装双系统
    TGSAN
        44
    TGSAN  
       55 天前 via Android
    1. 降低性能的是 VBS 而不是虚拟机平台
    2. 中国和韩国的系统默认不开 VBS ,但是开了任何虚拟化相关的组件就会开 VBS https://learn.microsoft.com/zh-cn/windows-hardware/design/device-experiences/oem-hvci-enablement
    3. 通过 secconfig 可以在不影响 hcs 、hyper-v 、wsl2 的情况下关闭 vbs (可以还原性能损失)
    4. 跑分图一乐,开关 vbs 实际上影响不大。真的影响大的 oem 厂商让微软开了小灶,就算开了虚拟化组件也不会开 vbs
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1115 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 18:54 · PVG 02:54 · LAX 11:54 · JFK 14:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.