Goインストールメモやりなおし(vgo)

Created: 2019-01-26

いまのGoは、バイナリ内にパッケージマネージャが同梱されていることを知ったのでやりなおし。

depなんていらなかった。depだと、GOPATHが必要だったり、ディレクトリ構成もそこそこ縛られたりするし、goコマンドにバンドルされているvgoのほうが良かった。

環境要件

  • Mac OS X 10.13.6
$ sw_vers
ProductName:	Mac OS X
ProductVersion:	10.13.6
BuildVersion:	17G65

GVMのインストール

GVMはNVMとかと同じ、ランタイムのバージョンマネージャ。

$ bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)
Cloning from https://github.com/moovweb/gvm.git to /Users/xyz/.gvm
No existing Go versions detected
Installed GVM v1.0.22

Please restart your terminal session or to get started right away run
 `source /Users/xyz/.gvm/scripts/gvm`

$ source ~/.gvm/scripts/gvm 
$ gvm version
Go Version Manager v1.0.22 installed at /Users/xyz/.gvm

Goのインストール

GVMを使って、Goをインストールする。

gvm installでは、-Bをつけないと、ソースからビルドしてインストールしようとするのですが、このビルド自体にGoが使われるため、初めてインストールする場合は-Bオプションが必要になります。

$ gvm listall

gvm gos (available)

   ..
   go1.11.3
   go1.11.4
   go1.12beta1
   go1.12beta2
   ..


$ gvm install go1.11.4 -B
Installing go1.11.4 from binary source

$ gvm use go1.11.4
Now using version go1.11.4

$ go version
go version go1.11.4 darwin/amd64

$ echo "             
source ~/.gvm/scripts/gvm
gvm use `gvm list | grep -v gvm | grep -v '^ *$' | tr -d '=>' | tail`
">>~/.bash_profile 

プロジェクトの作成とビルド

プロジェクトは任意のディレクトリを作成して、バイナリは任意のファイルを作成してビルドする。いろいろやってくれたりはしないが、特別なルールもない。

go.modファイルで依存関係管理をする。モジュールバージョンは通常、リリースタグの名前等を指定する。ブランチ名なども使えるので、リリースタグが切られていない場合はそのような指定も可能。goコマンドにvgoがバンドルされているため、go buildで依存解決も一緒にされる。

$ mkdir -p go-uuid
$ cd go-uuid

$ echo '
package main

import (
  "fmt"
  "github.com/satori/go.uuid"
)
 
func main() {
    fmt.Printf("%v\n", uuid.Must(uuid.NewV4()));
}
'>main.go

$ echo '
module xyz/go-uuid

require github.com/satori/go.uuid master
'>go.mod

$ go build
$ ./go-uuid
ca4d9324-5813-4ffe-a242-8a1ba6f7c200

参考

avatar

Written by yo1000 | YO!CHI KIKUCHI
Loves 🌱 Spring, 🦢 Pelikan fountain pen and 🦁 FINAL FANTASY VIII