某些场景下 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

9034 次点击
所在节点    程序员
45 条回复
lujiaosama
2021-08-02 20:32:03 +08:00
@iyaozhen 一模一样. win 游戏机, mac 办公机. 但是 mac 又不想天天背来背去. 回来就在折腾 windows 环境了, wsl/wsl2, 虚拟机, docker 都折腾了一遍了.
BeautifulSoap
2021-08-02 20:41:02 +08:00
不在 wsl2 里安装 ide 的话,lz 的问题永远解决不了

本身跨虚拟机宿主机之间的文件交互性能就很差,你一定要在 Windows 下读 WSL2 的文件或 WSL2 读 Windows 都不会有好体验的

vscode 的远程开发支持很好,没有这方面问题,但是作为 IDE 还是不行。GoLand(或 IDEA 装 Go 插件)的话作为 IDE 功能够了,但是远程支持差得一批。所以直接在 wsl2 里装 IDE,使用 wsl2 内的所有文件和环境是最好的解决办法( wsl2 别装桌面只装个 GUI 就行)

lz 你不想在 wsl2 里装 ide 结果就是反倒这是最麻烦的解决办法。而且在 wsl2 里装 IDE 的话,你将能解锁一键完整迁移掉脑上的快发环境到别的电脑的隐藏优点。
iyaozhen
2021-08-02 23:40:39 +08:00
@BeautifulSoap 感谢,也是的,这样 wsl2 也方便迁移了
ly879
2023-03-31 13:03:31 +08:00
@chihiro2014
请问现在解决了吗?
chihiro2014
2023-03-31 23:44:04 +08:00
@ly879 直接买了一台 1U 的服务器摆在家里

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

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

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

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

© 2021 V2EX