前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >利用gvm管理go版本

利用gvm管理go版本

作者头像
AsiaYe
发布2022-12-07 09:07:13
7800
发布2022-12-07 09:07:13
举报
文章被收录于专栏:DBA随笔

利用gvm管理go版本

现在转行开发之后,使用Go语言的场景变多了,有时候很多github上down下来的工程使用了不同的golang版本,在编译的时候,都会遇到一些依赖包的兼容性问题。这就要求我们在同一台机器上,安装多个golang的版本,多个版本之间如何进行快速切换和管理,就成为了一个问题。

所幸,开源的gvm工具可以比较好地解决同一台服务器上安装多个go版本的问题。

01

gvm的安装

安装分为下面几个命令:

1、wget命令下载gvm的github项目文件。

wget https://github.com/moovweb/gvm/archive/refs/heads/master.zip

下载得到master.zip文件夹。

代码语言:javascript
复制
[root@yeyz ~]# wget https://github.com/moovweb/gvm/archive/refs/heads/master.zip
--2022-10-23 18:56:37--  https://github.com/moovweb/gvm/archive/refs/heads/master.zip
Resolving github.com (github.com)... 20.205.243.166
Connecting to github.com (github.com)|20.205.243.166|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://codeload.github.com/moovweb/gvm/zip/refs/heads/master [following]
--2022-10-23 18:56:38--  https://codeload.github.com/moovweb/gvm/zip/refs/heads/master
Resolving codeload.github.com (codeload.github.com)... 20.205.243.165
Connecting to codeload.github.com (codeload.github.com)|20.205.243.165|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [application/zip]
Saving to: ‘master.zip’

    [     <=>                                                                                                                                                                                        ] 357,461      378KB/s   in 0.9s   

2022-10-23 18:56:40 (378 KB/s) - ‘master.zip’ saved [357461]

[root@yeyz ~]# 
[root@yeyz ~]# ls  -l
total 356
-rw-r--r-- 1 root root    108 Jun 13 23:57 dump.rdb
-rw-r--r-- 1 root root 357461 Oct 23 18:56 master.zip

2、解压master.zip文件,执行其中的install文件

代码语言:javascript
复制
解压master.zip文件
[root@yeyz ~]# unzip master.zip 
Archive:  master.zip
19365a6ab8ac4920234b2612c529eed2373299db

解压出来gvm-master目录
[root@yeyz ~]# ll
total 360
-rw-r--r-- 1 root root    108 Jun 13 23:57 dump.rdb
drwxr-xr-x 9 root root   4096 Feb 17  2020 gvm-master
-rw-r--r-- 1 root root 357461 Oct 23 18:56 master.zip

进入gvm-master/binscripts/目录
[root@yeyz ~]# cd gvm-master/binscripts/
[root@yeyz binscripts]# ll
total 4
-rwxr-xr-x 1 root root 4031 Feb 17  2020 gvm-installer

执行gvm-installer文件
[root@yeyz binscripts]# ./gvm-installer 
Cloning from https://github.com/moovweb/gvm.git to /root/.gvm
which: no go in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/mysql-8.0.22/bin)
No existing Go versions detected
Installed GVM v1.0.22

Please restart your terminal session or to get started right away run
 `source /root/.gvm/scripts/gvm`

自动安装好了gvm版本,按照提示执行如下命令
[root@yeyz binscripts]# source /root/.gvm/scripts/gvm

至此,gvm安装完毕。下面是常见的一些命令:

代码语言:javascript
复制
gvm常见命令如下

查看当前机器的Go环境
$ gvm  list

查看所有可安装的Go版本
$ gvm listall

安装Go
$ gvm install go1.17.1

切换Go版本
$ gvm use go1.17.1

查看Go版本
$ go version

02

查看并安装的go

使用gvm listall命令,查看gvm支持安装的golang版本,如下

代码语言:javascript
复制
[root@yeyz binscripts]# gvm listall

gvm gos (available)

   go1
   go1.0.1
   go1.0.2
   go1.0.3
   .......
   go1.6.2
   go1.6.3
   go1.6.4
   go1.7
   go1.7beta1
   go1.7beta2
   go1.7rc1
   go1.7rc2

可以看到,几乎golang发布路径上的所有版本,它都是支持的。

安装指定版本的go语言,例如go17:

代码语言:javascript
复制
[root@yeyz ~]$ gvm install go1.17.1
Installing go1.17.1...
 * Compiling...
go1.17.1 successfully installed!

当然,你可以在一台服务器上安装go的多个版本,只需要修改一下gvm命令最后面的go版本即可。

查看当前系统所有的go版本

代码语言:javascript
复制
[root@yeyz ~]$ gvm list

gvm gos (installed)

   go1.17.1
=> system

其中,system代表系统上本来就存在的go版本。system旁边的=>符号代表当前使用的是系统上的go版本。

如果我们需要切换go的版本,可以使用下面的go use命令来进行切换,如下:

代码语言:javascript
复制
[root@yeyz ~]$ gvm use go1.17.1
Now using version go1.17.1

[root@yeyz ~]$ go version
go version go1.17.1 linux/amd64

使用上面的方法,就可以很方便地进行golang版本的切换。

其实除了版本管理之外,还需要进行go的pkgset管理,它主要针对不同的go版本,下载下来的依赖包,将它们放置在不同的路径下面。

修改pkgset常用的命令如下(不再单独演示):

代码语言:javascript
复制
[root@yeyz ~]$ gvm use go1.17.1


pkgset使用

#自定义新的pkgset比如gopkg17
gvm pkgset create gopkg17

#应用gopkg17
gvm pkgset use gopkg17

#查看pkgset路径
gvm pkgset list
echo $GOPATH

#安装xxx包,此时它被安装到gopkg17的下面
go get github.com/xxx

上述go版本的管理,和gopkg的管理,是gvm最常用的2个功能。除此之外,它还有其他一些常用命令和功能,大家可以使用gvm命令去查看,然后按需去使用:

代码语言:javascript
复制
[root@yeyz ~ ]# gvm 
Usage: gvm [command]

Description:
  GVM is the Go Version Manager

Commands:
  version    - print the gvm version number
  get        - gets the latest code (for debugging)
  use        - select a go version to use (--default to set permanently)
  diff       - view changes to Go root
  help       - display this usage text
  implode    - completely remove gvm
  install    - install go versions
  uninstall  - uninstall go versions
  cross      - install go cross compilers
  linkthis   - link this directory into GOPATH
  list       - list installed go versions
  listall    - list available versions
  alias      - manage go version aliases
  pkgset     - manage go packages sets
  pkgenv     - edit the environment for a package set
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-10-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DBA随笔 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 利用gvm管理go版本
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档