Windows11 配置指南(golang开发者)

1. 前言

将windows作为开放环境,对于开发人员并不友好(至少对于我这总习惯在unix下开发的人来说),其难用的powershell,让人很头疼,不过幸运的是Windows提供了WSL2,可以运行linux子系统。倘若能够用WSL作为开发环境,宿主Windows用作办公环境,就可以弥补只用linux作为主力环境下一些软件生态不足的缺点(有钱直接上mac)。这篇文章就是为那些,用windows下WSL2作为开发环境的人员提供的。

注意:开始前请确保你的系统支持wsl2

  • 对于 x64 系统:版本 1903 或更高版本,采用内部版本 18362 或更高版本。
  • 对于 ARM64 系统:版本 2004 或更高版本,采用内部版本 19041 或更高版本。
  • 低于 18362 的版本不支持 WSL 2。

2. 宿主机Windows的配置

以下所涉及的所有命令均使用管理员身份运行(“开始”菜单 >“PowerShell”> 单击右键 >“以管理员身份运行”)

1. 启用WSL

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

2. 启用虚拟机功能

安装 WSL 2 之前,必须启用“虚拟机平台”可选功能。

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

重启计算机

3. 下载 Linux 内核更新包

  1. 下载最新包

  2. 运行上一步中下载的更新包。 (双击以运行 - 系统将提示你提供提升的权限,选择“是”以批准此安装。)

4. 将 WSL 2 设置为默认版本

wsl --set-default-version 2

5. 安装所选的 Linux 分发

打开应用商店选择一款Linux发行版(本教程使用Ubuntu)

首次启动新安装的 Linux 分发版时,将打开一个控制台窗口,系统会要求你等待一分钟或两分钟,以便文件解压缩并存储到电脑上。 未来的所有启动时间应不到一秒。

然后,需要为新的 Linux 分发版创建用户帐户和密码。

6. 下载vscode作为开发工具(可选)

推荐使用vscode是因为vscode提供了RemoteWSL插件,可以直接将WSL作为开发环境,并且vscode是免费的

7. windows terminal的美化(可选)

本教程不涉及过多美化,只有设置透明背景以及更换字体等简单操作。

打开windows terminal的配置文件(ctrl + ,), 找到// Put settings here that you want to apply to all 这句话,改成如下,下面涉及到的字体可以从这里下载到


"defaults":
{
    // Put settings here that you want to apply to all profiles.
    "acrylicOpacity": 0.85, // 背景透明度 0-1
    "useAcrylic": true, // 背景模糊
    "fontFace": "RobotoMono Nerd Font", // 字体
    "cursorShape": "vintage", // 光标样式 "bar" ( ┃ )、"vintage" ( ▃ )、"underscore" ( ▁ )、"filledBox" ( █ )、"emptyBox" ( ▯ )
    "antialiasingMode": "cleartype" // 抗锯齿
},

通过windows terminal打开的ubuntu默认的路径是你Windows的Home目录,可以将其修改为ubuntu的Home目录(如果你想这样做的话)

{
    "guid": "{2c4de342-38b7-51cf-b940-2309a097f518}",
    "hidden": false,
    "name": "Ubuntu",
    "source": "Windows.Terminal.Wsl",
    "startingDirectory": "//wsl$/Ubuntu/home/kain" // 新增这一行,最后的名字改成你自己的用户名
}

3. 在WSL中配置开发环境

注意:本教程使用的是Ubuntu

1. 修改shell为zsh

sudo apt-get install zsh
chsh -s /bin/zsh

重新进入wsl,确保shell已经被换成zsh

2. 安装oh-my-zsh

  1. 先确保这几个命令已经被安装
sudo apt-get install git wget curl
  1. 安装ohmyzsh
sh -c "$(wget https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh -O -)"
  1. 安装两个常用插件
git clone git://github.com/zsh-users/zsh-autosuggestions.git ~/.oh-my-zsh/plugins/zsh-autosuggestions

git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ~/.oh-my-zsh/plugins/zsh-syntax-highlighting

sed -i 's!plugins=(git)!plugins=(git sudo zsh-autosuggestions zsh-syntax-highlighting)!g' ~/.zshrc
  1. source
source ~/.zshrc

3. 安装docker

直接使用apt安装的docker可能版本较老,使用下面的过程可安装最新的docker

  1. 更新源&安装依赖
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release
  1. 添加Docker官方的GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
  1. 添加apt仓库
echo \
     "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
     $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  1. 安装docker
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
  1. 将当前用户加入docker用户组
sudo gpasswd -a ${USER} docker
  1. 启停docker的命令

启动docker

sudo service docker start

停止docker

sudo service docker stop

重启docker

sudo service docker restart

4. 安装golang开发环境

直接使用apt安装的golang可能版本较老,使用下面的过程可安装最新的golang

  1. 官方网站下载最新的golang安装包这里以1.17.7为例
wget https://golang.google.cn/dl/go1.17.7.linux-amd64.tar.gz
  1. 解压安装包
sudo tar -C /usr/local -xzf go1.17.7.linux-amd64.tar.gz
  1. 创建gopath目录(~/.go为例)
mkdir -p ~/.go
mkdir -p ~/.go/bin
mkdir -p ~/.go/src
mkdir -p ~/.go/pkg
  1. 加入环境变量
echo "export GOROOT=/usr/local/go" >> ~/.zshrc
echo "export GOPATH=~/.go" >> ~/.zshrc
echo "export GOBIN=~/.go/bin" >> ~/.zshrc
echo "export PATH=$PATH:$GOROOT/bin:$GOBIN" >> ~/.zshrc
source ~/.zshrc
  1. goproxy
go env -w GOPROXY=https://goproxy.io,direct

4. 结尾

我们完全不需要在windows宿主机中安装任何开发环境,所有的开发环境只需要安装在wsl中即可,windows中只需要一些常用的IDE,办公聊天软件。

注意宿主机通过vEthernet这张网卡和WSL通信,宿主机和wsl拥有不同的两个IP

wsl命令参考:https://docs.microsoft.com/zh-cn/windows/wsl/basic-commands

posted @ 2022-02-13 17:34  KainHuck  阅读(1592)  评论(0编辑  收藏  举报