yoshiislandblog.net
元営業の駆け出しアラサーSEが、休日にMACと戯れた際の殴り書きメモ。日々勉強。日々進歩。

この記事は3年以上前に書かれた記事で内容が古い可能性があります

オフライン環境にgo環境を構築する

2018-07-29

※最新情報はこちら
Goで複数バージョンを共存させ、Moduleモードで実行する


オフライン環境にgo環境を構築したいときの手順メモ。
インターネット環境のMacまたはLinuxに必要なものをダウンロード(Xインストール)して、オフライン環境のLinuxに持っていき、オフライン環境でgolang環境を構築するイメージ。

まずはインターネット環境のあるマシンで必要なものをダウンロードする。

必要モジュールをダウンロード

(1)Golangそのもの

こちらからお好きなものをインストール。
https://golang.org/dl/

curlでもwgetでも良いのでローカルに落としておく。

% wget https://dl.google.com/go/go1.10.3.linux-amd64.tar.gz
% curl -L https://dl.google.com/go/go1.10.3.linux-amd64.tar.gz > go1.10.3.linux-amd64.tar.gz

(2)goenv

無くても良いものだけど一応ダウンロード。開発環境に入れるので必要かも。バージョン管理用。
こちらにある。
https://github.com/wfarr/goenv

% git clone https://github.com/wfarr/goenv

(3)glide

こちらも無くても良いものだけどダウンロードしておく。パッケージ管理用。

% add-apt-repository ppa:masterminds/glide && sudo apt-get update
% apt-get --download-only install glide

必要モジュールをオフライン環境へ持って行く

これは環境依存になるので、なんらかの方法でオフライン環境へ、ダウンロードしたファイルたちを持って行く。

こちらを参考に。
ファイルやりとり方法整理整頓

GOを動かす

ここからは、オフライン環境のLinuxから操作。
まずはgoから動くようにする。

GOPATHとGOROOTにパスを張る。
go_workが実際のコードを置いたりする場所、GOROOTがダウンロードしたgoを置いた場所とする。
※今回はオフライン環境であり、好きな場所にコードをおきたいのでこのようにしているため、Goの思想とはあっていないかもしれません。。

# export GOPATH=/root/yoshi/go_work
# export GOROOT=/root/yoshi/go

動かしてみる。

# /root/yoshi/go/go/bin/go
Go is a tool for managing Go source code.

Usage:

        go command [arguments]

The commands are:

        build       compile packages and dependencies
        clean       remove object files and cached files
        doc         show documentation for package or symbol
        env         print Go environment information
        bug         start a bug report
        fix         update packages to use new APIs
        fmt         gofmt (reformat) 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         report likely mistakes in packages

Use "go help [command]" for more information about a command.

Additional help topics:

        c           calling between Go and C
        buildmode   build modes
        cache       build and test caching
        filetype    file types
        gopath      GOPATH environment variable
        environment environment variables
        importpath  import path syntax
        packages    package lists
        testflag    testing flags
        testfunc    testing functions

Use "go help [topic]" for more information about that topic.

動いた。

あとは、goコマンドが直接使えるようにパスを通しておく。

# export PATH=$PATH:$GOROOT/go/bin/

動かす。

# go
Go is a tool for managing Go source code.

Usage:

        go command [arguments]

The commands are:

        build       compile packages and dependencies
        clean       remove object files and cached files
        doc         show documentation for package or symbol
        env         print Go environment information
        bug         start a bug report
        fix         update packages to use new APIs
        fmt         gofmt (reformat) 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         report likely mistakes in packages

Use "go help [command]" for more information about a command.

Additional help topics:

        c           calling between Go and C
        buildmode   build modes
        cache       build and test caching
        filetype    file types
        gopath      GOPATH environment variable
        environment environment variables
        importpath  import path syntax
        packages    package lists
        testflag    testing flags
        testfunc    testing functions

Use "go help [topic]" for more information about that topic.

Goenvを動かす

Goenvも実際にダウンロードした場所までパスを通して、動かして見る。

# export PATH=$PATH:$GOROOT/goenv/bin
# goenv
Usage: goenv <command> [<args>]

Some useful goenv commands are:
   exec        Execute a command from a particular Go version.
   shell       Set GOENV_VERSION for the lifetime of a shell.
   local       Persist the preferred Go version in the cwd.
   global      Persist the preferred Go default version.
   install     Install a version of Go.
   uninstall   Uninstall a version of Go.
   version     Show the current Go version.
   versions    Display all versions of Go installed in `${GOENV_ROOT}/versions/*'.
   rehash      Rehash goenv shims (run this after installing executables)

See `goenv help <command>' for information on a specific command.

Glideを動かす

Glideも同様に実際にダウンロードした場所までパスを通して、動かして見る。

# export PATH=$PATH:$GOROOT
# glide
NAME:
   glide - Vendor Package Management for your Go projects.

   Each project should have a 'glide.yaml' file in the project directory. Files
   look something like this:

       package: github.com/Masterminds/glide
       imports:
       - package: github.com/Masterminds/cookoo
         version: 1.1.0
       - package: github.com/kylelemons/go-gypsy
         subpackages:
         - yaml

   For more details on the 'glide.yaml' files see the documentation at
   https://glide.sh/docs/glide.yaml


USAGE:
   glide [global options] command [command options] [arguments...]

VERSION:
   v0.13.1

COMMANDS:
     create, init       Initialize a new project, creating a glide.yaml file
     config-wizard, cw  Wizard that makes optional suggestions to improve config in a glide.yaml file.
     get                Install one or more packages into `vendor/` and add dependency to glide.yaml.
     remove, rm         Remove a package from the glide.yaml file, and regenerate the lock file.
     import             Import files from other dependency management systems.
     name               Print the name of this project.
     novendor, nv       List all non-vendor paths in a directory.
     rebuild            Rebuild ('go build') the dependencies
     install, i         Install a project's dependencies
     update, up         Update a project's dependencies
     tree               (Deprecated) Tree prints the dependencies of this project as a tree.
     list               List prints all dependencies that the present code references.
     info               Info prints information about this project
     cache-clear, cc    Clears the Glide cache.
     about              Learn about Glide
     mirror             Manage mirrors
     help, h            Shows a list of commands or help for one command

GLOBAL OPTIONS:
   --yaml value, -y value  Set a YAML configuration file. (default: "glide.yaml")
   --quiet, -q             Quiet (no info or debug messages)
   --debug                 Print debug verbose informational messages
   --home value            The location of Glide files (default: "/root/.glide") [$GLIDE_HOME]
   --tmp value             The temp directory to use. Defaults to systems temp [$GLIDE_TMP]
   --no-color              Turn off colored output for log messages
   --help, -h              show help
   --version, -v           print the version

完成。