go環境搭建—基於CentOS6.8

 1. 背景 

  在當前的中國網絡環境下,咱們沒法訪問Google的服務的,包括Golang.org。從第三方網站下載預編譯的二進制Go發行版可能存在第三方源代碼注入的風險,例如以前的XcodeGhost。
  Go的權威倉庫地址是 https://go.googlesource.com/go,同時還有一個鏡像倉庫在 https://github.com/golang/go  (至少在目前,咱們還能訪問github)html

2. 問題

  Go1.7的編譯過程須要Go1.4的執行文件來實現 bootstrap(自舉)(簡單來講: Go須要Go自身來編譯,搭建go1.5及以上版本的編譯環境須要先安裝go1.4版本)linux

3. 解決方案

  從Github的Go倉庫鏡像獲取Go的源代碼git

  首先編譯Go1.4(只須要gcc和glibc-devel,不須要Go來編譯,因而可知go1.4.x 是個特殊的版本!)
  使用編譯好的Go1.4的二進制文件來編譯Go1.6github

3.1 準備

  • 若是以前已經安裝過老版本的Go,清除$GOPATH, $GOROOT變量。
  • 安裝好Git
  • 配置 Git

    須要從github上拉代碼,得先註冊一個github帳號(https://github.com)golang

    而後在 linux 執行shell

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

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

  • 建立SSH key,添加Public Key到Github帳號。

    > ssh-keygen -t rsa -b 2048centos

    > 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

4. go 工做目錄

  全部Go可執行程序都經過靜態方式連接在一塊兒,因此在運行時是不須要相關的包對象(庫)

  go install 會把庫文件 xxx.a 放到 $GOPATH/pkg 相應的 arch 下面,這樣 go命令能夠直接找到對應的包對象,避免沒必要要的重複編譯

  linux_amd64是爲了根據操做系統和你的系統架構交叉編譯

當你創建工做空間目錄後,你須要把工做空間目錄的路徑添加的GOPATH環境變量中。GOPATH環境變量支持多個值,若是你有多個工做空間,能夠把多個工做空間值都添加到這個環境變量中,window系統使用分號";"分隔不一樣值,Linux或Unix系統使用冒號」:「分隔不一樣值。另外,還要將全部工做空間的bin路徑添加到PATH環境變量中

固然,若是你的工做空間不止一個,PATH變量中不能直接使用$GOPATH/bin,要分別將各個工做空間中的bin路徑添加進去。

須要注意的是,GOPATH環境變量的值不能與安裝的go目錄相同。go目錄中一樣有src、pkg、bin等相似工做空間的目錄結構,不過其中包含的是go的標準模塊,最好不要講本身的工做空間和go目錄混合

一般 項目代碼目錄 建成 $GOPATH/src/github.com/ [ nsq ] 的形式

 5. package 引用

  默認

  先會到 $GOROOT/src 下查找 

  其次到 $GOPATH/src 下查找 

   $GOPATH/src 下的目錄結構最好跟 github 上保持一致,方便拉取github上的代碼

 

參考資料:

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中的祕鑰

相關文章
相關標籤/搜索