## 前言
我在安装配置(非本人操作)了go的linux虚拟机上,尝试用 `$ go get github.com/astaxie/beego` 获取beego框架。但是,却出现了一个奇怪的错误: `go: cannot find main module; see 'go help modules'` ,怎么查询都没有找到问题原因。这对于一个刚接触go和linux的新手来说,是手足无措的。于是,心生一计,卸载重装。
<!-- more -->
## 一、卸载
### 1.删除GOROOT目录
用 `$ go env` 找到GOROOT目录,在我的linux上为 `srv/go` ,而常见的应该是 `usr/local/go` 。然后,~~使用`$ rm -rf`删除该目录。~~(用这个命令是不可能的,这辈子都不可能用的,这个命令删除文件真香)我**不建议这样删除**,因为与Windows不同,linux这样删除文件之后几乎是很难复原的。其中,`-r` 指向下递归,不管有多少级目录,一并删除;`-f` 指直接强行删除,不作任何提示的意思。可以看出,这个命令是很野蛮的。
所以,我们就暂时先保留这个目录。
### 2.删除GOPATH目录
这个目录可以保留。也可以用上述那个命令删除,如果其中没有重要文件的话。
卸载这步就结束了(实际上并没卸载)。
## 二、下载
### 1.下载安装包
`$ wget https://studygolang.com/dl/golang/go1.10.4.linux-amd64.tar.gz` 从网上找linux go1.10 版本源码的下载网址(因为modules好像是go1.11版本的东西),然后下载到当前目录。下载完,`$ ls` 就能看到一个名为 go1.10.4.linux-amd64.tar.gz 的压缩包。
注:为什么要下载压缩包自己解压安装呢?是因为apt便捷安装版本是1.6的,而且什么都由apt帮你完成,因其隐秘而不喜。喜欢自己下载自己安装,清楚知道每一步、每一包在哪。
### 2.解压
`$ tar -zxvf go1.10.4.linux-amd64.tar.gz` 解压到当前目录,得到一个名为 go 的文件夹,即go源码。
### 3.转移
`$ mv go /usr/local/` 在下载go源码的目录下,将 go 源码文件夹移动到`/usr/local/`文件夹下。
**注解**:
- 在linux中,只有一个根目录即 `/` ,根目录包含了各种linux中重要的文件目录,如home/、etc/、usr/、root/目录等等。使用`$ cd /`命令即能直接到达根目录,不论你在任何目录下。而不管你在哪 `/usr/local/` 也能访问根目录下的usr文件夹。
- 另外,linux可以有多个用户,除了权限最大的root用户,还可以创建其它用户,如test用户。每个用户登录时都会进入该用户的 HOME 目录。root用户 HOME 目录即 `/root/` 目录,而test用户 HOME 目录为 `/home/test/` 。若要查看该用户HOME目录,可以 `$ echo $HOME` 。同样,`$ cd ~` 能直接到达用户 HOME 目录下。
## 三、配置
`$ vim /etc/profile` 编辑/etc/profile文件(全局变量配置文件),增加以下内容:
```bash
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
```
**注解**:
- `GOROOT` 指向go的源码文件夹(即下载解压转移后的文件夹位置)。该文件夹下的 bin/ 目录是一些go命令的二进制执行文件。
- `GOPATH` 指向go的工作空间。此处推荐一篇博客[https://www.cnblogs.com/pyyu/p/8032257.html](https://www.cnblogs.com/pyyu/p/8032257.html)。
- `PATH=$PATH:$GOROOT/bin:$GOPATH/bin` 是指在原有 PATH 环境变量路径上加上内容,`:`为分隔符。
## 四、查看成果
`$ go env` 查看 go 环境。
`$ go get github.com/astaxie/beego` 成功,版本问题。
有疑问加站长微信联系(非本文作者))