用WSL(Win10linux子系统)构建Golang的Windows和linux并存开发环境

xcshuan · · 2116 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

前面说完了如何在Ubuntu上部署Go语言开发环境,以及IPFS调试环境,但还是有很多人用的Windows系统,毕竟很多软件在Linux上并没有提供,日常使用会有点不方便。

一种折衷的方法是在Window上使用虚拟机来运行Linux环境,或者干脆就使用Windows版本的Golang和IPFS,但是虚拟机占用资源很多,而纯Windows环境又少了很多*nix系的小工具。

我这里提供一种方法,通过Win10提供的WSL来构建并存开发环境。

一、安装Linux子系统

本段参考了https://www.jianshu.com/p/bc3...

首先进入控制面板在启用或关闭Windows功能里启用适用linux的Windows子系统

启用

图片描述

然后在应用商店搜索Ubuntu18.04点击安装,启动后输入用户名和账户密码,Ubuntu子系统就装好了。
图片描述

注:这过程出现问题可以去设置里打开开发者模式试试。

然后更换软件源为国内的源,此处举例为阿里云的镜像

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak //备份以前的文件免得出问题
sudo vim /etc/apt/sources.list
删掉里面所有内容,将下面的内容复制进去
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse

然后运行下面的命令更新软件,以及安装基本工具

由于Linux子系统是最小化安装,所以我们还需要手动装一些工具,暂时先装这些吧。

$sudo apt update
$sudo apt install gcc gdb build-essential git vim cmake wget curl python python3

二、安装zsh

zsh是比bash要好用许多的,所以我在子系统里也安装使用zsh,我们还是用OhMyZsh来傻瓜式安装,在命令行下输入以下语句然后输入密码即可。

$sudo apt install zsh
$sh -c "$(wget https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"

然后安装一些插件,

 $vim ~/.zshrc
 //找到下面这一句
 plugins=(
    git
)
//将其修改为
plugins=(
 git extract last-working-dir zsh-autosuggestions
 wd zsh-syntax-highlighting
 )

安装autojump,这是一个十分强大的目录跳转插件,建议安装,安装流程如下

$sudo apt-get install autojump
$cd
$git clone https://github.com/joelthelion/autojump.git
$cd autojump
$python ./install.py 
//最后会有一个提示,让你把那句话复制到~/.zshrc里去,每个人都不一样
vim ~/zshrc
复制刚刚那段到最后
source ~/.zshrc

此时运行autojump会有一个问题,这个问题只出现在WSL上,具体解决方案如下,参考了https://blog.csdn.net/szhiele...

$vim ~/.zshrc
//在最后加上下面这句
unsetopt BG_NICE
$source ~/.zshrc

三、在WSL中安装Golang

最开始我想用WSL来折腾图形界面,后来发现是完全没必要的,因为Win10和子系统是共享文件夹,我完全可以在Win10上操作源代码,在子系统里测试。但是Win10不能更改子系统下的文件,否则子系统就不能识别了。但是呢,子系统可以使用Win10的文件,而且是以权限777(全权限),拥有者为root的形式使用,所以我们可以把项目代码放在Win10的文件系统中,那么两边都可以用到了。

下面内容借鉴了

首先在在网上下好go的安装包,Linux和Windows都下载一份,Windows就直接安装即可,它会把GOPATH自动设置为C:Usersyounamego。然后我们把linux版的压缩文件如go1.11.1.linux-amd64.tar.gz放在c盘根目录,在子系统Ubuntu18.04中执行下面的命令行指令

cd /mnt/c
sudo tar xf go1.11.1.linux-amd64.tar.gz -C /usr/local

然后在/etc/profile和~/.bashrc中加入环境变量

$sudo vim /etc/profile
export    GOROOT=/usr/local/go
export    GOPATH=/mnt/c/Users/youname/go //youname为你Windows设置的用户名,你也可以把两个环境变量都设置成/mnt/c/go,比较方便。  
export    PATH=$PATH:$GOROOT/bin:$GOPATH/bin
$source /etc/profile
$vim ~/.zshrc
export  GOROOT=/usr/local/go                                                
export  GOPATH=/mnt/c/Users/youname/go //跟上面一样                                          
export  PATH=$PATH:$GOROOT/bin:$GOPATH/bin
$source ~/.zshrc

然后看看go有没有安装成功

$go version
go version go1.11.1 linux/amd64

四、安装IPFS

这个跟上一个教程无区别,参见https://segmentfault.com/a/11...

由于子系统和Win10共用网络端口,所以在子系统里运行ipfs daemon,在Win10的浏览器里也是可以打开webui的。

五、配置编程环境

编辑器还是用的VScode,不过用的是Windows版的Vscode,首先,将VScode的shell设置成wsl,在设置里搜索终端,按下面的路径设置。

图片描述

然后建立工作区,将gx/ipfs和go-ipfs合并建立一个工作区开始编辑调试吧,同样,打开Go文件会提示下载插件,要架梯子,架梯子还安装失败就直接把安装命令复制到powershell安装即可,其他问题可以参考我写的Linux配置那篇教程。

然后是下载安装cmder,因为Ubuntu18.04子系统用的是cmd,非常难用,换一个终端模拟器还是很有必要的,cmder和wsltty都还可以。

安装好cmder,将shell设置为ubuntu子系统的shell,如下图

图片描述

然后,开心地在Win10上享受同时具备两个开放环境的体验吧。


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

2116 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传