Go製のツールを使うときはパスを通す必要がある

少し前の話だが、Golang.tokyoさんの同人誌『文Go』を写経していて詰まった部分があったのでメモしておく。

 

budougumi0617.github.io

techbookfest.org

 

 

[sql-migrateとは]

github.com


sql-migrateはGoで書かれたマイグレーションツールである。

ここでいうマイグレーションとは、sqlという名前からもわかる通り、データベース定義のバージョン管理を指す*1。同類のツールとして有名どころはRuby on RailsのActive Recordや、Flywayなどがある。

railsguides.jp

flywaydb.org

qiita.com

 

[インストール、いざ実行……あれ?]

利用しているGoのバージョンは以下の通り。

$ go version

go version go1.13 darwin/amd64

MacはMojaveの10.14.6を利用している)

 

「文Go」に記載通り、go get -u github.com/rubenv/sql-migrate/sql-migrateとコマンドを実行して、sql-migrateをインストールする。

$ go get -u github.com/rubenv/sql-migrate/sql-migrate

go: creating new go.mod: module github.com/kdnakt/go-sql-sample

go: finding github.com/rubenv/sql-migrate/sql-migrate latest

go: finding github.com/rubenv/sql-migrate latest

go: downloading github.com/rubenv/sql-migrate v0.0.0-20190902133344-8926f37f0bc1

go: extracting github.com/rubenv/sql-migrate v0.0.0-20190902133344-8926f37f0bc1

(後略)

 

よし、インストールできた!と思ってヘルプを見ようとコマンドを実行しようとするも、コマンドが見つからずエラーに。

$ sql-migrate --help

bash: sql-migrate: command not found

 

Google先生に聞いてみると、パスを通せと言われた。なるほど。

stackoverflow.com

 

[パスを通す]

とりあえず指定された通りにパスを通す。

~/.bash_profileファイルを開き、以下の行を追記する。

export PATH="$HOME/go/bin:$PATH"

 

設定を反映させるために新しくターミナルを開き*2、改めてコマンドを実行してみる。

$ sql-migrate --help

Usage: sql-migrate [--version] [--help] <command> [<args>]



Available commands are:

    down      Undo a database migration

    new       Create a new migration

    redo      Reapply the last migration

    skip      Sets the database level to the most recent version available, without running the migrations

    status    Show migration status

    up        Migrates the database to the most recent version available

 

今度は無事にヘルプを表示することができた。

 

しかしパスぐらいGo言語を入れた時に自動で通してくれればいいのに、と思ったらそれらしいissueがGitHubに上がっていた。

github.com

Goをインストールしたからといってユーザープロファイルを変更すべきではないという意見が出ていたし、Goで開発するエンジニア向けの説明として以下のようにパスを設定せよとも書かれている。なるほど……。

export PATH=$PATH:$(go env GOPATH)/bin

golang.org

 

Tour of Goをやって以降あまりちゃんと勉強してないのがバレてしまった。GoはEffective Goとか他にもドキュメントが色々あるので、年末年始にでもじっくり読んでみようかな。

 

[まとめ]

  • Goをインストールしたらまずは~/go/binを環境変数PATHに追加しておく
    • export PATH=$PATH:$(go env GOPATH)/bin
    • export PATH=$PATH:~/go/bin

 

それでは、素敵なGoライフを!

*1:他にも、別のデータベースエンジンへの移行とか、システム全体の移行とかを指す場合もある。

*2:sourceコマンドを知らないわけじゃないんです……。