Golangのインストール

anyenvgoenvの組み合わせがおすすめ

What's anyenv

anyenv.github.io

anyenvはPythonならpyenv、Rubyならrbenvのような**env系をひとまとめにするラッパープログラム。

現在以下の言語に対応している

  • Renv: R
  • crenv: Crystal
  • denv: D
  • erlenv: Erlang
  • exenv: Elixir
  • goenv: GO
  • hsenv: Haskell
  • jenv: Java
  • luaenv: Lua
  • nodenv: Node.js
  • phpenv: PHP
  • plenv: Perl
  • pyenv: Python
  • rbenv: Ruby
  • sbtenv: Sbt
  • scalaenv: Scala
  • swiftenv: Swift

**env ...?

**env系とはRubyのrbenvが発祥の言語を複数のバージョン使い分ける為のツール。 派生として各言語の**envができた。

グローバルの環境を汚さないので開発環境に適している。

Install anyenv

Homebrew (Mac)

  1. anyenvをインストールする
  2. $ brew install anyenv
    
  3. anyenvの設定をする
  4. $ anyenv init
    
  5. 初期設定
  6. $ anyenv install --init
    
  7. 起動時に読み込むようにする
  8. # bashの場合
    $ echo 'eval "$(anyenv init -)"' >> ~/.bashrc
    
    # zshの場合
    $ echo 'eval "$(anyenv init -)"' >> ~/.zshrc
    
  9. 端末を再起動する
  10. プラグインをインストールする
  11. $ mkdir -p $(anyenv root)/plugins
    $ git clone https://github.com/znz/anyenv-update.git $(anyenv root)/plugins/anyenv-update
    $ git clone https://github.com/znz/anyenv-git.git $(anyenv root)/plugins/anyenv-git
    

Manual git checkout (Linux)

  1. ~/.anyenvにクローンする
  2. $ git clone https://github.com/anyenv/anyenv ~/.anyenv
    
  3. ~/.anyenv/binを$PATHに追加し、起動時に読み込むようにする
  4. # bashの場合
    $ echo 'export PATH="$HOME/.anyenv/bin:$PATH"' >> ~/.bashrc
    $ echo 'eval "$(anyenv init -)"' >> ~/.bashrc
    
    # zshの場合
    $ echo 'export PATH="$HOME/.anyenv/bin:$PATH"' >> ~/.zshrc
    $ echo 'eval "$(anyenv init -)"' >> ~/.zshrc
    
  5. anyenvの設定をする
  6. $ ~/.anyenv/bin/anyenv init
    
  7. 初期設定
  8. $ ~/.anyenv/bin/anyenv install --init
    
  9. 端末を再起動する
  10. プラグインをインストールする
  11. $ mkdir -p $(anyenv root)/plugins
    $ git clone https://github.com/znz/anyenv-update.git $(anyenv root)/plugins/anyenv-update
    $ git clone https://github.com/znz/anyenv-git.git $(anyenv root)/plugins/anyenv-git
    

Install goenv and golang

github.com

  1. goenvをインストールする
  2. $ anyenv install goenv
    
  3. GOPATHを指定
  4. # bashの場合
    $ echo 'export GOENV_DISABLE_GOPATH=1' >> ~/.bashrc
    $ echo 'export GO111MODULE=on' >> ~/.bashrc
    $ echo 'export GOPATH=$HOME/Project' >> ~/.bashrc
    $ echo 'export PATH=$PATH:$GOPATH/bin' >> .bashrc
    
    # zshの場合
    $ echo 'export GOENV_DISABLE_GOPATH=1' >> ~/.zshrc
    $ echo 'export GO111MODULE=on' >> ~/.zshrc
    $ echo 'export GOPATH=$HOME/Project' >> ~/.zshrc
    $ echo 'export PATH=$PATH:$GOPATH/bin' >> ~/.zshrc
    
  5. 端末を再起動する
  6. Golangをインストールする
  7. $ goenv install 1.15.3
    
  8. デフォルトに設定する
  9. $ goenv global 1.15.3
    
  10. 端末を再起動する

Golangのツールをインストールする

  1. ghq (GOPATH管理の為のツール)をインストール
    • Homebrew (Mac)
    • $ brew install ghq
      
    • Linux
    • $ go get github.com/x-motemen/ghq
      
  2. ghqの設定
  3. $ git config --global ghq.root $GOPATH/src
    
  4. peco (リポジトリ間の移動を楽にするツール)をインストール
    • Homebrew (Mac)
    • $ brew install peco
      
    • Linux
    • pecoのリリースページに行って最新版をダウンロードしてパスの通ってるところに配置する
      $ wget -O /tmp/peco.tar.gz https://github.com/peco/peco/releases/download/v0.5.8/peco_linux_amd64.tar.gz
      $ tar xzvf /tmp/peco.tar.gz -C /tmp
      $ sudo mv /tmp/peco_linux_amd64/peco /usr/local/bin/peco
      
  5. pecoの設定
  6. ctrl + ]で使えるようにする
    • zshの場合
    • ~/.zshrcに以下を追記
      # Setting for peco
      function peco-src () {
        local selected_dir=$(ghq list -p | peco --query "$LBUFFER")
        if [ -n "$selected_dir" ]; then
          BUFFER="cd ${selected_dir}"
          zle accept-line
        fi
        zle clear-screen
      }
      zle -N peco-src
      bindkey '^]' peco-src
      
    • bashの場合
    • ~/.bashrcに以下を追記
      # Setting for peco
      function peco-src() {
        local selected_file=$(ghq list --full-path | peco --query "$LBUFFER")
        if [ -n "$selected_file" ]; then
          if [ -t 1 ]; then
            echo ${selected_file}
            cd ${selected_file}
            pwd
          fi
        fi
      }
      
      bind -x '"\201": peco-src'
      bind '"\C-]":"\201\C-m"'
      
  7. 端末を再起動

Clone repository

git cloneの代わりにghq getを使うと規定のディレクトリに勝手にクローンしてくれる

$ git clone git@gitlab.inoue-lab:inoue-lab/icn-hash.git

なら

$ ghq get git@gitlab.inoue-lab:inoue-lab/icn-hash.git

とすると

$GOPATH/gitlab.inoue-lab/inoue-lab/icn-hashにクローンされる

リポジトリに移動するときは ctrl + ] を押すと検索画面がでるのでそこで選択すると移動できる。