1
mzfbwu 2022-01-25 10:40:35 +08:00
我在公司是通过 vscode 的 sftp 把代码同步到开发服务器,或者用 remote-ssh 直接在服务器上改,本地只做一个编辑器使用。wsl 的话,我用了几款,都遇到过奇奇怪怪的问题,个人觉得 ubuntu18 相对好一点。
|
2
murmur 2022-01-25 10:41:42 +08:00 6
前端就用 windows 开发,用什么 wsl 。。。
|
3
hwdef 2022-01-25 10:41:58 +08:00
能宿主机就宿主机,实在不能宿主机,比如我编译 k8s 源码,就用 wsl ,觉得 wsl 也不好用,就 linux 虚拟机,
不要对 wsl 期望太高,把它看成一个轻量级的虚拟机用。 |
4
liaohongxing 2022-01-25 10:43:49 +08:00
在开启了 WSL 的 windows 上装 docker, docker 里启动 mysql postgresql redis, 既可以享受最新的 linux 软件镜像,主体在 windows 上开发。我就是这么用的
装纯 linux 的话 ,国产 微信 ,QQ ,GPU 闭源驱动又是大问题 |
5
Shazoo 2022-01-25 10:44:12 +08:00
WSL 跑服务遇到更新重启,会出现怪异的问题,导致重装。(环境变量全部丢失,甚至包含 userprofile 丢失,系统基本无救)
考虑到 win10 尿性,最好别用了…… 目前就是 VMplayer 跑个 guest 主机,vscode remote debug |
6
bthulu 2022-01-25 10:45:06 +08:00
前端有什么是 windows 下搞不定的吗非得要用 linux?
|
7
cmdOptionKana 2022-01-25 10:48:58 +08:00
直接用 Windows (关闭 wsl )不就行了?
|
8
pupboss OP @mzfbwu
@murmur @hwdef @liaohongxing @Shazoo @bthulu @cmdOptionKana 感谢各位答疑,你们还真是整齐,评价一边倒,看来结论就是 WSL 对开发没啥卵用,最多在里面用用 Linux 小工具集 |
9
hwdef 2022-01-25 11:09:26 +08:00
wsl 的存储和网络都有问题,,,我还是倾向与这玩意是个玩具。
|
10
harchiko 2022-01-25 11:15:45 +08:00
我是用命令行比较多, wsl 对我来说是使用 windows 的最大动力.
如果你习惯使用 windows 的工具链,那 wsl 对你来说是没什么用. 我很多工作的工具都是 Linux Only 的. wsl 挂载 git 的时候权限问题,我没遇到过这个问题. 猜测可能是 git 从 windows 下拉的 repo, 我个人是 git 拉到 wsl 中运行,当然也有拉到 windows 目录下的,使用也没问题. 至于文件同步问题,我个人这边是没有进行文件同步的,即便是 windows 目录下 /mnt/c/Users/pc/Developer/test 这种文件,我用 git 的时候也在 wsl 下 git pull 之类的, windows 下没有进行过 git 操作. 我觉得 wsl 简直太香了. |
11
harchiko 2022-01-25 11:18:10 +08:00
当然 wsl 也不是没有问题,比如上周,我打算使用 wsl 下的 golang 进行开发, goland 直接卡住了,查询了一圈 issue 目前这个问题无解, wsl2 下暂时就这么慢, wsl1 还行.
|
12
Trim21 2022-01-25 11:18:17 +08:00 via Android
你没用到的东西 Windows 上都有的话完全没必要用 wsl…
|
13
hyq 2022-01-25 11:19:27 +08:00 4
我觉得 wsl 挺好用,本人 c++,golang 开发,linux 运维,wsl 提供了一个和 linux 一样的 unix 环境,能很方便的和 windows 共享文件。vscode 能高效地集成 wsl 开发环境,体验比 ssh 好一个数量级。并且能很方便切换不同的 linux 发行版,系统版本。
有了 wsl ,基本就不用 linux 开发机了。 |
14
ShadowPower 2022-01-25 11:21:53 +08:00 via iPhone 3
用 WSL1 ,网络没问题;
项目文件放在 WSL 用户的 home 目录下; 用 vscode 搭配 remote-wsl 做开发; 需要 docker 时,不用 WSL2 版本,用 Hyper-V 版本,配置 DOCKER_HOST 让 WSL1 能连接 docker daemon ,用 mount --bind 把 mnt 下的目录映射到根目录,使其跟 Hyper-V 中的目录一致,以便正常挂载 Volume 。 用这玩意需要一定的 Linux 知识,并非开箱即用…… |
15
march1993 2022-01-25 11:24:48 +08:00
systemd 不能跑其实很莫名其妙,只要注释掉 systemd 里 `getpid_cached() != 1`就能执行。
|
16
wty 2022-01-25 11:25:19 +08:00
git config core.filemode false
比较时忽略文件属性,也许有用? |
17
XTTX 2022-01-25 11:27:43 +08:00
@murmur #2 有些时候别人的项目只能用 node 14, 你电脑上是最新的 node 16. 这时候用 wsl+docker 就很合适
|
18
zengzizhao 2022-01-25 11:28:31 +08:00
直接用 Multipass 不香吗
|
19
pupboss OP @wty 有用的,但是还有额外两个问题,所以我最终还是没改成 false
1 个是 git pull 默认的配置文件( git 仓库的配置)还是 filemode true 2 就是 filemode 偶尔还是会用到,比如代码仓库有几个脚本,想改成 +x 权限 |
20
2i2Re2PLMaDnghL 2022-01-25 11:30:51 +08:00
拿 WSL 写前端就跟拿 WINE 跑 mingw 写 C 一样绕远路
|
21
pupboss OP |
22
pupboss OP @harchiko 你说的这个没错的,我是在宿主机克隆的仓库,如果 WSL 一把梭就没啥问题,WSL 一把梭主要问题是文件拷贝太慢,还有端口映射麻烦一些
|
23
Shazoo 2022-01-25 11:34:19 +08:00 1
@harchiko 提醒下,如果电脑长期不关机,wsl 跑点服务(诸如 redis ,nginx 之类),一旦碰到 windows 更新重启,会丢失桌面。
ltsc 、零售版都碰到同样问题。发生概率 1 年 3 次,出现在笔记本和 nuc 上。 多注意提交代码哈。真出现了 wsl 的文件基本无法恢复…… |
24
plams 2022-01-25 11:35:10 +08:00
win11+ WSL2 体验挺好的, 开发在 win 中用 ide 连接 wsl 中的环境, 和 mac 体验差不多(还有显卡能调用
|
25
pupboss OP @ShadowPower 哈哈是的,我昨天也在想这个问题,小白看到网上的教程,安装完软件之后监听 0.0.0.0 ,localhost:xxxx 可以访问,但是局域网其他机器访问不到,如果不了解 WSL2 的网络隔离,怎么都不会想明白
|
27
pupboss OP @Shazoo 感谢老哥提醒,我就是因为这类原因不敢把项目文件放在 WSL ,但是放宿主机就有文件 mode 777 的问题,闭环了
|
28
bthulu 2022-01-25 11:37:32 +08:00
@pupboss 你难道不知道如今 win10 的路径风格是兼容 linux 路径风格的? 你完全按照 Linux 那套在 win10 下开发就是了
|
29
gadfly3173 2022-01-25 11:37:47 +08:00
@XTTX #17 nvm 之类的东西可以解决
|
33
aflow 2022-01-25 11:44:38 +08:00
定时任务的话可以写脚本放到 windows 任务计划里自动运行。
传大量小文件话还是打包下再传会快很多,网络的话 wsl2 只会绑定到宿主机的 v6 地址,可以通过 localhost 访问,如果需要绑定到本机 127.0.0.1 的话可以看下这个 [WSLHostPatcher]( https://github.com/CzBiX/WSLHostPatcher) |
34
harchiko 2022-01-25 11:45:48 +08:00
@pupboss #32 我不知道你是不是用的 wsl2, wsl2 下访问 c 盘是 /mnt/c 不会存在文件丢失的情况,也不需要 sync
|
35
pupboss OP @harchiko 这个可能没说清楚,代码如果放 WSL home 目录,git 环境没问题一切正常,不过根据楼上老哥的说法,Windows 大版本更新的时候会导致 WSL 挂掉,文件就丢了
所以我最早是把代码放宿主机,从 /mnt/c 访问,但是有俩问题,1. 文件权限全部是 777 导致 git 不正常 2. 宿主机传输文件速度慢的发指 |
38
2i2Re2PLMaDnghL 2022-01-25 12:41:28 +08:00
从 WSL 内拉取代码和新建文件就不会有 777 的问题了
|
39
murmur 2022-01-25 12:44:28 +08:00
@XTTX 能不能举个例子,我现在迷迷糊糊把 node 版本从 6 升到 12 好像都没遇到什么问题,node 哪些功能不做旧版兼容的么
|
41
dobelee 2022-01-25 13:02:11 +08:00 via iPhone
不懂前端,不清楚为什么要用 wsl 。反正服务端表示真香。
|
42
XTTX 2022-01-25 13:21:52 +08:00
@murmur #39 我碰到一个窘境,node-sass 需要 node-gyp ,node-gyp 又有一大堆依赖,同时还不支持 node 15 往上。 最直接的方式就是弄个 docker image, 把代码考进去,每次跑容器就好了
```dockerfile FROM node:14-alpine as base ENV HOME=/home/node RUN apk add --no-cache python3 make g++ && \ yarn global add node-gyp@${VERSION} && \ yarn cache clean && \ node-gyp help && \ mkdir $HOME/.cache && \ chown -R node:node $HOME USER node VOLUME $HOME/.cache WORKDIR $HOME CMD ["sh"] FROM base WORKDIR /frontend COPY package.json package.json RUN yarn install COPY . . CMD ["npm", "start"] ``` 现在流行 ship with environment 不是没有理由的, 越来越多的版本和各式各样的依赖,只要一个不对口,整个项目就跑不起来 |
43
oott123 2022-01-25 13:23:03 +08:00 1
|
45
XTTX 2022-01-25 13:26:00 +08:00
@gadfly3173 #29 我个人还是喜欢用 docker 去搞那些乱七八杂的环境,个人喜好吧
|
46
nba2k9 2022-01-25 13:30:20 +08:00
能在 Windows 配置的开发环境,感觉没必要迁移到 wsl ,平白无故要踩一些坑
|
47
XTTX 2022-01-25 13:31:35 +08:00
@murmur #44 以后的依赖库越来越复杂,版本越来越多,需要的环境也不一样,还可能出现库在网上消失和“被消失”。 严谨一些的 Golang 项目都把所有 import 在本地留一份。 所以我挺喜欢 docker 跑别人的项目, 不用担心我自己的环境被搞得乱七八杂的
|
48
pupboss OP @oott123 条理清楚,方案可行,尤其是 「基于某种“不想在宿主机上安装开发环境”的奇怪洁癖矫情」就像是被偷窥了,晚上我就抄作业
|
49
forbreak 2022-01-25 13:53:48 +08:00
我主要用就是,WSL 跑 docker ,然后用 docker 跑各种开发数据库安装卸载都很方便,无残留。 其他的 idea 提供的 wsl 的一些支持啥的都很弱,还有些问题,内存占用也太高,基本没法用。
|
50
dcsuibian 2022-01-25 13:55:02 +08:00
不用 WSL ,就直接用宿主机就好。毕竟 wsl 还是远程开发范畴,而且还有各种问题。
我个人的经验: 1 、配置好系统代理和命令行代理,代理比各种换源方便太多 2 、用 winget 装软件(虽然比较新,但不少软件都有),部分软件自己去官网下载安装 3 、调整应用设置。chrome 、vscode 的同步功能很强(插件数据不太行),jetbrain 系有同步功能但比较弱。 4 、把文件放在家目录下,这样更通用,能省不少麻烦。 5 、用坚果云或其它同步工具同步一些附加的资源文件,如果有需要,配置一个类似于 NUTSTORE_FILES 的环境变量指向对应文件夹。 6 、写一个文档,记录一下配置过程,以备不时之需。 其实上面这个步骤在其它操作系统上也差不多,windows 需要做一些对应的调整而已。 |
51
theprimone 2022-01-25 13:55:10 +08:00 1
我就是只在 WSL 开发的前端 [doge] WSL 里全放代码相关的各种东西,Windows 基本没有代码相关的东西,两边隔离的感觉针不戳。
如果项目真有可视化需求,之前在 WSL 里折腾 electron 没搞成功,不知道现在如何了,有需求再看。 |
52
xz410236056 2022-01-25 14:01:52 +08:00
winget 请, 装 IDE 跟着提示点点点就自动装好了,2021 了不用那么麻烦自己手动配置了
|
53
pupboss OP |
55
jagger2048 2022-01-25 14:22:04 +08:00
核心问题还是 WSL 的 777 问题,这个可以参考这个解决方案:
https://www.yuque.com/docs/share/30bbd704-4e6a-4386-93c8-577a104be557?# 《 WSL 中对文件权限进行设置》 windows 开发一般用 VSCODE remote 来搭配 WSL ,远程宿主机来使用,这样对 windows 的配置没太多的要求 |
56
chenmobuys 2022-01-25 14:26:51 +08:00
WSL 总会碰到一些奇怪的问题,我选择用虚拟机装 linux
|
57
itechnology 2022-01-25 14:34:41 +08:00
我个人看法是没必要为了用 WSL 而用 WSL ,现在用 Windows 已经很方便了,不过都是个人的选择,觉得 WSL 好用就用 WSL
|
58
duke807 2022-01-25 14:44:37 +08:00 via Android 2
最大的意義是:對於 linux 用戶來說,以後寫跨平台軟件可以忽略 windows 了,windows 用戶請自行使用 wsl 運行 linux 程序,反正 windows 用戶不怕麻煩
|
59
hejw19970413 2022-01-25 15:42:53 +08:00
wsl 这个东西好像 开起来 关不掉~
|
60
theprimone 2022-01-25 15:45:22 +08:00
@pupboss 大概浏览了一下,没有讨论图形化的吧?反正记得 WSL 好像有这个计划
|
61
creanme 2022-01-25 16:00:45 +08:00
为啥要用 wsl ?因为想用类 linux 的 shell 吗?建议试试 nushell
|
62
hwdef 2022-01-25 16:54:35 +08:00
@theprimone win11 的 wsl2 已经支持图形化了。
|
63
smallthing 2022-01-25 17:04:28 +08:00
你既然用 git 了 还用 syncthing 备份干嘛,直接自动同步到 remote repo
|
64
MYli001 2022-01-25 17:07:21 +08:00
格了上 Manjro
|
65
pupboss OP @smallthing 因为有些改动还不足以提交成 commit ,再就是像 .env 这种虽然不适合存 git 但是多台设备之间还是得同步的,最后就是同步盘用久了还真离不开 :D
|
66
pupboss OP @creanme 对的,linux shell 是一方面,再就是开发环境和部署环境都用 linux 很有安全感,以前见过不少 mac 或者 windows 写的代码,到 linux 就跪
|
67
Mogugugugu 2022-01-25 17:27:58 +08:00
上次有个想法、就是本地开个虚拟机,WSL 或者 Multipass 开个 Ubuntu 、在虚拟机里面开服务端,用远程开发的方式连进去。。。但是这样就是资源占用爆炸。。。
|
70
frankies 2022-01-25 18:41:57 +08:00 via Android
wsl 用过一段时间,期间各种小问题不断,目前已经卸载 wsl ,回到 vmplayer 美滋滋
|
71
theprimone 2022-01-25 19:16:07 +08:00
@hwdef 这是现目前只支持 win11 的意思?
|
72
xQmQ 2022-01-25 20:05:05 +08:00
歪个楼,我都是把所有编译环境放到 wsl 里,甚至 git 也在里面,本机上没有,CLion 的工具链设置到 wsl 里,或者偶尔 vscode 远程一下。通过 systemd-genie 这个项目实现 systemctl
|
73
iamwho 2022-01-25 20:57:30 +08:00 1
https://github.com/ScoopInstaller/Scoop
Scoop 可以轻松的切换开发工具的环境,例如: ``` scoop install nodejs-lts scoop install versions/nodejs14 scoop install python scoop install versions/python27 node --version v14.18.3 python --version Python 2.7.18 python3 --version Python 3.10.2 python2 --version Python 2.7.18 scoop reset nodejs-lts scoop reset python node --version v16.13.2 python --version Python 3.10.2 python3 --version Python 3.10.2 python2 --version Python 2.7.18 ``` 如果你非要用 GNU/Linux 作为 OS 环境,可以试试 Vagrant 和 Multipass ,这两个也可以通过 Scoop 安装。 |
74
vagranth 2022-01-26 09:32:14 +08:00
我用 wsl2 ,基本没遇到过什么问题。
唯一一次是编译时报 kernel syscall 问题,配置文件里加了一句解决。 |
75
lysS 2022-01-26 09:53:18 +08:00
@hejw19970413 主机上 wsl --shutdown
|
76
hwdef 2022-01-26 12:49:13 +08:00
@theprimone 应该以后也是只有 win11 的 wsl2 支持,,
|
77
lzyliangzheyu 2022-01-26 20:12:05 +08:00
vscode+wsl2 搞嵌入式交叉编译感觉还行。。。。。。
|