在當前的中國網絡環境下,咱們沒法訪問Google的服務的,包括Golang.org。從第三方網站下載預編譯的二進制Go發行版可能存在第三方源代碼注入的風險,例如以前的XcodeGhost。
Go的權威倉庫地址是 https://go.googlesource.com/go,同時還有一個鏡像倉庫在 https://github.com/golang/go (至少在目前,咱們還能訪問github)html
Go1.7的編譯過程須要Go1.4的執行文件來實現 bootstrap(自舉)(簡單來講: Go須要Go自身來編譯,搭建go1.5及以上版本的編譯環境須要先安裝go1.4版本)linux
從Github的Go倉庫鏡像獲取Go的源代碼git
首先編譯Go1.4(只須要gcc和glibc-devel,不須要Go來編譯,因而可知go1.4.x 是個特殊的版本!)
使用編譯好的Go1.4的二進制文件來編譯Go1.6github
須要從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-keygen -t rsa -b 2048centos
> ssh-add ~/.ssh/id_rsa緩存
複製 ~/.ssh/id_rsa.pub 中的 Public Key 到 github SSH settings 以添加新的 SSH key
> sudo yum install gcc glibc-devel
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(默認值是~/go1.4,編譯go1.5及以上版本必需)
vim /etc/profile
# Golang Env export GOROOT_BOOTSTRAP=/usr/local/go1.4 export PATH=$PATH:$GOROOT_BOOTSTRAP
source /etc/profile
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
注:
工做目錄介紹
工做區是一個目錄層次結構,它的根目錄有三個目錄:
src 包含Go源文件
pkg 包含對象和包
bin 包含可執行命令
Go工具建立源碼包並安裝二進制文件到pkg和bin目錄下
src目錄一般包含多個版本控制庫(如Git或Mercurial),跟蹤一個或多個源包的開發
退出shell從新登陸
go version
go version go1.7 linux/amd64
全部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 ] 的形式
默認
先會到 $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中的祕鑰