wsl2安装
1、检查是否打开了Linux子系统功能和虚拟机平台
控制面板 -> 程序 -> 程序和功能-启用或关闭Windows功能
2、官方安装步骤链接:适用于 Linux 的 Windows 子系统安装指南 (Windows 10)
如果Linux子系统功能和虚拟机平台功能已打开则可以跳过安装步骤中的步骤1和步骤3。次安装步骤默认把linux子系统安装到C盘。若想安装到其它盘,参考离线下载安装。
3、离线下载安装
点击下载链接。
下载自己需要的版本,下载完成后将文件拷贝到自己要安装的目录中去(最好不要带中文),将下载文件的后缀名改为 .zip,解压文件,点击 exe 程序即可安装ubuntu。
更换Ubuntu源地址(可不设置)
切换到 /etc/apt 目录下,备份源文件。
cd /etc/apt
sudo cp sources.list sources.list.bak
使用vi编辑文件
sudo vi sources.list
命令模式下直接输入 ggdG
清空所有文本,然后按 i
进入插入模式,复制下面的内容到文件中。
# 清华大学源
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
按ESC键回到 vi 命令模式,按 **:**
进入行末模式,输入 wq
保存并退出。
最后更新源文件。
sudo apt-get update && sudo apt-get upgrade
打开ubuntu终端的方式,有如下几种
1 在开始菜单中点击 Ubuntu 图标。
2 打开 cmd 命令行窗口,输入 bash
命令进入Ubuntu。
3 快捷键 Win+R 输入bash 进入。
4 在指定文件夹下进入Ubuntu,可在路径框输入 bash ,回车。
5 在指定文件夹下 Shift+右键,选择在此处打开Linux shell。
wsl2开启systemctl命令(重启后会失效)
参考:链接
sudo apt-get install daemonize # 安装daemonize
sudo daemonize /usr/bin/unshare --fork --pid --mount-proc /lib/systemd/systemd --system-unit=basic.target
exec sudo nsenter -t $(pidof systemd) -a su - $LOGNAME
安装Golang
1、Golang的国内网站 https://golang.google.cn/dl/ 下载安装包
2、在存放压缩包的目录打开linux子系统,然后进行解压
本示例安装的Ubuntu子系统,下载的go1.16版本,压缩包存放在 D:\ubuntu,将 D:\ubuntu\work\go 作为GOPATH 目录。
tar -C /usr/local/ -xzf go1.16.5.linux-amd64.tar.gz
3、设置环境变量
/etc/profile 中写入环境变量 vi /etc/profile
export GOPATH=/mnt/d/ubuntu/work/go
export GOROOT=/usr/local/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
输入 source /etc/profile
使配置文件生效。
如果
go env
查看GOPATH与GOROOT并未生效。 那么在 ~/.zshrc 中最后一行加入 source /etc/priofile 或者加上跟上面一样的三条环境变量配置。
4、配置远程拉取包的代理
这里使用https://goproxy.io代理。
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.io,direct
测试简单程序
进入工作目录,创建hello文件
cd $GOPATH/src
touch hello.go
vi hello.go
写入以下代码
package main
import "fmt"
func main() {
fmt.Println("Hello, World!!!")
}
运行
go run hello.go
测试远程拉取包
go get
来获取远程包了,它需要一个完整的包名作为参数,只要这个完整的包名是可访问的,就可以被获取到,比如我们获取一个gin框架 :
go get -v github.com/gin-gonic/gin
就可以下载这个库到我们 $GOPATH/pkg/mod 目录下了,这样我们就可以像导入其他包一样 import 了。
创建 hello.go 文件并写入以下代码。
package main
import "github.com/gin-gonic/gin"
func main() {
r := gin.Default()
r.GET("/ping", func(c *gin.Context) {
c.JSON(200, gin.H{
"message": "pong",
})
})
r.Run() // 监听并在 0.0.0.0:8080 上启动服务
}
启动服务:go run hello.go
测试服务:curl 127.0.0.1:8000/ping
Goland调用WSL2中go环境
1、Goland设置里运行目标添加WSL
File -> settings -> Build, Execution -> Run Targets
点击运行目标里面的加号,创建一个运行目标,选择里面的 wsl,点击下一步,点击完成。
添加语言运行时,选择go。
Go Executable: 输入 wsl2 中的 go 可执行文件。查看方式:wsl2 中运行命令 whereis go
返回结果中第一个是 go sdk 文件夹,第二个是 Windows10 里面的 go 环境映射到了 wsl2 里。第三个 /usr/local/go/bin/go 是 wsl2 里面 go 的可执行文件。
GOPATH:通过命令 go env
获得,找到返回结果里面的 GOPATH=” “ 对应结果。
2、修改go编译器设置
设置如下所示
使用如下代码测试是否成功
func main() {
//runtime.GOARCH 返回当前的系统架构;runtime.GOOS 返回当前的操作系统。
sysType := runtime.GOOS
if sysType == "linux"{
// LINUX系统
fmt.Println("Linux system")
}
if sysType == "windows" {
// windows系统
fmt.Println("Windows system")
}
fmt.Println("Hello,世界!")
}