一般来说我们还是希望 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://stackoverflow.com/questions/62837419/how-can-i-set-up-goroot-in-wsl2-goland
1
VZXXBACQ 2021-08-02 00:24:45 +08:00 6
既然放在了 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) |
2
Corua 2021-08-02 00:26:41 +08:00 via Android 1
大部分情况下 wsl2 应该会优先用 win 中 path 的二进制文件,这就导致文件路径拐了大弯,参考这个禁用 http://www.cxyzjd.com/article/u013566243/110592547
也许能管用( |
3
Dragonphy 2021-08-02 01:23:39 +08:00
jetbrains 想要在 WSL 环境下开发,最好使用 WSL1,localhost,内存占用都还可以。想要纯粹的远程开发,还得 VS Code 。另外,jetbrains 有个 https://lp.jetbrains.com/projector/的网页 IDE,但是目前体验很差
|
4
halfer53 2021-08-02 06:24:50 +08:00
用 vs code remote
|
5
rioshikelong121 2021-08-02 08:19:54 +08:00
用 vscode 没这个问题。
|
6
Rheinmetal 2021-08-02 08:34:52 +08:00
clion 的 remote 处理 cmake 工程有奇奇怪怪的问题 本地修改不同步啦 就一个 main.cpp 也偶发链接失败 有时重启能好 有时候不行
连 wsl 还好暂时没有太多问题只不过是拿来写算法题玩的 没有搞过项目 |
7
alexkkaa 2021-08-02 08:54:13 +08:00 via Android
所以我已经使用 manjaro 作为主力三年了,win 丢在虚拟机里, 日常一些国产软件和一些 win 独占的放在里面。 而且还安装了双系统,以满足我一年都打不了几次的 lol 需求
|
8
linhongye 2021-08-02 09:24:41 +08:00
全部装 wsl 里面....
|
9
liuhuansir 2021-08-02 09:27:17 +08:00
idea 的 remote 太垃圾了,vscode 的完爆
|
10
arischow 2021-08-02 09:36:59 +08:00 via iPhone
我最后选择装 Ubuntu 和 Win10 dual boot,对 Windows 生态兴趣不是很大
|
11
ikas 2021-08-02 09:43:44 +08:00
目前我是创建一个 ext4 的 vhd,然后挂载到 wsl2,这样代码工具都直接放到这个 vhd.
如果有闲置的硬盘,也可以直接创建,然后挂载到 wsl2.. 这样代码就安全了 |
12
binbinyouliiii 2021-08-02 09:47:51 +08:00 1
直接在 WSL2 运行 IDE 不就完了
|
13
ysc3839 2021-08-02 09:51:34 +08:00
我选择不用 WSL2,只用 WSL1,有 WSL1 满足不了的需求,直接用个完整的 Linux 虚拟机感觉问题也不大。
|
14
chihiro2014 2021-08-02 09:51:42 +08:00
之前试过用 idea 去编辑 wsl 的 spring boot 项目,但是始终卡在项目 jdk 版本设置上,手动在 idea 里面指定 wsl 中已安装的 jdk 版本,就会导致 idea 卡死。如果指定 windows 上的 jdk 版本给 wsl 中的项目用,始终无法选择
|
15
gravitybox 2021-08-02 10:21:05 +08:00
专门买了一年的 goland,结果遇到同样的问题:go: RLock \wsl$\Ubuntu\……\go.mod
|
16
gravitybox 2021-08-02 10:23:43 +08:00
换成 vscode 后就不会遇到这些奇怪的问题了。。
|
17
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 程序. |
18
pkoukk 2021-08-02 10:37:41 +08:00
用的 vscode remote,没这种问题。
windows 只是个壳,所有开发都在 wsl 下 |
19
jingslunt 2021-08-02 11:20:53 +08:00
同上,为什么使用 goland
微软自家的 vscode 就没问题,或者建议在 wsl2 上部署 code-server |
20
bashbot 2021-08-02 11:26:04 +08:00
WSL2 环境开发文件放在 windows 下的话,webpack 开 watch/poll 选项,就可以监控文件变化自动编译了,VUE 也支持类似选项。最终实现都是调用 HMR 插件实现的,只要用了这个就可以支持。
https://webpack.js.org/concepts/hot-module-replacement/ |
21
mason961125 2021-08-02 11:27:17 +08:00
> 万一不小心把环境删了,代码啥的都没了。
你这个万一到底要多么的无脑才能发生。 |
22
smallthing 2021-08-02 11:37:37 +08:00
你可以自己挂 ext4 分区。
|
23
Smash 2021-08-02 11:40:16 +08:00
所以我不用 Windows 做开发,mac 下没这些问题...
|
24
smilingsun 2021-08-02 12:37:47 +08:00
WSL2 真的用 VSCode + Windows Terminal (Preview) 更香,
Goland 可以在 macOS 上用,不慌。 |
25
iyaozhen OP @VZXXBACQ 额,你有看完吗?
「 goland 还不支持直接使用 wsl 里面的 go 环境」 「不过好在可以配置 Build on remote target,也勉强能用」 哪里有提到到 Windows 环境里面编译?而且因为远程文件的原因,Windows 上压根就编译不了 你发的那个我已经在参考资料里附上了 |
27
iyaozhen OP @mason961125 这个主要是指可能没意识到文件在哪儿的问题(意识到了就明白了)。而且可能微软应用商店里操作了 wsl 换个系统啥的。最后 wsl 没有像 Windows 系统中的文件还能 onedrive (当然可以定时 rsync )。
|
28
VZXXBACQ 2021-08-02 13:58:03 +08:00
@iyaozhen
看了完了,这就是我的疑惑呀。既然是 Remote target,那就是 WSL 上的 Go 编译器呀,对于它来说路径怎么会有 \wsl$ 这个 Windows 网络路径呢?它获得路径参数应该直接就是 Linux 的路径呀。 |
29
iyaozhen OP |
30
iyaozhen OP @VZXXBACQ 哦哦 我 IDE 是在 Windows 上运行的,Windows 上访问 wsl2 中的文件就是 \wsl$网络路径,wsl2 就是这样和 wsl1 不一样
https://docs.microsoft.com/zh-cn/windows/wsl/compare-versions#performance-across-os-file-systems |
32
iyaozhen OP @binbinyouliiii 嗯嗯 wsl 里面装桌面端 Linux,但不太喜欢这样的方式,Windows 、Mac 都用习惯了,不想倒腾第三个
|
33
binbinyouliiii 2021-08-02 14:09:56 +08:00
@iyaozhen #32 直接运行程序啊,不运行桌面,我就是在 WSL2 下直接用 CLion 的
|
34
iyaozhen OP @binbinyouliiii 嗯嗯 明白,其实就是在 WSL2 中使用 IDE
|
35
zxCoder 2021-08-02 15:29:41 +08:00 1
jetbrains ide 大部分还无法很好支持 wsl2
我是 ide 装 windows 环境装 wsl2,目前用起来 webstorm 和 idea 支持还行,其他就比较坑 vscode 的远程开发很好,但还是不够智能,当个编辑器还行 |
36
wowbaby 2021-08-02 15:57:16 +08:00
为什么要用 wsl ?太难用了,windows 我装了 git https://git-scm.com ,一样可以用 Linux 命令,感觉很好啊
|
37
lingxi27 2021-08-02 16:44:46 +08:00
我选 fedora
|
38
tianxin8431 2021-08-02 19:42:44 +08:00
@iyaozhen 我理解是你可以直接把 WSL 当成一台远程的 Linux 服务器,然后直接用 remote 调试的方法,走 ssh 连,这样不会涉及到\wsl 这个目录吧
|
39
iyaozhen OP @tianxin8431 嗯嗯 了解,\wsl 只是表象,问题就是 goland 的 remote 能力很弱,WebStorm 还好点
|
40
iyaozhen OP @wowbaby 其实不只是命令行,主要是 Linux 环境。有个 js 项目,Windows 上 npm build 老是失败(当然也能解决),想在 Linux 下 build
|
41
lujiaosama 2021-08-02 20:32:03 +08:00 1
@iyaozhen 一模一样. win 游戏机, mac 办公机. 但是 mac 又不想天天背来背去. 回来就在折腾 windows 环境了, wsl/wsl2, 虚拟机, docker 都折腾了一遍了.
|
42
BeautifulSoap 2021-08-02 20:41:02 +08:00 1
不在 wsl2 里安装 ide 的话,lz 的问题永远解决不了
本身跨虚拟机宿主机之间的文件交互性能就很差,你一定要在 Windows 下读 WSL2 的文件或 WSL2 读 Windows 都不会有好体验的 vscode 的远程开发支持很好,没有这方面问题,但是作为 IDE 还是不行。GoLand(或 IDEA 装 Go 插件)的话作为 IDE 功能够了,但是远程支持差得一批。所以直接在 wsl2 里装 IDE,使用 wsl2 内的所有文件和环境是最好的解决办法( wsl2 别装桌面只装个 GUI 就行) lz 你不想在 wsl2 里装 ide 结果就是反倒这是最麻烦的解决办法。而且在 wsl2 里装 IDE 的话,你将能解锁一键完整迁移掉脑上的快发环境到别的电脑的隐藏优点。 |
43
iyaozhen OP @BeautifulSoap 感谢,也是的,这样 wsl2 也方便迁移了
|
44
ly879 2023-03-31 13:03:31 +08:00
@chihiro2014
请问现在解决了吗? |
45
chihiro2014 2023-03-31 23:44:04 +08:00
@ly879 直接买了一台 1U 的服务器摆在家里
|