如何用WSL2在Windows 10上开发软件

491 阅读7分钟

早在2019年10月,我就开始尝试用Windows进行开发工作。 这基本上是一次成功的尝试。通过使用Linux的Windows子系统(WSL),我能够在Linux中有效地运行我的大部分工具,这是我熟悉的东西,通过VSCode的WSL远程插件,我可以在Windows中运行VSCode,连接到WSL提供的Linux环境,事情感觉非常熟悉。

WSL的不足之处

尽管如此,WSL和这个工作流程还是有一些小问题和挫折感。主要的问题是,众所周知,WSL 1的文件读写速度要慢得多。你可能认为这不是什么大问题--但如果你正在运行一个像npm 这样的软件包管理器,并安装一堆依赖,这些读和写的速度就会增加到明显的慢(我在一台相当强大的XPS笔记本电脑上运行)。

WSL 1在应用支持方面也有一些漏洞,你不能使用Docker--这不是我经常做的事情,但能够达到的东西是很有用的--而且有时我发现VSCode WSL的集成稍微有点滞后。不多,也不经常,但一切都不在我通常使用的MacBook上那么流畅。

进入WSL 2

WSL 2(见这里的介绍视频)承诺比WSL 1有重大改进。我不能深入了解实施的细节,因为坦率地说,这超出了我的想象,但从WSl 1的成功和失败的经验中,微软能够在WSL 2中做出惊人的改进。 MS网站上的这个比较显示了所有的不同之处,但对我来说,最大的亮点是文件的IO性能得到了极大的改善--文档中提到,运行gitnpm 等工具时,速度提高了2-5倍。我没有做基准测试,但运行WSL 2时感觉快了很多,在运行大型npm install ,我感觉不到明显的延迟。此外,WSL 2的架构变化使其能够运行更多的应用程序,所以现在可以使用Docker等工具。

而且,你可以将WSL 1的安装升级到WSL 2,所以升级的路径是超级顺利的

重新开始

考虑到我在刚拿到笔记本电脑时为了安装WSL 1所做的所有实验(我必须安装Windows Insider build才能得到它,而现在WSL可以在常规build中使用),以及笔记本电脑被各种软件和积累的 "东西 "搞得有点乱,我上周决定完全重新格式化机器,重新开始工作。

为了供我将来参考,当我再次这样做或得到一台新机器时,也为了那些可能对在Windows 10上进行软件开发感兴趣的人,我决定记录我所采取的步骤。剧透:实际上并没有那么多的步骤!

重新安装Windows 10

你可以随心所欲地安装Windows;我的XPS有一张恢复盘,我通过系统设置中的 "重置此电脑 "得到了它。这让我对机器进行了出厂重置,并让我的机器运行的是它刚运到我这里时的版本。这是一个超级顺利的过程,但留给我的是一个已经过时一年多的Windows,所以我做的第一件事是让软件更新器做它的事情。许多下载和重启之后,我有了一个全新的、最新的Windows 10,一切准备就绪。

浏览器和1Password

我是1Password的忠实粉丝,用来存储我所有的密码,我访问它的主要方式是通过谷歌浏览器扩展,所以我的第一反应是下载Chrome并登录,这样我所有的扩展,包括1Password,都会被同步。

WSL 2和Ubuntu

我在WSL 2上运行Ubuntu发行版,但无论你想运行哪个发行版,这些步骤都应该是一样的。我按照微软网站上的指南进行操作。 它有相当多的步骤--你首先要启用WSL 1,然后升级到WSL 2(我不确定这是否会及时改变),然后下载一个内核更新(远没有听起来那么可怕),然后再将默认版本设置为WSL 2,最后再安装Ubuntu。

文档中提到,如果你是在Windows Insiders build上,你可以使用实验性的wsl --install 命令。

这个过程有点费劲,需要几分钟时间,因为有些步骤需要重新启动你的机器,但只要仔细按照说明操作,你就可以开始运行了。

Windows终端

我对Windows的一个主要障碍是缺乏一个好的终端应用程序。在OS X/Linux上,在内置的默认程序、iTerm 2(Mac)或其他诸如Alacritty(跨平台)之间有一个很好的选择。

值得庆幸的是,微软正在用Windows终端来纠正这个问题,它看起来很不错虽然它仍然有一些粗糙的边缘(主要是缺乏一个设置界面,所以你只能通过一个JSON文件来配置它),但它真的走了很长的路,我强烈推荐它。当你运行它时,它默认会加载一个Windows Powershell,但你可以自定义默认配置文件,所以我把它设置为默认加载我的Ubuntu WSL 2环境。

VSCode

VSCode是我选择的编辑器,对我来说是Windows上最好的选择,因为有前面提到的WSL集成。我把它加载到Windows上,然后使用VSCode设置同步,这曾经需要VSCode的扩展,但现在是内置的,我用它来在我的机器之间同步设置。这意味着我可以下载VSCode,登录并同步,然后我所有的扩展和设置都会为我下载。如果你使用VSCode,我强烈建议同步你的设置。即使你在任何时候都只使用一台机器,如果你将来要重新格式化你的机器,这也是一个备份设置的好方法。

潜入Ubuntu

在这一点上,我已经在Windows方面设置好了一切,然后我启动Windows终端来配置Ubuntu环境。这些步骤在很大程度上是个人偏好,但我所使用的工具是。

  1. Fish作为我的外壳,同时使用Fisher来管理插件。我使用chsh -s (which fish) ,将默认的shell改为Fish,所以当我加载终端时,默认加载到Fish。
  2. 我使用asdf来管理我所有的各种语言版本,比如Node。我喜欢asdf,因为它工作得很好,从不与其他工具冲突,而且可以用来管理大量的语言--所以我不必为Ruby、Node等准备单独的工具,而只需用asdf来管理一切。然后我立即安装Node,因为这是我依赖的主要语言。
  3. 然后,我安装了GitHub CLI。我喜欢用它来创建和克隆存储库(gh repo clone jackfranklin/dotfiles ),也喜欢用gh pr create 来创建拉动请求。
  4. 我安装了我多年来建立的dotfiles,其中有很多我依赖的小片段,包括我的自定义别名,我把它们安全地保存在肌肉记忆中,帮助我在终端中更快地操作。
  5. 我按照GitHub的指南生成一个新的SSH密钥(我总是记不住步骤!),并将其添加到我的GitHub配置文件中,这样我就可以对我的公共和私人仓库进行克隆、推送和拉取。

总结

我发现Windows 10是一个很好的生产环境;WSL 2的改进以及VS Code与之无缝连接的能力,创造了一个与我通常在Mac机器上设置的Linux环境相当接近的环境。

随着WSL获得了运行Linux GUI应用程序的能力,看到Windows 10和WSL在未来几年的发展令人激动。