この記事は3年以上前に書かれた記事で内容が古い可能性があります
オフライン環境にgo環境を構築する
※最新情報はこちら
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
完成。