你可能从未想过的开发环境构建
如果对于wsl和Ubuntu已经很熟悉了,可以不必浪费时间继续看了,如果你用的是mac或者已经在用Linux办公了,也可以跳过本文章;
对于一个开发,在拿到电脑后,做的第一件事大概就是开发环境的搭建吧,虽然对于一个资深开发,开发环境的搭建是手到擒来,但是从开机到完全可用最少也要半天过去了,那有没有能快速搭建环境的方法呢?当然是有的,有几种方式:
- 1、Windows To Go: 可以从移动硬盘中启动Windows使用,比较小众,这个作者没有实际使用过;
- 2、虚拟机: 在虚拟机中搭建好环境,然后导出虚拟机(通常各大虚拟机软件都支持),之后新电脑可以直接导入,但是实际体验并不是太好,特别是想要使用桌面程序的时候;PS: 也可能是我用的不够熟练;
- 3、Windows Subsystem for Linux(wsl): 这个是Windows 10引入的功能,允许用户在Windows系统中运行完整的Linux,而不需要安装虚拟机或双系统,性能也很强,几乎接近裸机性能;
本文主要介绍wsl的方式搭建,记录下使用过程中遇到的一些问题和解决方法
作者使用的是Windows 11,wsl版本:2.4.13.0,wslg:1.0.65,注意,wslg很重要,是基于wsl2的,我们后边运行gui程序依赖wslg,所以要确认你电脑wsl的版本,是否有wslg,可以使用wsl --version查看
虽然powershell也是一个很强大的工具,但是毕竟起步晚,不少人并不会专门学习powershell的语法,同时因为Java的服务器通常都是Linux,选用wsl搭建开发环境开发,命令行用起来也会更舒服;
环境搭建
首先选择一个Linux发行版,理论上wsl支持任何Linux发行版,不过官方已经有Ubuntu了,已经满足作者的需求了,就不在折腾其他发行版了,可以使用如下命令查看支持的发行版:
wsl --list --online
当前官方支持如下发行版:
NAME FRIENDLY NAME
AlmaLinux-8 AlmaLinux OS 8
AlmaLinux-9 AlmaLinux OS 9
AlmaLinux-Kitten-10 AlmaLinux OS Kitten 10
Debian Debian GNU/Linux
FedoraLinux-42 Fedora Linux 42
SUSE-Linux-Enterprise-15-SP5 SUSE Linux Enterprise 15 SP5
SUSE-Linux-Enterprise-15-SP6 SUSE Linux Enterprise 15 SP6
Ubuntu Ubuntu
Ubuntu-24.04 Ubuntu 24.04 LTS
archlinux Arch Linux
kali-linux Kali Linux Rolling
openSUSE-Tumbleweed openSUSE Tumbleweed
openSUSE-Leap-15.6 openSUSE Leap 15.6
Ubuntu-18.04 Ubuntu 18.04 LTS
Ubuntu-20.04 Ubuntu 20.04 LTS
Ubuntu-22.04 Ubuntu 22.04 LTS
OracleLinux_7_9 Oracle Linux 7.9
OracleLinux_8_7 Oracle Linux 8.7
OracleLinux_9_1 Oracle Linux 9.1
我们选择Ubuntu,安装命令:
wsl --install -d Ubuntu
当然,你也可以选择指定的版本,例如
Ubuntu-22.04
,安装过程中会让你输入一些信息,例如用户名、密码等,按照提示输入即可
安装好后,我们可以使用下面的命令执行进入系统:
wsl -d Ubuntu
进入系统后第一件事就是更新软件:
sudo apt update
sudo apt upgrade -y
基本软件安装:
# 安装中文语言
apt install language-pack-zh-hans
# 翻页到最后找到zh_CN.UTF8,使用空格选中,然后tag到ok确认
dpkg-reconfigure locales
# 将Windows下的字库复制过来
# 注意:Windows和wsl文件系统互相访问比较慢,建议直接将字体复制过来,而不是软连接等方式直接使用Windows中的字库
mkdir /usr/share/fonts/win11
cp /mnt/c/Windows/Fonts/* /usr/share/fonts/win11
# 输入法框架和中文输入法安装:
sudo apt install fcitx fcitx-sunpinyin
# 添加到~/.profile文件:
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
export DefaultIMModule=fcitx
fcitx-autostart &>/dev/null
export LIBGL_ALWAYS_INDIRECT=1
export DISPLAY=:0
# sudo免密处理,在/etc/sudoers文件的 %sudo ALL=(ALL:ALL) ALL 这行后边添加如下内容,注意,将yourUserName替换为你的登录名,当然,你
# 也可以直接用root用户登录到系统,但是Ubuntu下直接使用root会有很多限制,很多软件不支持root运行;
# yourUserName ALL=(ALL) NOPASSWD: ALL
如果嫌Ubuntu的apt源下载太慢,也可以替换为163(其他国内源可以自行搜索):
# 将下面的内容替换到/etc/apt/sources.list文件中
deb http://mirrors.163.com/ubuntu/ jammy main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ jammy-security main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ jammy-updates main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ jammy-proposed main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ jammy-backports main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ jammy main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ jammy-security main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ jammy-updates main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ jammy-proposed main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ jammy-backports main restricted universe multiverse
编辑Windows中的~/.wslconfig
文件(默认应该没有,需要创建),添加如下内容:
[wsl2]
memory=12GB # 根据电脑实际资源分配,作者电脑内存是32G的,所以这里分配12G没有什么问题
swap=4GB # 建议如果开启的话不要太大
[experimental]
autoMemoryReclaim=gradual
networkingMode=mirrored # 开启镜像网络,主机和wsl共享一个网络,用起来更方便,本机直接访问wsl中的服务,wsl中的服务也可以直接访问本机的服务
dnsTunneling=true # 开启 DNS Tunneling
firewall=true # 开启 Windows 防火墙
autoProxy=true # 开启自动同步代理
sparseVhd=true # 开启自动释放 WSL2 虚拟硬盘空间
安装edge浏览器(不喜欢的可以安装chrome,chrome同样提供Linux支持):
# 脚本来源:https://www.microsoft.com/zh-cn/edge/download/insider?cc=1&platform=linux-deb&cs=2652604094
curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
sudo install -o root -g root -m 644 microsoft.gpg /usr/share/keyrings/
sudo sh -c 'echo "deb [arch=amd64 signed-by=/usr/share/keyrings/microsoft.gpg] https://packages.microsoft.com/repos/edge stable main" > /etc/apt/sources.list.d/microsoft-edge-beta.list'
sudo rm microsoft.gpg
## Install
sudo apt update
sudo apt install microsoft-edge-beta
安装好后可以在命令行输入microsoft-edge
来启动,然后就会打开浏览器gui了;
剩下的就是安装JDK、idea等开发工具,Java的技术栈都支持Linux;一切安装好后,使用如下命令导出wsl备份:
# 需要先shutdown掉,然后才能导出
wsl --shutdown
wsl --export <发行版名称> <导出文件路径>.tar
后续再新电脑上,就可以直接使用下面内容导入了,这样就能直接拥有一个现成的开发环境了:
wsl --import <发行版名称> <安装路径> <导出文件路径>.tar --version 2
同样的,你可以在运行一段时间后再导出,然后导入新电脑,这样也能做一个快速的数据迁移,保证必要的开发文件直接迁移而不是用的时候再去下载;
至此,wsl环境就搭建好可以使用了,也能更方便的迁移;
注意事项
- 虽然wsl中可以在/mnt目录直接访问Windows下的目录,但是如果是大量小文件,例如git项目路径,建议直接放在wsl中,因为wsl访问Windows下的文件会比较慢;
- 安装了wsl后,可以直接在Windows中使用Linux命令,只需要在前边加上
wsl
即可,例如可以在Windows的终端使用命令wsl ls
命令来使用ls
命令; - 同样,也可以在wsl中使用Windows的命令,只需要输入命令然后加上
.exe
后缀即可,例如在wsl中使用Windows的nslookup.exe baidu.com
遗留问题
- 本机开魔法后wsl中的浏览器频繁断网,未开魔法没有测试,因为浏览器也没必要放在wsl中,所以就没有继续折腾;
- 搜狗拼音官方提供的有Linux版,但是安装后没办法输入中文,因为有sunpinyin可用,所以也没有折腾;PS: 官方提到的依赖也安装了,仍然不行,有懂这方面的可以评论区讨论;
- 软件的gui界面没有Windows下的好看,特别是外围有一层明显的额外的框框,很丑,因为不影响使用,所以也没有继续折腾,有懂的可以评论区讨论;
联系我
- 作者微信:JoeKerouac
- 微信公众号(文章会第一时间更新到公众号,如果搜不出来可能是改名字了,加微信即可=_=|):代码深度研究院
- GitHub:https://github.com/JoeKerouac