故事梗概
Java程序员马意浓在互联网公司维护老旧电商后台系统。
渴望学习新技术的他在工作中无缘Docker。
他开始自学Vue3并使用SpringBoot3完成了一个前后端分离的Web应用系统,并打算将其用Docker容器化后用K8s上云。
3 挑选工具
马意浓画好架构图后,就开始为这次技能升级之旅挑选工具。
他深知,Docker诞生于Linux操作系统。而部署容器的生产环境,也通常使用Linux。
为了使本地测试更接近生产环境,他需要在本地配备一套Linux系统,以测试所开发的容器化应用程序。
此外,他常用的编程和办公软件都在Windows上运行。
✅因此,WSL2成为了唯一能同时兼顾Windows上的编程和办公软件,以及在Linux上部署容器化应用的解决方案。
他有一台旧Windows 10笔记本电脑。i5的4核CPU。
原本的内存是8GB,后来在维修中心将其扩展到了20GB。
但跑起程序来,还是感觉慢。
他于是设法搞到了一台新一点的Windows 11迷你主机。i7的14核CPU。内存32GB。
新机器使用起来感觉流畅多了。如图1。
图1 Windows 11新机器使用起来感觉流畅多了
Windows11主机选好后,他发现上面自带WSL2。于是他在PowerShell终端窗口,运行命令wsl --install
。系统默认安装了Ubuntu。
他运行命令wsl --list --verbose
,列出WSL2目前所以已经安装好的Linux的发行版distro。
屏幕显示有一个名为Ubuntu的distro已经安装好,并且VERSION是2。这表明它是WSL2版本。
他在PowerShell窗口,用鼠标点击右上方加号右边的下箭头,调出一个下拉菜单。
他从中选择了Ubuntu。这样就打开了刚刚安装好的Ubuntu的终端窗口。
接着他输入Ubuntu系统版本号查询命令cat /etc/issue
。系统显示22.04.3 LTS
。
这表示他已经拥有了一套用于部署容器化应用的Linux系统。
他在learning.oreilly.com图书订阅网站上,找来Stuart Leeks在2020年出版的Windows Subsystem for Linux 2 (WSL 2) Tips, Tricks, and Techniques一书,快速了解了WSL2的用法。
读了这本书,他领悟到,WSL2中的Ubuntu,不仅可以当做部署容器化应用的测试环境,更可以配合Windows 11上现成的vscode等开发工具,成为一个开发环境。
喜欢开源软件的马意浓,很喜欢在Ubuntu上进行编程。
WSL2上的Ubuntu,让他能感受到孙悟空找到如意金箍棒的快意。他的精神为之一振。
他现在需要在Ubuntu上安装git、jdk、node.js和npm这些工具。
❌比较直接的安装方法,就是分别去这些工具的官网,下载最新的安装包,进行安装。
但马意浓知道,这种方法,只能爽一时。
当遇到一些老旧项目,需要在同一工具新旧多个版本间切换时,就比较麻烦。
比如jdk从2017年之后,版本升级就从过去的几年一次,变成半年一次。
马意浓在工作中所维护的老旧系统,前一阵IT部门好不容易从jdk6升级到jdk8。
他之前那台Windows 10的笔记本电脑,就是从Oracle官网上找到jdk8的下载页面,下载安装包,然后解压并安装的。
既然要技能升级,jdk就要使用2024年主流版本17。
如果还是使用老办法,那就得再从官网下载并安装jdk17。
然后手工在Settings
的Environment Variables
里修改JAVA_HOME
和PATH
环境变量,以便从jdk11切换到jdk17。
要是想再回到老旧项目的jdk8,又得做一通手工环境变量修改。这太麻烦了。
该如何应对上面的场景?马意浓决定先问一下AIGC。
✅AIGC回答:【可以使用包管理器来解决开发工具版本切换的问题。】
【在Ubuntu操作系统中,可以用apt来安装git。】
【用sdkman来安装不同版本的jdk。】
【用nvm来安装不同版本的node.js和npm】
3.1 挑好PowerShell
马意浓知道,编程离不开命令行工具。
他打开Windows 11默认自带的命令行工具PowerShell,并在里面敲入命令$PSVersionTable.PSVersion
。
屏幕显示PowerShell的版本是5.1。
他去网上搜了一下,得知现在的PowerShell的最新版本是7.4.1。
他想,既然PowerShell是微软制作的,那么在Windows 11的Microsoft Store