# Go 安裝

## Go 的三種安裝方式

Go 有多種安裝方式，你可以選擇自己喜歡的。這裡我們介紹三種最常見的安裝方式：

* Go 原始碼安裝：這是一種標準的軟體安裝方式。對於經常使用 Unix 類別系統的使用者，尤其對於開發者來說，從原始碼安裝可以自己訂製。
* Go 標準套件安裝：Go 提供了方便的安裝套件，支援 Windows、Linux、Mac 等系統。這種方式適合快速安裝，可根據自己的系統位數下載好相應的安裝套件，一路 next 就可以輕鬆安裝了。**推薦這種方式**
* 第三方工具安裝：目前有很多方便的第三方軟體套件工具，例如 Ubuntu 的 apt-get 和 wget、Mac 的 homebrew 等。這種安裝方式適合那些熟悉相應系統的使用者。

最後，如果你想在同一個系統中安裝多個版本的 Go，你可以參考第三方工具[GVM](https://github.com/moovweb/gvm)，這是目前在這方面做得最好的工具，除非你知道怎麼處理。

## Go 原始碼安裝

Go 1.5 徹底移除 C 程式碼，Runtime、Compiler、Linker 均由 Go 編寫，實現自舉。只需要安裝了上一個版本，即可從原始碼安裝。

在 Go 1.5 前,Go 的原始碼中，有些部分是用 Plan 9 C 和 AT\&T 彙編寫的，因此假如你要想從原始碼安裝，就必須安裝 C 的編譯工具。

在 Mac 系統中，只要你安裝了 Xcode，就已經包含了相應的編譯工具。

在類別 Unix 系統中，需要安裝 gcc 等工具。例如 Ubuntu 系統可透過在終端中執行`sudo apt-get install gcc libc6-dev`來安裝編譯工具。

在 Windows 系統中，你需要安裝 MinGW，然後透過 MinGW 安裝 gcc，並設定相應的環境變數。

你可以直接去官網 [ 下載原始碼](http://golang.org/dl/)，找相應的`goVERSION.src.tar.gz`的檔案下載，下載之後解壓縮到`$HOME`目錄，執行如下程式碼：

```
cd go/src
./all.bash
```

執行 all.bash 後出現"ALL TESTS PASSED"字樣時才算安裝成功。

上面是 Unix 風格的命令，Windows 下的安裝方式類似，只不過是執行`all.bat`，呼叫的編譯器是 MinGW 的 gcc。

如果是 Mac 或者 Unix 使用者需要設定幾個環境變數，如果想重啟之後也能生效的話把下面的命令寫到`.bashrc`或者`.zshrc`裡面，

```
export GOPATH=$HOME/gopath
export PATH=$PATH:$HOME/go/bin:$GOPATH/bin
```

如果你是寫入檔案的，記得執行`bash .bashrc`或者`bash .zshrc`使得設定立馬生效。

如果是 window 系統，就需要設定環境變數，在 path 裡面增加相應的 go 所在的目錄，設定 gopath 變數。

當你設定完畢之後在命令列裡面輸入`go`，看到如下圖片即說明你已經安裝成功

![](https://4278675773-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M6Ees3f-VcmFu88247C%2Fsync%2F45ffd924013bc84c7f5ddb3339449d64de22bd02.png?generation=1588327078851625\&alt=media)

圖 1.1 原始碼安裝之後執行 Go 命令的圖

如果出現 Go 的 Usage 資訊，那麼說明 Go 已經安裝成功了；如果出現該命令不存在，那麼可以檢查一下自己的 PATH 環境變中是否包含了 Go 的安裝目錄。

從 go 1.8 開始，GOPATH 環境變數現在有一個預設值，如果它沒有被設定。 它在 Unix 上預設為$HOME/go，在 Windows 上預設為%USERPROFILE%/go。

> 關於上面的 GOPATH 將在下面小節詳細講解

## Go 標準套件安裝

Go 提供了每個平臺一鍵安裝的選項，這些套件預設會安裝到如下目錄：/usr/local/go (Windows 系統：c:\Go)，當然你可以改變他們的安裝位置，但是改變之後你必須在你的環境變數中設定如下資訊：

```
export GOROOT=$HOME/go
export GOPATH=$HOME/gopath
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
```

上面這些命令對於 Mac 和 Unix 使用者來說最好是寫入`.bashrc`或者`.zshrc`檔案，對於 windows 使用者來說當然是寫入環境變數。

### 如何判斷自己的作業系統是 32 位還是 64 位？

我們接下來的 Go 安裝需要判斷作業系統的位數，所以這小節我們先確定自己的系統型別。

Windows 系統使用者請按 Win+R 執行 cmd，輸入 `systeminfo` 後 Enter，稍等片刻，會出現一些系統資訊。在“系統型別”一行中，若顯示“x64-based PC”，即為 64 位系統；若顯示“X86-based PC”，則為 32 位系統。

Mac 系統使用者建議直接使用 64 位的，因為 Go 所支援的 Mac OS X 版本已經不支援純 32 位處理器了。

Linux 系統使用者可透過在 Terminal 中執行命令`arch`(即`uname -m`)來檢視系統資訊：

64 位系統顯示

```
x86_64
```

32 位系統顯示

```
i386
```

### Mac 安裝

瀏覽 [Golang 下載地址](https://golang.org/dl/)，32 位系統下載 go1.4.2.darwin-386-osx10.8.pkg(更新的版本已無 32 位下載)，64 位系統下載 go1.8.3.darwin-amd64.pkg，雙擊下載檔案，一路預設安裝點選下一步，這個時候 go 已經安裝到你的系統中，預設已經在 PATH 中增加了相應的`~/go/bin`，這個時候開啟終端，輸入`go`

看到類似上面原始碼安裝成功的圖片說明已經安裝成功

如果出現 go 的 Usage 資訊，那麼說明 go 已經安裝成功了；如果出現該命令不存在，那麼可以檢查一下自己的 PATH 環境變中是否包含了 go 的安裝目錄。

### Linux 安裝

瀏覽 [Golang 下載地址](https://golang.org/dl/)，32 位系統下載 go1.8.3.linux-386.tar.gz，64 位系統下載 go1.8.3.linux-amd64.tar.gz，

假定你想要安裝 Go 的目錄為 `$GO_INSTALL_DIR`，後面替換為相應的目錄路徑。

解壓縮`tar.gz`到安裝目錄下：`tar zxvf go1.8.3.linux-amd64.tar.gz -C $GO_INSTALL_DIR`。

設定 PATH，`export PATH=$PATH:$GO_INSTALL_DIR/go/bin`

然後執行`go`

![](https://4278675773-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M6Ees3f-VcmFu88247C%2Fsync%2F45ffd924013bc84c7f5ddb3339449d64de22bd02.png?generation=1588327078961298\&alt=media)

圖 1.2 Linux 系統下安裝成功之後執行 go 顯示的資訊

如果出現 go 的 Usage 資訊，那麼說明 go 已經安裝成功了；如果出現該命令不存在，那麼可以檢查一下自己的 PATH 環境變中是否包含了 go 的安裝目錄。

### Windows 安裝 ##\#

瀏覽 [Golang 下載頁](https://golang.org/dl/)，32 位請選擇名稱中包含 windows-386 的 msi 安裝套件，64 位請選擇名稱中包含 windows-amd64 的。下載好後執行，不要修改預設安裝目錄 C:\Go\，若安裝到其他位置會導致不能執行自己所編寫的 Go 程式碼。安裝完成後預設會在環境變數 Path 後新增 Go 安裝目錄下的 bin 目錄 `C:\Go\bin\`，並新增環境變數 GOROOT，值為 Go 安裝根目錄 `C:\Go\` 。

**驗證是否安裝成功**

在執行中輸入 `cmd` 開啟命令列工具，在提示符下輸入 `go`，檢查是否能看到 Usage 資訊。輸入 `cd %GOROOT%`，看是否能進入 Go 安裝目錄。若都成功，說明安裝成功。

不能的話請檢查上述環境變數 Path 和 GOROOT 的值。若不存在請解除安裝後重新安裝，存在請重啟計算機後重試以上步驟。

## 第三方工具安裝

### GVM

gvm 是第三方開發的 Go 多版本管理工具，類似 ruby 裡面的 rvm 工具。使用起來相當的方便，安裝 gvm 使用如下命令：

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

安裝完成後我們就可以安裝 go 了：

```bash
gvm install go1.8.3
gvm use go1.8.3
```

也可以使用下面的命令，省去每次呼叫 gvm use 的麻煩： gvm use go1.8.3 --default

執行完上面的命令之後 GOPATH、GOROOT 等環境變數會自動設定好，這樣就可以直接使用了。

### apt-get

Ubuntu 是目前使用最多的 Linux 桌面系統，使用`apt-get`命令來管理軟體套件，我們可以透過下面的命令來安裝 Go，為了以後方便，應該把 `git` `mercurial` 也安裝上：

```bash
sudo apt-get install python-software-properties
sudo add-apt-repository ppa:gophers/go
sudo apt-get update
sudo apt-get install golang-stable git-core mercurial
```

### wget

```bash
wget https://storage.googleapis.com/golang/go1.8.3.linux-amd64.tar.gz
sudo tar -xzf go1.8.3.linux-amd64.tar.gz -C /usr/local
```

配置環境變數:

```bash
export GOROOT=/usr/local/go
export GOBIN=$GOROOT/bin
export PATH=$PATH:$GOBIN
export GOPATH=$HOME/gopath (可選設定)
```

或者使用:

```bash
sudo vim /etc/profile
```

並新增下面的內容：

```bash
export GOROOT=/usr/local/go
export GOBIN=$GOROOT/bin
export PATH=$PATH:$GOBIN
export GOPATH=$HOME/gopath (可選設定)
```

重新載入 profile 檔案

```bash
source /etc/profile
```

### homebrew

homebrew 是 Mac 系統下面目前使用最多的管理軟體的工具，目前已支援 Go，可以透過命令直接安裝 Go，為了以後方便，應該把 `git` `mercurial` 也安裝上：

1.安裝 homebrew

```bash
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
```

2.安裝 go

```bash
brew update && brew upgrade
brew install go
brew install git
brew install mercurial //可選安裝
```

## links

* [目錄](https://github.com/doggy8088/build-web-application-with-golang-zhtw/tree/80abfb9f0c5f9f703922f4114d78f2e3c26a4dfb/preface.md)
* 上一節: [Go 環境配置](https://willh.gitbook.io/build-web-application-with-golang-zhtw/01.0)
* 下一節: [GOPATH 與工作空間](https://willh.gitbook.io/build-web-application-with-golang-zhtw/01.0/01.2)
