go环境搭建—基于CentOS6.8

本文详细介绍如何在受限网络环境中,使用Go1.4作为自举版本编译安装Go1.11。文章涵盖准备工作、从源代码编译Go1.4及Go1.11的步骤,并解释了关键环境变量的设置。

 1. 背景 

  在当前的中国网络环境下,我们无法访问Google的服务的,包括Golang.org。从第三方网站下载预编译的二进制Go发行版可能存在第三方源代码注入的风险,例如之前的XcodeGhost。
  Go的权威仓库地址是 https://go.googlesource.com/go,同时还有一个镜像仓库在 https://github.com/golang/go  (至少在目前,我们还能访问github)

2. 问题

  Go1.7的编译过程需要Go1.4的执行文件来实现 bootstrap(自举)(简单来说: Go需要Go自身来编译,搭建go1.5及以上版本的编译环境需要先安装go1.4版本)

3. 解决方案

  从Github的Go仓库镜像获取Go的源代码

  首先编译Go1.4(只需要gcc和glibc-devel,不需要Go来编译,由此可见go1.4.x 是个特殊的版本!)
  使用编译好的Go1.4的二进制文件来编译Go1.6

3.1 准备

  • 如果之前已经安装过老版本的Go,清除$GOPATH, $GOROOT变量。
  • 安装好Git
  • 配置 Git

    需要从github上拉代码,得先注册一个github账号(https://github.com)

    然后在 linux 执行

    > git config --global user.email "email-for-github"

    > git config --global user.name "user name"    

  • 创建SSH key,添加Public Key到Github账号。

    > ssh-keygen -t rsa -b 2048

    > ssh-add ~/.ssh/id_rsa

    复制 ~/.ssh/id_rsa.pub 中的 Public Key 到 github SSH settings 以添加新的 SSH key

  • 安装 gcc和glibc-devel

    > sudo yum install gcc glibc-devel

3.2 从源代码编译安装Go1.4

  • 下载代码

    cd /opt
    wget https://studygolang.com/dl/golang/go1.4.3.src.tar.gz

    tar xvf tar xvf go1.4.3.src.tar.gz

  • 编译&安装

    cd go/src

    ./all.bash

    cp -rp /opt/go /usr/local/go1.4

  • 设置环境变量 GOROOT_BOOTSTRAP

    $GOROOT_BOOTSTRAP(默认值是~/go1.4,编译go1.5及以上版本必需)

    vim /etc/profile

    # Golang Env
    export GOROOT_BOOTSTRAP=/usr/local/go1.4
    export PATH=$PATH:$GOROOT_BOOTSTRAP

    source /etc/profile

3.3 从源代码编译安装Go1.11

  • 下载代码
    wget https://studygolang.com/dl/golang/go1.11.src.tar.gz
    mkdir /opt/mygo
    tar xvf go1.11.src.tar.gz -C  /opt/mygo
  • 编译&安装
    cd /opt/mygo/go/src
    ./all.bash
    cp -rp /opt/mygo/go /usr/local/go
  • 设置环境变量

    vim /etc/profile

    在 # Golang Env 下添加

   export GOROOT=/usr/local/go

    #提前创建 go 工作目录

    mkdir /opt/goWork

    在 /etc/profile  添加环境变量

    export GOPATH=/opt/goWork 
    export GOBIN=$GOROOT/bin

    vim /etc/profile 

    修改 /etc/profile 中的PATH 环境变量

    export PATH=$PATH:$GOROOT_BOOTSTRAP:$GOPATH:$GOBIN

    source /etc/profile 

   注:

  • Go二进制文件默认安装到 /usr/local/go,自定义安装目录时,必须设置GOROOT环境变量
  • GOPATH允许多个目录(一个项目一个),当有多个目录时,请注意分隔符,多个目录的时候Windows是分号,Linux系统是冒号,当有多个GOPATH时,默认会将go get的内容放在第一个目录下

    工作目录介绍

    工作区是一个目录层次结构,它的根目录有三个目录:
    src 包含Go源文件
    pkg 包含对象和包
    bin 包含可执行命令
    Go工具创建源码包并安装二进制文件到pkg和bin目录下
    src目录通常包含多个版本控制库(如Git或Mercurial),跟踪一个或多个源包的开发

  • 测试

    退出shell重新登录

    go version

    go version go1.7 linux/amd64

参考资料:

https://github.com/northbright/Notes/blob/master/Golang/china/install-go1.6-from-source-on-centos7-in-china.md

https://github.com/northbright/Notes/tree/master/Golang/china

http://www.cnblogs.com/mountaingeek/p/5951156.html

go 源码下载

https://studygolang.com/dl
http://www.golangtc.com/download

遇到的问题

1. 

解决:ssh-add ~/.ssh/id_rsa

  ssh-add命令是把专用密钥添加到ssh-agent的高速缓存中。该命令位置在/usr/bin/ssh-add

  ssh-add -l 查看ssh-agent中的秘钥

转载于:https://www.cnblogs.com/yorkyang/p/6530097.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值