CentOS7.4に最新のGolangをインストールする

投稿者: | 2018年4月2日

はじめに

仮想マシン上のCentOS7.4にGo言語用の開発環境を構築する方法をまとめます。

環境

  • Vagrant 2.0.3
  • Virtualbox 5.2.8
  • CentOS 7.4 (centos/7 virtualbox, 1802.01)

利用したVagrantfile

# vim: set ft=ruby :

Vagrant.configure("2") do |config|
  config.vm.box = "centos/7"
  config.vm.box_version = "1802.01"

  config.vm.network "private_network", ip:"192.168.200.1"

  config.vm.provider "virtualbox" do |vb|
      vb.memory = 4096  # 4GiB
  end
end

手順

ダウンロード

Golang公式サイトのダウンロードページで最新バージョンを確認してアーカイブをダウンロードする。

(2018/4/2時点の最新は1.10.1なので「go1.10.1.linux-amd64.tar.gz」)

$ curl -L -O https://dl.google.com/go/go1.10.1.linux-amd64.tar.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  114M  100  114M    0     0  41.6M      0  0:00:02  0:00:02 --:--:-- 41.6M

インストールしてパスを通す

ビルド済みのファイルがアーカイブされているので、展開してパスを通す。

$ sudo tar -C /usr/local -xf go1.10.1.linux-amd64.tar.gz
$ echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bash_profile

環境変数GOPATHを設定する

$ echo 'export GOPATH=$HOME/go' >> ~/.bash_profile

作業ディレクトリを作成する

下記はgithub.comを利用してソースファイルを管理する場合の例です。

([username]には自分のgithubのusernameを指定する)

$ cd
$ mkdir -p ~/go/{src,bin,pkg}
$ mkdir -p ~/go/src/github.com/[username]/[repository name]

go getでインストールしたコマンドのためのパスを通す

$ echo 'export PATH=$PATH:$GOPATH/bin' >> ~/.bash_profile

go getで必要になるコマンドをインストール

go getは各リポジトリから直接ファイルを取得するので、それぞれに対応したコマンドが必要なります。

目的のライブラリやコマンドのリポジトリがgithub.comでも依存しているライブラリがgithub.com以外の場合があるので、git、hg、svnあたりを使えるように以下のパッケージをインストールします。

$ sudo yum install -y git mercurial subversion

備考

環境変数GOROOTについて

実行ファイルに埋め込まれた、GOROOTの場所以外にインストールした場合に設定が必要となる。
(Golangでの標準は「/usr/local」だけど提供パッケージにより異なる)

今回ダウンロードしたアーカイブの場合は、標準通りなので環境変数GOROOTは設定しません。

# 埋め込み値の確認
$ go env | grep GOROOT
GOROOT="/usr/local/go"

環境変数GOPATHについて

環境変数GOROOTのように実行ファイルに埋め込まれている値があり、環境変数GOPATHを設定せずにgo getを行うと「$HOME/go」以下にパッケージやgo製のコマンドがインストールされます。

環境変数GOROOTのように未設定でもいいのかと思ったら、Golang向けのツールなどが環境変数GOPATHから値を取得するように作られていたりするので必ず設定します。

# 埋め込み値の確認
$ go env | grep GOPATH
GOPATH="/home/vagrant/go"

まとめ

とあるtweetを見てちょろっと試そうとGolang環境を構築しようと思ったら、yumでインストールできるパッケージが古かったので最新バージョンのインストール方法を探ってみました。

お約束のように環境変数GOPATHとプロジェクトの作業ディレクトリ作成で躓いたけど、積読してた「みんなのGo言語」で何とか前進!(و 'ω' )و