某些场景下 wsl2 的文件系统简直蛋疼的不行

2021-08-02 00:10:28 +08:00
 iyaozhen

一般来说我们还是希望 IDE 运行在 windows,但是引用环境在 linux 。所以使用 wsl2 有个绕不过的问题,把文件放 windows 还是 linux 里

放 windows 里(/mnt/c ),先不论跨文件系统的性能,npm build 能卡个好几分钟不说,最主要是失去了文件监控的功能,修改文件后,不会自动化重新编译,极大影响了效率

放 linux 里(\wsl$),npm build的问题倒是没了,但是又有个 go: RLock \wsl$\Ubuntu\……\go.mod: Incorrect function. 的问题。

goland 还不支持直接使用 wsl 里面的 go 环境,所以还需要在 windows 上安装 go 环境,访问 wsl 中的文件,wsl2 本质上还是个虚拟机,windows 访问 linux 是通过网络文件系统( 9P ),然而 go 加锁不支持 9P,所以无法在 windows 上编译、运行了,IDE 上的很多功能用不了,需要进 wsl 命令行操作。

不过好在可以配置 Build on remote target,也勉强能用,但是整体操作上还是很割裂。

还有一个就是文件放 linux,万一不小心把环境删了,代码啥的都没了。

注:Mac 有,只是有时候用下 windows

相关资料:

https://docs.microsoft.com/zh-cn/windows/wsl/compare-versions

https://github.com/microsoft/WSL/issues/6255

https://www.jetbrains.com/help/go/how-to-use-wsl-development-environment-in-product.html#local_project

https://stackoverflow.com/questions/62837419/how-can-i-set-up-goroot-in-wsl2-goland

https://youtrack.jetbrains.com/issue/GO-10618

https://github.com/golang/go/issues/37461

8955 次点击
所在节点    程序员
45 条回复
VZXXBACQ
2021-08-02 00:24:45 +08:00
既然放在了 WSL 里面,何必用 Windows 下的环境来编译呢?

如果用 Windows 的环境编译,为什么要使用 WSL ?

我使用 IDE 配合 WSL 的时候都是用远程模式调用 WSL 上的编译 /解释器,这样路径就是纯 linux 的路径。

Go 我用的不多,Google 了一下,Goland 应该是支持的 [官方文档]( https://www.jetbrains.com/help/go/how-to-use-wsl-development-environment-in-product.html#open-a-project-in-wsl)
Corua
2021-08-02 00:26:41 +08:00
大部分情况下 wsl2 应该会优先用 win 中 path 的二进制文件,这就导致文件路径拐了大弯,参考这个禁用 http://www.cxyzjd.com/article/u013566243/110592547
也许能管用(
Dragonphy
2021-08-02 01:23:39 +08:00
jetbrains 想要在 WSL 环境下开发,最好使用 WSL1,localhost,内存占用都还可以。想要纯粹的远程开发,还得 VS Code 。另外,jetbrains 有个 https://lp.jetbrains.com/projector/的网页 IDE,但是目前体验很差
halfer53
2021-08-02 06:24:50 +08:00
用 vs code remote
rioshikelong121
2021-08-02 08:19:54 +08:00
用 vscode 没这个问题。
Rheinmetal
2021-08-02 08:34:52 +08:00
clion 的 remote 处理 cmake 工程有奇奇怪怪的问题 本地修改不同步啦 就一个 main.cpp 也偶发链接失败 有时重启能好 有时候不行
连 wsl 还好暂时没有太多问题只不过是拿来写算法题玩的 没有搞过项目
alexkkaa
2021-08-02 08:54:13 +08:00
所以我已经使用 manjaro 作为主力三年了,win 丢在虚拟机里, 日常一些国产软件和一些 win 独占的放在里面。 而且还安装了双系统,以满足我一年都打不了几次的 lol 需求
linhongye
2021-08-02 09:24:41 +08:00
全部装 wsl 里面....
liuhuansir
2021-08-02 09:27:17 +08:00
idea 的 remote 太垃圾了,vscode 的完爆
arischow
2021-08-02 09:36:59 +08:00
我最后选择装 Ubuntu 和 Win10 dual boot,对 Windows 生态兴趣不是很大
ikas
2021-08-02 09:43:44 +08:00
目前我是创建一个 ext4 的 vhd,然后挂载到 wsl2,这样代码工具都直接放到这个 vhd.
如果有闲置的硬盘,也可以直接创建,然后挂载到 wsl2..
这样代码就安全了
binbinyouliiii
2021-08-02 09:47:51 +08:00
直接在 WSL2 运行 IDE 不就完了
ysc3839
2021-08-02 09:51:34 +08:00
我选择不用 WSL2,只用 WSL1,有 WSL1 满足不了的需求,直接用个完整的 Linux 虚拟机感觉问题也不大。
chihiro2014
2021-08-02 09:51:42 +08:00
之前试过用 idea 去编辑 wsl 的 spring boot 项目,但是始终卡在项目 jdk 版本设置上,手动在 idea 里面指定 wsl 中已安装的 jdk 版本,就会导致 idea 卡死。如果指定 windows 上的 jdk 版本给 wsl 中的项目用,始终无法选择
gravitybox
2021-08-02 10:21:05 +08:00
专门买了一年的 goland,结果遇到同样的问题:go: RLock \wsl$\Ubuntu\……\go.mod
gravitybox
2021-08-02 10:23:43 +08:00
换成 vscode 后就不会遇到这些奇怪的问题了。。
Osk
2021-08-02 10:35:35 +08:00
所以我感觉 WSL2 除了 MS 魔改支持 GUI 以外, 没啥吸引人的.

日常 WSL1 + Linux 虚拟机.


为啥用虚拟机:
一些东西需要用到 systemd 这一套, WSL2 还得自己去魔改.
主机和 Guest 可以有固定的 IP.
WSL2 也是 Hyper-V, 性能差不多.
9p 给我留下的印象不好, 性能很糟, 还不如 smb, 性能不如 smb 时我万万没想到的.
VHDX 自己好控制一些, 随时的快照等功能也挺好的.


希望微软把 WSLg 的一些功能移植给 Hyper-V Linux Guest, 比如很期待的 RAIL 跑 GUI 程序.
pkoukk
2021-08-02 10:37:41 +08:00
用的 vscode remote,没这种问题。
windows 只是个壳,所有开发都在 wsl 下
jingslunt
2021-08-02 11:20:53 +08:00
同上,为什么使用 goland
微软自家的 vscode 就没问题,或者建议在 wsl2 上部署 code-server
bashbot
2021-08-02 11:26:04 +08:00
WSL2 环境开发文件放在 windows 下的话,webpack 开 watch/poll 选项,就可以监控文件变化自动编译了,VUE 也支持类似选项。最终实现都是调用 HMR 插件实现的,只要用了这个就可以支持。
https://webpack.js.org/concepts/hot-module-replacement/

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/793055

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX