安利 wsl 给在用 Linux 的小伙伴~

2018 年 4 月 15 日
 huskar

用 Linux mint 做后端开发还是很爽的,包管理很方便,还有 jetbrain 的 IDE 可以用。我司部署环境是 Debian,稍微搞一搞就能和部署环境一致了,大部分项目就可以直接本地启起来调试,非常方便(这应该是我喜欢 linux 最重要的原因了)。

linux 开发好用,但是日常使用就不方便了,QQ 就不说了,甚至一个好用的邮件客户端都没有… 最无奈的是会遇到些奇怪的问题,比如:

  1. 每次重启后搜狗输入法的待选词列表会不见,要手动换一次皮肤才会出现
  2. 有时候 WiFi 列表搜不到任何信号,得 service networking restart 一下
  3. QtCreator 里面输入不了中文(这个算已知问题,因为 fcitx 不支持 Qt5 应用,但是知道原因也解决不了…),只能在外面打好中文粘贴进去……

有些问题想解决搜都不知道怎么搜… 总体使用 linux 的感受就是凑合,为了开发方便舍弃一些日常需求,遇到了奇怪的问题,能忍受的就假装没看见… 记得有种说法是,windows 和 mac 是把用户当用户看,而 Linux 则默认用户是开发者。虽然我也算开发,可是我真的不懂 linux 的开发啊,遇到一些问题对我来说确实解决不了,甚至只能重装解决。折腾 linux 这些年都不知道重装了多少次系统了。

所以自从 windows 推出 wsl 我就挺感兴趣的,刚出来时就体验了一下,发现坑挺多的,就放弃了。但是一直关注着 wsl 的后续发展。前段时间 wsl 从 beta 变成正式 feature 并可以在 window 商店直接下载,就一直想再试用一下。于是上周重装了 win10。

这几天试用给我的感觉是,wsl 真的已经不是玩具了,基本可以满足我使用 linux 的所有需求。

举个例子,我有个需求是每天登陆一个网站自动听一些课程,是用 python 实现的。主要用到的就是 requests 模拟请求和 pytesseract 识别验证码(验证码很简单,ocr 就能搞定)。其实这需求在原生 windows 下也能搞定,但是我就是很抵触在 windows 下写 python …而且 tessract 在 linux 下安装就一条 apt install,在 windows 下还要看看博客才会安装,更是让我抵触。但是在 wsl 下就变得很简单啦。装好 wsl 后,几个 apt 和 pip 命令安装好依赖,原来的 python 脚本直接就能跑起来啦,感觉蛮爽的。 还有就是我用 hyper terminal+zsh,有着完全不输 mac 的终端体验,很棒。

所以郑重安利一下 wsl 给在用 linux 的小伙伴,欢迎交流~

21917 次点击
所在节点    程序员
189 条回复
msg7086
2018 年 4 月 15 日
@gnaggnoyil 更新重启已经无法接受了。
至于发行版固定软件版本,是很正常的行为,所有的发行版都是这样,不是只有 Redhat。
Redhat 也不会不让你编译其他 GCC 用的嘛。
digimoon
2018 年 4 月 15 日
win10 自带了 hyper-v 啊,里面装个 linux 不比 wsl 好吗?
doubleflower
2018 年 4 月 15 日
从来没在 linux 上遇到问题过。。。

另外 LZ 说重装 Linux 远远大于 Windows,这水平还是用回 windows 吧
wombat
2018 年 4 月 15 日
wsl 这么好用的吗? 看来有时间的时候去试试。不过,我差不多也是四年 linux 系统用户(生活完全使用 linux )。楼主说的 QQ 等工具无法在 linux 上使用,我推荐 CrossOver,微信、qq、kindle for PC 等常用的应用都是可以的。我也很喜欢 win10, 等有时间再去折腾一下。
goreliu
2018 年 4 月 15 日
@msg7086 没有一个能满足多数人需求的操作系统能做到足够简单,认为系统足够简单,只是因为没有看到背后的复杂性。我是搞 linux 运维开发的,几年时间大把精力都花在解决 linux 问题上了,我手动登录排查过问题的机器数以千计,因为代码是开源的,所以问题容易处理,这是个常见的误区。解决问题的前提是定位问题,而定位问题的难点就是让问题可稳定复现,linux 下容易出现各种难以稳定复现的问题,这个是最让人头疼的,而且因为 linux 环境的定制性强,每个人遇到的问题可能都不大一样(比如不同内核版本和软件版本配合会产生不一样的问题)。在这一点,虽然不能说 Windows 要好很多,但 Windows 的庞大用户群是一个很大的优势,即使发生几率很低的问题,也容易被别人撞上,那就要省好多精力。
huskar
2018 年 4 月 15 日
@msg7086 更新重启对于桌面系统为何是不可接受的呢?你需要的究竟是什么样的桌面系统……
goreliu
2018 年 4 月 15 日
@msg7086 举一个例子,我遇到过一个非常棘手问题,IBM x3650 M3 机器上的 sshd 进程偶尔会 D 掉,除了重启没有恢复的方法,发生概率很低(大概小于每个月 1 / 100000 的机器),无法稳定复现。已经 D 掉的进程是无法调试的,也没留下任何错误日志。如果只是 sshd 进程这样还好,我写的某一个很重要的 agent 也会出现同样的问题,agent 挂掉后会影响业务,有些机器是不能重启的,所以很麻烦。

像这样的问题,看源码可以说是完全没有帮助的。很多 linux 下的问题就是类似这样的。
plko345
2018 年 4 月 15 日
@debuggerx 哈哈,你的简历很有说服力,感觉他们对两个系统并没有多少认识,却硬要进行深入的对比,个人体验而已,又不是研究过的,观点实在很难让人信服
msg7086
2018 年 4 月 15 日
@goreliu 可能定位问题来说 Linux 不简单,但是 Windows 常常会更困难。
而且之前我说的也是开源可以让问题更容易解决,而不是更容易定位。比如 Windows 上你发现了一个 Bug,接下来怎么办,只能听天由命了吧。难道加入微软,用自己的双手改变世界?
Linux 至少你还有机会去尝试解决问题,当然我们先不说有没有能力解决。这我不认为是误区,而是开放源代码以后可以推导出的结论。

至于你提到的复现,我也可以来说说。Linux 定制性很强没错,但是结构比 Windows 简单多了。把系统打成镜像,然后替换法,加减法,至少你是「可以」去想办法缩小问题范围的。
Windows 呢,当然也可以先打成镜像,但是由于驱动的关系,你只应该在原始硬件上启动镜像(放进 VM 重装了驱动说不定就没的复现了)。然后你怎么定位问题呢,比如我自己遇到过的 Windows Update 突然报错无法升级的问题,你能把自动更新组件删了重装吗?

庞大用户群的确是优势,但不总是能解决问题。比如我之前遇到的 /t/444426 全球有多少人遇到过呢……最后问题还是没根治,都是靠 Workaround 来解决的。

说了这么多,其实并不影响我是重度 Windows 用户这个事实。只不过他原本可以做得更好的……
gnaggnoyil
2018 年 4 月 15 日
@msg7086 和是不是"正常行为"无关,问题是上了红帽子的贼船就没别的可以选,可折腾的余地还不如巨硬.换 GCC 这样的基础组件要费的精力差不多就等同于再走一遍 LFS 了,特别是 GCC5 及以上和 GCC4 之间的默认 ABI 差距巨大.而以折腾 LFS 的精力去折腾 win10 早就把 win10 折腾出花了——至少 WSL 还能随便换 distibution...

@msg7086 可以通过按部就班的步骤来定位 bug 这个纯粹只和软件设计有关啊……和是否是 OSS 没有必然联系啊.就算是个 OSS 如果软件本身把所有的 config 都写死在源码里了你还能奈何?
fireapp
2018 年 4 月 15 日
centos 7 好用, 不用折腾,搞不懂你们工作中竟然要用 QQ 😺😺
lhc70000
2018 年 4 月 15 日
- 不能自由选择发行版,不能自由更新系统和包
- 没有能用的终端,tmux/vim/emacs 稍微 fancy 一点配置的就各种显示错乱了
msg7086
2018 年 4 月 15 日
#107 @goreliu 这个例子里源码的确是没有帮助的。
不过说实话,进 D 已经说明是内核附近出了什么毛病了,放到 Windows 上,IO 挂掉一样会难以调试。
这已经和软件本身的源码是否开放无关了……
我之前提的,主要是普通用户环境下的问题。
goreliu
2018 年 4 月 15 日
@msg7086 定位问题是解决问题的前提,我能准确定位的问题没有一个是没解决了的,无论在 linux 还是 Windows。我给 WSL 反馈了数个 bug,后来都被解决了。结构简单只是表象。
msg7086
2018 年 4 月 15 日
#106 @huskar 需要长期运行,保证上下文不被打断的环境。

比如我平时业余工作需要开三五个 Excel 十多个资源管理器 二十多个其他的软件窗口,而且都是长期在用的。然后大量的繁重计算任务,会放在睡觉的时候跑。背后还要跑 Linux 虚拟机。

更新后重启没问题,但是我希望每隔两三个月所有的工作告一段落的时候,等我把虚拟机关掉,数据总结好保存关闭了,再统一打补丁重启。
secondwtq
2018 年 4 月 15 日
楼上说字体渲染不好,Terminal Emulator 不好的

我用 WSL 的时候跑了个 X,然后在上面跑 urxvt 还是 termite 来着,顺手还跑了个 Firefox
三百六十度无死角螺旋完爆所有免费的 Windows 终端
对,我不是说微软的东西就是垃圾,但是 Windows 那个 cmd 还真就是垃圾
goreliu
2018 年 4 月 15 日
@msg7086 普通用户环境问题的话,我有一阵用的 linux 桌面系统,大概平均 2 个月要 kernel panic 一次,因为没办法稳定复现,在网上也没搜到类似反馈,依然没法解决,我不可能去读 linux 相关代码来解决这个,即使有能力解决,也没办法验证是否真的解决了。但在工作中用 Windows 的时候没出现过类似情况。我举这个例子是想说不是有了源码是万事大吉了,一切问题就迎刃而解了,很多时候有没有源码没那么重要。我解决过不计其数的问题,很少需要看软件源码。我说的解决问题不是给软件修 bug,而是避免 bug 影响到自己,而且很多情况并不是通常的 bug,只是作者没考虑到某些特殊情况。
msg7086
2018 年 4 月 15 日
@gnaggnoyil 红帽发行版和 Windows 发行版是一样的。
Linux 至少你想要新的可以选 Debian Arch,想要稳的可以选 RH。

Windows 发行版也不会给你把系统内的组件乱升级,三哥掌控以后的 Windows 除外。

Config 写源码里那更简单了,扒下源码改配置编译安装一气呵成岂不美哉。
jemyzhang
2018 年 4 月 15 日
摒除 wsl 的效能不说,目前没有需要 window 的场景,从公司办公到家里,路由器,nas,pc,手机,机顶盒,全部 linux,妥妥的
msg7086
2018 年 4 月 15 日
@goreliu 我理解你说的。
Kernel Panic 无法解决主要是因为 Kernel 源码涉及太多东西了,本来就难以排查,这个也是正常。Windows 的内核我觉得做得很不错了,坑爹的地方在于应用层面。你发现的 Bug 上报后都处理了那是很好,可惜我并没有这个福气,Windows Update 导致无法更新系统的问题,我在整整 2 年无法更新系统后,最终只能选择重装了事。没有任何排查手段,没有任何详细的错误信息,完全无法下手去尝试任何东西,这是很无奈的。

可能你我的立场不同也有关系,你主要是运维,而我主要是开发,所以读源码对我的影响要比对你的更大一些。(不过我觉得可能有些跑题了……

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

https://study.congcong.us/t/446914

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

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

© 2021 V2EX