安利 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 条回复
flyingheart
2018 年 4 月 15 日
@xupefei 买台集显的英特尔笔记本就好了,网卡选英特尔的,保证可以完美运行
声卡 Realtek 的没啥问题
andyhuzhill
2018 年 4 月 15 日
QtCreator 中不能用 fcitx 输入中文是因为默认 QtCreator 里面不带 fcitx 的 platforminputcontexts 插件,如果你用的是 debian 系的话 

用 sudo apt-get install fcitx-libs-qt5

然后将 /usr/lib/x86_64-linux-gnu/qt5/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.so 复制到  QtCreator 安装目录下的  lib/Qt/plugins/platforminputcontexts 目录下就可以用了。

这个问题在网上完全可以搜索到的
xyxc0673
2018 年 4 月 15 日
@LosLord #70 我搜了一下,好像和 TGP(WeGame) 有关。卸载了后,果然可以访问了。。。
linux40
2018 年 4 月 15 日
第一,不用搜狗就行了,就是词库比较本地化而已。

第二,fcitx 支持 qt5。

第三,wsl 就是个二进制兼容层,更别说很多人都反应过有这样那样的问题。
msg7086
2018 年 4 月 15 日
我能想到的不用 WSL 的一大理由:

因为是 Windows 自己提供的。

Don't get me wrong. 我不是说 Windows 提供的就不行。对于大多数人来说微软自带这个属性挺好的。
但是实际情况并不总是尽如人意。
Windows 提供,意味着:

1. 完全依赖微软的作为。微软说这玩意儿我不搞,GG。微软说这玩意儿我要这样搞而不是那样搞,GG。

2. 没有可移植性。我一个脚本写完,如果要放在其他环境下跑,万一是没有 WSL 的系统怎么办?不还是要装 VM 或者 msys2 么。旧版 Windows 10 ? LTSB 分支? 7/8/8.1 用户?请滚回 msys2 吧(滑稽

3. 是系统相关组件。我要装 msys2,双击安装完就可以运行了。甚至还是绿色版的,复制粘贴、局域网共享目录,随便你怎么玩。
要装 WSL,对不起,先联网下载,再安装 WSL,再重启,再进商店,再联网下载,再安装,再运行。

4. 微软一贯尿性 0x800xxxxx。以前自动更新什么的出问题,满世界弹错误代码,上论坛问客服一问三不知,遇事不决先重启,遇事不决再重装。没遇上算你运气好,遇上了你就,嗯。重装呗。

作为程序员,我相信肯定有人喜欢这种控制能力(特别是 Linux 用户),对于这种完全不可控的技术,长期观望是很正常的。虽然有人要说我地域歧视,不过现在三哥上台以后搞出来的 Windows 10 这么多幺蛾子,你们真的信他们吗?
goreliu
2018 年 4 月 15 日
@aubreychao cmd 不支持 <<EOF 这样的用法,用 WSL 的话不需要进 cmd。
alexsunxl
2018 年 4 月 15 日
我用 arch
goreliu
2018 年 4 月 15 日
@msg7086 以前我用 linux 时总有一种自己能掌控整个系统的幻觉,直到真出了问题我才意识到自己仅仅是一个普通用户。
huskar
2018 年 4 月 15 日
@msg7086 这个…我觉得 wsl 不是 mingw 或者 cygwin 的替代,它就是给开发者使用的一个工具,而不能作为软件的运行时环境去要求用户安装。不要发布依赖 wsl 的脚本和软件才对。
run2
2018 年 4 月 15 日
WeGame 原来的 TGP 也有, 有个巨坑,安了之后,WSL 的 Linux ( Client ) 和 Windows 10 ( host )网络就不通了!!!!
x86vk
2018 年 4 月 15 日
@goreliu 不是普通用户的问题,是 wsl 经常变,不稳定的问题。

比如这么说吧,我之前在 LTSB 版里面用了 WSL,后来一个更新直接把 LTSB 里的 WSL 给删了。换了 Win10 Pro,用 alwsl 把 wsl 改成了 arch 的,结果过了一段时间 wsl 就用不了了,要从应用商店重下。重下完的 wsl 也不支持 alwsl 这个脚本了。更不要说什么 wsl 里面连 hexo 都用不了 写个博客都不行= =
huskar
2018 年 4 月 15 日
@msg7086 关于遇到 bug,如果是 linux 遇到 bug,连客服都没有啊,搜索结果也没有 windows 多,大问题也是只能重装。我的经历是,重装 linux 的次数要远远大于重装 windows 的次数。…
安装 wsl 很简单呀,商店里点安装就能用了,不需重启。
huskar
2018 年 4 月 15 日
@x86vk 你说的问题是在 wsl 还是 beta 时候的吧? hexo 我去试下,没道理用不了吧。
EVJohn
2018 年 4 月 15 日
额,我就问一句,Windows 的强制更新你能受得了吗,之前就是受不了这个转 Linux 的
goreliu
2018 年 4 月 15 日
@x86vk 只是安装方式变了,更新把原有的文件删除的事情,我没遇到过,我基本每次预览版都更新。因为安装方式变了,alwsl 没适配的话就用不了了。用 hexo 写博客是没问题的。

WSL 使用起来很灵活,只是很少有人做周边的东西。现在我用的不是应用商店安装的,而是自定义的,可以改注册表自定义路径:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss]
"DefaultDistribution"="{5c72cc38-adbd-4cc9-9eb5-a2595dd56c99}"

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss\{5c72cc38-adbd-4cc9-9eb5-a2595dd56c99}]
"State"=dword:00000001
"DistributionName"="Mine"
"Version"=dword:00000001
"BasePath"="C:\\wsl"
"KernelCommandLine"="BOOT_IMAGE=/kernel init=/init ro"
"DefaultUid"=dword:000003e8
"Flags"=dword:00000007

然后 c:\wsl 就是 WSL 的路径了。只要本地文件不出问题,就不需要折腾什么。
orangeade
2018 年 4 月 15 日
@sobigfish 国产软件都喜欢乱加驱动
gnaggnoyil
2018 年 4 月 15 日
有时候我真的觉得人和人之间的差距比人和狗之间的差距还大.用了一年 Win10(半年 Insider),除了更新就没重启过的人表示不明白 v2 上为什么会有那么多人觉得 Win10 的 bug 多.按理说都能在 desktop 上搞定 linux 各种奇怪驱动的人不可能会不知不觉的乱折腾 win10 啊对不对……

@msg7086 RedHat:"我说的你用 GCC4.8,你就得用 GCC4.8"
msg7086
2018 年 4 月 15 日
@goreliu @huskar
从程序员的角度来说,如果一个系统足够简单,模块之间的分割足够清晰,那么 Bug 造成的无奈会小很多。
Linux 有很多 Bug,但是 Linux 的 Bug 解决起来比 Windows 更简单。
源代码是全部开放的,至少你不是完全一点办法也没有。可能你没有能力通读代码,但是肯定有人(比如维护者)可以,总会找到问题点,解决掉 Bug。

说个实际的例子,Systemd 这个褒贬不一的货,最为人诟病的一点就是管的事太多,太复杂,结构不容易为人理解。
我司开发软件的时候,用到了 Systemd-networkd,在 drop-in 目录中多次定义配置会导致配置定义互相覆盖。当然我从来没读过 Systemd 的源码,也不知道这玩意儿到底怎么处理配置的,但是至少我可以通过多次试验来缩小问题范围,找到最小验证环境,然后把 Bug 报上去。
当然最后我们还是去快速地读了一下 Systemd 的源码,找到了问题点,报了 Github issue,不到一个月问题就修复了。

所以如果像 System 这样一个比较底层又比较复杂的项目,也能很容易地定位到问题点,那么我相信 Linux 这个系统应该是属于比较容易维护的了。

至于 #88,我写的程序并不依赖 WSL,但是如果别的机器上(不一定是别人的,也可能是我自己的其他电脑),没有 WSL 的话,那为什么我不一开始就去用 msys2 或者 vagrant 这样的环境呢。
折腾 Windows 是有很大代价的,现在的 Windows 10 折腾无极限已经给人以极高的代价了。
要保持系统 Uptime 超过几个星期,就必须完全禁用自动更新。以前你可以禁用 WUAU 服务,但是现在他会自己偷偷打开,所以唯一解决方法就是用防火墙封锁所有的微软 IP 地址,然后禁掉所有微软域名的解析……
哇塞……

要是再来个 WSL 给我折腾……不知道能多酸爽了。
HXM
2018 年 4 月 15 日
前两天重装系统,更新到了 1709,终于可以打开 wsl,折腾折腾美滋滋
goreliu
2018 年 4 月 15 日
@gnaggnoyil 很多人认为 linux 出了问题是自己的问题,Windows 出了问题是微软的问题,既然是微软的问题,为什么我要花经历折腾它?

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

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

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

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

© 2021 V2EX