Go - 在 OSX 安裝 GVM

前言

之前有寫過一篇用 Brew 安裝 GO,因為習慣上會用 rvm、nvm 來管理程式語言的版本,
所以心血來潮也想試試看安裝 GVM 在作業環境,不過如標題所示,
gvm Bug 滿多,而且跟我慣用的 Fish shell 不太相容。
總結下來,如果使用 OSX 環境推薦大家使用 Brew 來安裝。

安裝 GVM

安裝 gvm 完成後會跳出錯誤,沒有 gcc,所以我們來裝 gcc 。

安裝 gcc

1
brew install gcc

安裝完成後輸入 gcc,結果:

1
> Unknown command 'gcc'

brew 安裝的 gcc 並不能讓你直接用指令使用。
安裝完成後切換至 /usr/local/bin 資料夾,輸入 ls 查看資料夾。

並沒有直接對應到 gcc,而是 gcc-4.9,來測試看看 gcc-4.9 能否正常動作:

1
2
3
4
5
6
7
8
9
$ /usr/local/bin/gcc-4.9 -v

Using built-in specs.
COLLECT_GCC=/usr/local/bin/gcc-4.9
COLLECT_LTO_WRAPPER=/usr/local/Cellar/[email protected]/4.9.3/bin/../libexec/gcc/x86_64-apple-darwin15.0.0/4.9.3/lto-wrapper
Target: x86_64-apple-darwin15.0.0
Configured with: ../configure --build=x86_64-apple-darwin15.0.0 --prefix=/usr/local/Cellar/gcc49/4.9.3 --libdir=/usr/local/Cellar/gcc49/4.9.3/lib/gcc/4.9 --enable-languages=c,c++,objc,obj-c++ --program-suffix=-4.9 --with-gmp=/usr/local/opt/gmp4 --with-mpfr=/usr/local/opt/mpfr2 --with-mpc=/usr/local/opt/libmpc08 --with-cloog=/usr/local/opt/cloog018 --with-isl=/usr/local/opt/isl011 --with-system-zlib --enable-libstdcxx-time=yes --enable-stage1-checking --enable-checking=release --enable-lto --with-build-config=bootstrap-debug --disable-werror --with-pkgversion='Homebrew gcc49 4.9.3' --with-bugurl=https://github.com/Homebrew/homebrew-versions/issues --enable-plugin --disable-nls --enable-multilib
Thread model: posix
gcc version 4.9.3 (Homebrew gcc49 4.9.3)

OK 看來沒問題!
剩下的是把 gcc 指令對應 /usr/local/bin/gcc-4.9,輸入以下指令:

1
ln -s /usr/local/bin/gcc-4.9 gcc

來測試看看 gcc 指令:

1
2
3
4
5
6
7
8
$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/local/Cellar/[email protected]/4.9.3/bin/../libexec/gcc/x86_64-apple-darwin15.0.0/4.9.3/lto-wrapper
Target: x86_64-apple-darwin15.0.0
Configured with: ../configure --build=x86_64-apple-darwin15.0.0 --prefix=/usr/local/Cellar/gcc49/4.9.3 --libdir=/usr/local/Cellar/gcc49/4.9.3/lib/gcc/4.9 --enable-languages=c,c++,objc,obj-c++ --program-suffix=-4.9 --with-gmp=/usr/local/opt/gmp4 --with-mpfr=/usr/local/opt/mpfr2 --with-mpc=/usr/local/opt/libmpc08 --with-cloog=/usr/local/opt/cloog018 --with-isl=/usr/local/opt/isl011 --with-system-zlib --enable-libstdcxx-time=yes --enable-stage1-checking --enable-checking=release --enable-lto --with-build-config=bootstrap-debug --disable-werror --with-pkgversion='Homebrew gcc49 4.9.3' --with-bugurl=https://github.com/Homebrew/homebrew-versions/issues --enable-plugin --disable-nls --enable-multilib
Thread model: posix
gcc version 4.9.3 (Homebrew gcc49 4.9.3)

It’s working!!

lion - How to set gcc 4.8 as default gcc compiler - Ask Different

安裝 GO 1.4

要安裝 go 1.4 以上的版本前,你得先安裝 go 1.4。
而安裝 go 1.4 的時候會遇到以下的 bug:

1
2
3
4
5
$ gvm install go1.4
Installing go1.4...
* Compiling...
ERROR: Failed to compile. Check the logs at /Users/andrew/.gvm/logs/go-go1.4-compile.log
ERROR: Failed to use installed version

這邊有個 work around 的方式,使用 binary 檔安裝。

1
gvm install go1.4 --binary

go1.4 compile error in Mac OS 10.11 · Issue #217 · moovweb/gvm

安裝 GO 1.8

安裝完成後要設定 GOROOT_BOOTSTRAP 變數,這樣就可以安裝 go 1.4 以上的版本了

1
2
3
4
gvm install go1.4
gvm use go1.4
export GOROOT_BOOTSTRAP=$GOROOT
gvm install go1.8

expo

Error with go1.5 install · Issue #155 · moovweb/gvm

將 gvm 指定加到 shell

bash

要將 gvm 指令加到 bash,將以下指令加到 ~/.bashsrc

1
2
3
4
5
6
# added gvm command to shell
source "$HOME/.gvm/scripts/gvm"
# directory path for GO
export GOPATH=$HOME/gopath
export GOROOT=$HOME/go
export PATH=$PATH:$GOROOT/bin

fish

要將 gvm 指令加到 fish shell,把以下指令加到 ~/.config/fish/config.fish

1
2
3
function gvm
bass source ~/.gvm/scripts/gvm ';' gvm $argv
end

Fish shell環境でgvmを導入する - メンチカツ

評論