這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
做為營運人員,使用python語言足矣,理論上是無需瞭解golang的。不過最近發現一個新潮的監控系統都是基於golang進行開發的,如小米公司的Open-Falcon(github項目頁) 、stack exchange 公司的Bosun (github項目頁)。
一、Go的三種安裝方式
Go有多種安裝方式,你可以選擇自己喜歡的。這裡我們介紹三種最常見的安裝方式:
Go源碼安裝:這是一種標準的軟體安裝方式。對於經常使用Unix類系統的使用者,尤其對於開發人員來說,從源碼安裝可以自己定製。
Go標準包安裝:Go提供了方便的安裝包,支援Windows、Linux、Mac等系統。這種方式適合快速安裝,可根據自己的系統位元下載好相應的安裝包,一路next就可以輕鬆安裝了。推薦這種方式
第三方工具安裝:目前有很多方便的第三方軟體包工具,例如Ubuntu的apt-get、Mac的homebrew等。這種安裝方式適合那些熟悉相應系統的使用者。
最後,如果你想在同一個系統中安裝多個版本的Go,你可以參考第三方工具GVM,這是目前在這方面做得最好的工具,除非你知道怎麼處理。
二、Go源碼安裝
在Go的原始碼中,有些部分是用Plan 9 C和AT&T彙編寫的,因此假如你要想從源碼安裝,就必須安裝C的編譯工具。
在Mac系統中,只要你安裝了Xcode,就已經包含了相應的編譯工具。
在類Unix系統中,需要安裝gcc等工具。例如Ubuntu系統可通過在終端中執行sudo apt-get install gcc libc6-dev來安裝編譯工具。
在Windows系統中,你需要安裝MinGW,然後通過MinGW安裝gcc,並設定相應的環境變數。
由於本人平時主要涉及到linux平台下的使用,所以這裡只以linux平台為例,不涉及mac 和win下的安裝。
1、Go 原始碼下載
從 官方頁面 、 國內鏡像 或github上下載 Go 的源碼包到你的電腦上,然後將解壓後的目錄go通1過命令移動到$GOROOT所指向的位置。
#本人設定$GOROOT為/usr/local/goexport $GOROOT=/usr/local/gowget https://storage.googleapis.com/golang/go<VERSION>.src.tar.gztar zxv go<VERSION>.src.tar.gzmv go $GOROOT
2、安裝gcc等編譯工具
sudo apt-get install bison ed gawk gcc libc6-dev make或yum gcc mak gawk
根據不同的發行版,自行選擇相應的編譯環境包安裝的方式。
3、編譯
cd $GOROOT/src./all.bash
4、環境變數配置
export GOROOT=/usr/local/goexport PATH=$PATH:$GOROOT/bin或者使用如下:export PATH=$PATH:/usr/local/go/bin
根據需要可以在.bashrc、.profile、/etc/profile等任一檔案中配置相應的環境變數。
5、測試
直接運行go命令,出現如下部分,表示環境已經安裝好。
[root@361way ~]# goGo is a tool for managing Go source code.Usage: go command [arguments]The commands are: build compile packages and dependencies clean remove object files env print Go environment information fix run go tool fix on packages fmt run gofmt on package sources generate generate Go files by processing source get download and install packages and dependencies install compile and install packages and dependencies list list packages run compile and run Go program test test packages tool run specified go tool version print Go version vet run go tool vet on packagesUse "go help [command]" for more information about a command.Additional help topics: c calling between Go and C filetype file types gopath GOPATH environment variable importpath import path syntax packages description of package lists testflag description of testing flags testfunc description of testing functionsUse "go help [topic]" for more information about that topic.
三、go標準包安裝
通過官方下的壓縮包下載來看,標準包裡包含原始碼,不過區別的是其解包後已經有相應的bin目錄存在,裡面有已經編譯好的golang二進位包。可以直接使用上面第4部的操作配置環境變數後生效。
四、第三方工具安裝
1、centos平台下
需使用第三方源epel ,如下:
yum -y install golang
2、ubuntu平台下
sudo apt-get install python-software-propertiessudo add-apt-repository ppa:gophers/gosudo apt-get updatesudo apt-get install golang-stable git-core mercurial
3、mac平台下
brew update && brew upgradebrew install gobrew install gitbrew install mercurial
五、GVM工具
GVM是一個golang虛擬環境組態工具,其允許一台機器上安裝多個golang版本,gvm是第三方開發的Go多版本管理工具,類似ruby裡面的rvm工具。使用起來相當的方便,安裝gvm使用如下命令:
bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)
安裝完成後我們就可以安裝go了:
gvm install go1.4.2gvm use go1.4.2
也可以使用下面的命令,省去每次調用gvm use的麻煩:
gvm use go1.4.2 --default 執行完上面的命令之後GOPATH、GOROOT等環境變數會自動化佈建好,這樣就可以直接使用了。
六、Go 環境變數
Go 開發環境依賴於一些作業系統環境變數,你最好在安裝 Go 之間就已經設定好他們。如果你使用的是 Windows 的話,你完全不用進行手動設定,Go 將被預設安裝在目錄c:/go下。這裡列舉幾個最為重要的環境變數:
$GOROOT 表示 Go 在你的電腦上的安裝位置,它的值一般都是$HOME/go,當然,你也可以安裝在別的地方。
$GOARCH 表示目標機器的處理器架構,它的值可以是 386、amd64 或 arm。
$GOOS 表示目標機器的作業系統,它的值可以是 darwin、freebsd、linux 或 windows。
$GOBIN 表示編譯器和連結器的安裝位置,預設是$GOROOT/bin,如果你使用的是 Go 1.0.3 及以後的版本,一般情況下你可以將它的值設定為空白,Go 將會使用前面提到的預設值。
目標機器是指你打算運行你的 Go 應用程式的機器。
Go 編譯器支援交叉編譯,也就是說你可以在一台機器上構建運行在具有不同作業系統和處理器架構上啟動並執行應用程式,也就是說編寫原始碼的機器可以和目標機器有完全不同的特性(作業系統與處理器架構)。
為了區分本地機器和目標機器,你可以使用$GOHOSTOS和$GOHOSTARCH設定目標機器的參數,這兩個變數只有在進行交叉編譯的時候才會用到,如果你不進行顯示設定,他們的值會和本地機器($GOOS和$GOARCH)一樣。
$GOPATH 預設採用和$GOROOT一樣的值,但從 Go 1.1 版本開始,你必須修改為其它路徑。它可以包含多個包含 Go 語言源碼檔案、包檔案和可執行檔的路徑,而這些路徑下又必須分別包含三個規定的目錄:src、pkg和bin,這三個目錄分別用於存放源碼檔案、包檔案和可執行檔。
$GOARM 專門針對基於 arm 架構的處理器,它的值可以是 5 或 6,預設為 6。
$GOMAXPROCS 用於設定應用程式可使用的處理器個數與核心數,詳見第 14.1.3 節。
在接下來的章節中,我們將會討論如何在 Linux、Mac OS X 和 Windows 上安裝 Go 語言。在 FreeBSD 上的安裝和
Linux 非常類似。Team Dev正在嘗試將 Go 語言移植到其它例如 OpenBSD、DragonFlyBSD、NetBSD、Plan
9、Haiku 和 Solaris 作業系統上,你可以在這個頁面找到最近的動態:Go Porting Efforts。
主機環境使用樣本:
export GOARCH=amd64export GOOS=linux
七、hello word
建立一個hello.go檔案,內容如下:
package mainimport "fmt"func main() { fmt.Printf("hello, world\n")}
運行結果如下:
# go run hello.gohello, world