CentOS 7从Software Collection使用Go

今天要用最新的CentOS7去用go命令源码安装某工具的时候,才发现装了epel-realeae还是没有golang包可以安装。大致Google了一下,是说现在EPEL不再提供golang包,建议开发者使用go-toolset-7。
结论来自搜索到的论坛帖:golang package missing from centos/7.6.1810
遂又搜索了一会儿,找到了从Software Collection中使用go-toolset-7中的go的方法。

在RHEL中的使用方法来自官博:Getting started with go-toolset
当然自己折腾肯定是用CentOS了,在CentOS中启用Software Collection就好了:

1
sudo yum install centos-release-scl

就可以安装Software Collection中的软件了。以下命令安装之:

1
sudo yum install go-toolset-7

方法学自:Developer Toolset 7 by Software Collections
安装非常容易,只是用的时候相对原来麻烦了。以前下面这样的命令需要改变一下。

1
env GOPATH=go/path go get -u project/path/to/download

变成:

1
scl enable go-toolset-7 'env GOPATH=go/path go get -u project/path/to/download'

如果需要写在脚本里,并且引用的环境变量的话,是需要仔细考虑变量是在哪一步被展开的,是否可以取到需要的展开值的问题。不过大约有两个偷懒的思路。
第一,如果在脚本里只是某一两句用到,直接将所有命令直接echo出来,并且在里面做好变量展开,比如:

1
echo "env GOPATH=${GOPATH} go get sth"|scl enable go-toolset-7 bash

第二,如果是整个脚本用到的话,也许可以直接将scl enable go-toolset-7 bash,写到第一行做解释器。第一行如下这般:

1
#!/usr/bin/scl enable go-toolset-7 bash

第一个方法试了一下,可以。
第二个是新开脑洞,应该可用,但我并未真的写这样的脚本去运行,因为基本就是第一种方法直接在命令行直接执行了。
不过对于使用Software Collection中的工具,我其实以前并未用过,所以并不知道是否有更好更简洁的使用方法,希望以后能学到更好的方法。

2018年12月8日更新:

今天发现,CentOS EPEL中的golang包又出现了,还是这个方便,又卸载了go-toolset-7,还是用回系统的golang了。

Leave a Comment

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据