Skip to content

Go 编译器安装

Go 是 Google 开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。 罗伯特·格瑞史莫、罗勃·派克及肯·汤普逊于2007年9月开始设计 Go,稍后伊恩·兰斯·泰勒、拉斯·考克斯加入项目。Go 于2009年11月正式宣布推出,成为开放源代码项目,支持 Linux、macOS、Windows 等操作系统。

本教程将介绍如何在 SonmiHPC 上安装 Go 语言编译器,并提供给集群内用户使用。

安装方式

Go 语言有多种安装方式,主流的有以下的几种:

  1. 直接从 Go 语言官网下载最新版本的安装包,解压设置以下环境变量即可;
  2. 使用多版本管理工具 GVM,该工具支持在多个 Go 版本之间切换;
  3. 使用 YUM/DNF 等包管理器工具进行安装
  4. 直接从源码编译。

下面将分别介绍各个安装方法,由于从源码安装的方式篇幅较长,且对于大部分场景来说不是必要的,因此不进行讲解。

1. 直接下载安装包

可以直接从官方网站的发行版下载页面下载各个版本的安装包,国内部分地区由于防火墙的原因可能无法访问,可以开代理先下载在本地计算机上再上传到集群上。

下面直接使用 wget 从官网下载安装包:

shell
wget https://go.dev/dl/go1.22.5.linux-amd64.tar.gz
wget https://go.dev/dl/go1.22.5.linux-amd64.tar.gz

然后进行解压缩:

shell
tar xzvf go1.22.5.linux-amd64.tar.gz
tar xzvf go1.22.5.linux-amd64.tar.gz

为方便集群上用户使用,创建一个文件夹,并把文件夹中的所有文件复制到新建的文件夹中:

shell
mkdir -p /share/apps/go/1.22.5
cp -r go/. /share/apps/go/1.22.5/
mkdir -p /share/apps/go/1.22.5
cp -r go/. /share/apps/go/1.22.5/

为方便集群内用户使用,把 Go 编译器以 Module 模块加载的方式提供给集群中其他用户使用,创建下面文件夹,并在该路径下创建一个新的文件:

shell
mkdir -p /share/apps/modulefiles/go
cd /share/apps/modulefiles/go && vim 1.22.5
mkdir -p /share/apps/modulefiles/go
cd /share/apps/modulefiles/go && vim 1.22.5

新建文件内容如下:

#%Module###########################################
set modulefilename "Go"
set modulefilever  "1.22.5"

set min_tcl_ver 8.4
if { $tcl_version < $min_tcl_ver } {
    puts stderr " "
    puts stderr "ERROR: This modulefile requires tcl $min_tcl_ver or greater."
    puts stderr "Your system reports that tclsh version $tcl_version is installed."
    exit 1
}

if { [ module-info mode load ] } {
    puts stderr "Loading $modulefilename version $modulefilever"
}

if { [ module-info mode ] == "unload" || [ module-info mode ] == "remove" } {
    puts stderr "Removing $modulefilename version $modulefilever"
    puts stderr "Use  to view any remaining dependent modules."
}

prepend-path PATH /share/apps/go/1.22.5/bin
#%Module###########################################
set modulefilename "Go"
set modulefilever  "1.22.5"

set min_tcl_ver 8.4
if { $tcl_version < $min_tcl_ver } {
    puts stderr " "
    puts stderr "ERROR: This modulefile requires tcl $min_tcl_ver or greater."
    puts stderr "Your system reports that tclsh version $tcl_version is installed."
    exit 1
}

if { [ module-info mode load ] } {
    puts stderr "Loading $modulefilename version $modulefilever"
}

if { [ module-info mode ] == "unload" || [ module-info mode ] == "remove" } {
    puts stderr "Removing $modulefilename version $modulefilever"
    puts stderr "Use  to view any remaining dependent modules."
}

prepend-path PATH /share/apps/go/1.22.5/bin

保存文件,并设置以下权限即可:

shell
chmod -R 755 /share/apps/modulefiles
chmod -R 755 /share/apps/modulefiles

用户执行下面命令就可以加载该模块了:

shell
module load go/1.22.5
module load go/1.22.5

如果需要安装多个版本都可以按照该方式进行操作。

2. 使用 GVM 来管理多版本

该方法前提需要环境中已安装有 Go 编译器版本,在执行下面操作。

先安装下面的依赖库:

shell
dnf -y install curl git make bison gcc glibc-devel
dnf -y install curl git make bison gcc glibc-devel

然后使用下面的命令直接安装 GVM:

bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)
bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)

最后根据提示执行下面的命令即可:

shell
source ~/.gvm/scripts/gvm
source ~/.gvm/scripts/gvm

要安装特定版本的 Go 编译器可以参考下面的命令:

shell
gvm install go1.17.13 # 安装 1.17.13 版本
gvm use go1.17.13     # 切换到 1.17.13 版本
gvm list              # 查看所有已安装的版本
gvm listall           # 查看所有可安装版本
gvm install go1.17.13 # 安装 1.17.13 版本
gvm use go1.17.13     # 切换到 1.17.13 版本
gvm list              # 查看所有已安装的版本
gvm listall           # 查看所有可安装版本

3. 使用 YUM/DNF 包管理器安装

也可以直接使用 YUM/DNF 包管理器来直接一键安装,不过该方式只能安装特定的版本,并安装到全局环境上:

shell
dnf install -y golang-bin
dnf install -y golang-bin

设置 Go 模块代理

当安装完成后可以通过下面的方式设置 Go 的模块代理,可以加速 Go 库在国内的安装速度:

shell
# Go1.13以上版本
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct
# Go1.13以上版本
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct

参考链接

  1. Go 语言官方安装文档
  2. Go 官方发行版下载网址
  3. GVM Github 仓库主页

本站内容未经授权禁止转载
联系邮箱: [email protected]