ターミナルがダサいとモテない。gobrewからgvmに変えたの巻

ターミナルがダサいとモテない。gobrewからgvmに変えたの巻

Photo by Maarten Scheel on Unsplash

Changed the Go version manager from gobrew to gvm.

恵比寿でIT企業をやっているとモテると聞いて創業しましたが早いことありがたいことに10年目に突入した長谷川です。

まだモテる成果は出ていません、、、これからです!(もうめんどくさいのでカウントやめました😆)

gobrewを使ってましたが、コンパイルエラーが出てどうにもこうにも辛いのでgvmに変えました😂

gobrewの記事は以下

ターミナルがダサいとモテない。gobrewでgoのversion管理。goenvを廃止するぞ編

goenvをやめたい。anyenv依存をやめたい。

medium.com

gvmはこちら

GitHub - moovweb/gvm: Go Version Manager

Go Version Manager. Contribute to moovweb/gvm development by creating an account on GitHub.

github.com

Requirementでbisonが必要みたいです。

GitHub - moovweb/gvm: Go Version Manager

Go Version Manager. Contribute to moovweb/gvm development by creating an account on GitHub.

github.com

ここでも紹介があるようにbisonをInstallしてください。

Plain text
sudo apt-get install bison

macOSでもbrewにあります。

Plain text
brew search bison
brew install bison

で早速、Installなのですがめっちゃ簡単です。

Plain text
bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)

これで入ります。

ただし読み込まれていないため以下を実行します。

Plain text
source ${HOME}/.gvm/scripts/gvm

こちらは.bashrc/.zshrcなどShellに組み込んでおいた方が良いです。

Usage

まずは実行してみます。

Plain text
> gvm
Usage: gvm [command]

Description:
  GVM is the Go Version Manager

Commands:
  version    - print the gvm version number
  get        - gets the latest code (for debugging)
  use        - select a go version to use (--default to set permanently)
  diff       - view changes to Go root
  help       - display this usage text
  implode    - completely remove gvm
  install    - install go versions
  uninstall  - uninstall go versions
  cross      - install go cross compilers
  linkthis   - link this directory into GOPATH
  list       - list installed go versions
  listall    - list available versions
  alias      - manage go version aliases
  pkgset     - manage go packages sets
  pkgenv     - edit the environment for a package set
  applymod   - apply the go version in go.mod

gvm listall

listallでAvailableなgo versionの一覧を出力できます。

Plain text
gvm listall

~~ 省略 ~~
   go1.23.2
   go1.23.3
   go1.23.4
   go1.24rc1
   release.r56
   release.r57
   release.r58
~~ 省略 ~~

こんな感じで最新板が取れるかと・・・

Plain text
gvm listall | sed -e 's/^ *//g' | grep -v rc |  grep ^go | tail -1

go1.23.4

gvm install

installにはいくつかのオプションがあるので事前に確認しておいてください。

Plain text
gvm install --help
Invalid version: --help
Usage: gvm install [version] [options]
    -s,  --source=SOURCE      Install Go from specified source.
    -n,  --name=NAME          Override the default name for this version.
    -pb, --with-protobuf      Install Go protocol buffers.
    -b,  --with-build-tools   Install package build tools.
    -B,  --binary             Only install from binary.
         --prefer-binary      Attempt a binary install, falling back to source.
    -h,  --help               Display this message.

それでは実際にinstall

Plain text
go_version=$(gvm listall | sed -e 's/^ *//g' | grep -v rc |  grep ^go | tail -1)
gvm_options=(--with-protobuf --with-build-tools --prefer-binary)
if command -v gvm &> /dev/null; then
  gvm install ${go_version} ${gvm_options[@]}
  gvm use ${go_version}
  gvm list
fi

Optionは適当に選んでください。

gvm useでgvmで利用するgoのversionを指定できます。

gvm listはxxenvでいうところのsub-command versionsと同じ挙動で、Installされているgo versionの一覧とそのデフォルトで利用するgo versionの指定の状態を確認するコマンドになっています。

Plain text
gvm list

gvm gos (installed)

=> go1.23.4
   system

自分の場合は、go_versionに最新のgo version番号をセットし
環境変数でinstall ${go_version}したものを、そのままuse ${go_version}しているので上記のようになっています。

Plain text
which go
/Users/yusukeh/.gvm/gos/go1.23.4/bin/go

使えそうですね

go install

lazygitを入れてみましょう。

Plain text
go install github.com/jesseduffield/lazygit@latest

自分の環境では無事lazygitがInstallされました。

Plain text
which lazygit
/Users/yusukeh/.gvm/pkgsets/go1.23.4/global/bin/lazygit

自分はGolangを書くわけじゃないですが、ちょっと新しいModernなShell Environmentを構成するためにgoの環境をセットアップすることは必須🤣

とくにlazygitがないと・・・めんどくさくてやってられません😅

goってrustでいうcargo backupやpythonでいうところのpip freezeなものが存在しないけど、みなさんどうやってるんですかね?🤔

自分はgo_installなるテキストファイルを保存して、マニュアルで管理・・・

Plain text
github.com/Gelio/go-global-update@latest
github.com/tomwright/dasel/v2/cmd/dasel@latest
github.com/jesseduffield/lazygit@latest
github.com/jesseduffield/lazydocker@latest
github.com/jorgerojas26/lazysql@latest
github.com/kndndrj/nvim-dbee/dbee@latest
github.com/dundee/gdu/v5/cmd/gdu@latest
github.com/projectdiscovery/pdtm/cmd/pdtm@latest
github.com/mah0x211/lenv@latest
github.com/charmbracelet/gum@latest
github.com/charmbracelet/glow@latest
github.com/mingrammer/flog@latest
github.com/muesli/duf@latest
github.com/rs/curlie@latest
github.com/mr-karan/doggo/cmd/doggo@latest
github.com/xo/usql@latest
github.com/gohugoio/hugo@latest
github.com/k1LoW/runn/cmd/runn@latest
github.com/xo/xo@latest
......
Plain text
for g in $(cat [go_install] | grep -v ^#)
do
  go install ${g}
done

以上gvmでした。

ターミナル環境について他の記事も書いているので、よろしければこちらもご覧ください!
『ターミナルがダサいとモテない』シリーズ一覧

転載:ターミナルがダサいとモテない。gobrewからgvmに変えたの巻

この記事は Medium(@yusuke_h) からの転載です。