🙃

go installしたがcommand not found。

2022/08/26に公開

凡ミス備忘録

go製マイグレーションツールをインストールしたが、コマンドが呼び出せなかったので備忘録として残す。恥ずかしながら、ただの凡ミスです。

ちなみに使いたかったのは、以下のツールのmysqldefコマンドです。名前の通りMySQL用のコマンドですが、PostgreSQLも提供されていてそちらはpsqldef
https://k0kubun.hatenablog.com/entry/2018/08/25/114455
https://github.com/k0kubun/sqldef

まず状況を確認。

console
$ go install github.com/k0kubun/sqldef/cmd/mysqldef@latest

$ mysqldef --help
zsh: command not found: mysqldef

え?となり、すぐにググったが冷静に考えたらパスが通ってないか確認すれば調べる必要もなかった。。。

パスを確認して、パスを通す。

パスの確認の前に、ちゃんとインストールされているかどうかを確認しておく。

console
$ go env GOPATH
/Users/xxx/go

$ ls /Users/xxx/go/bin
go1.18		mysqldef <-いた!

GOBINを定義している場合はそのディレクトリにインストールされ、定義していなければ~/go/binにインストールされる。自分は定義していないので空で表示される。

$ go env GOBIN

https://twitter.com/mattn_jp/status/1562393880016068609?s=20&t=iVvBHeLKOBxqPL-8-UsDgw

インストールは完了している模様。
嫌な予感がしつつ、パスを確認。(grepで探すのが楽。)

console
$ echo $PATH 
/Users/xxx/.nodebrew/current/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/go/bin:/Library/Apple/usr/bin:/usr/local/go/bin

あ、やべ。。。ない。
ということでパス追加。

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

$ mysqldef --help
Usage:
  mysqldef [options] db_name

Application Options:
  -u, --user=user_name              MySQL user name (default: root)
  -p, --password=password           MySQL user password, overridden by $MYSQL_PWD
  -h, --host=host_name              Host to connect to the MySQL server (default: 127.0.0.1)
  -P, --port=port_num               Port used for the connection (default: 3306)
  -S, --socket=socket               The socket file to use for connection
      --password-prompt             Force MySQL user password prompt
      --enable-cleartext-plugin     Enable/disable the clear text authentication plugin
      --file=sql_file               Read schema SQL from the file, rather than stdin (default: -)
      --dry-run                     Don't run DDLs but just show them
      --export                      Just dump the current schema to stdout
      --skip-drop                   Skip destructive changes such as DROP
      --skip-view                   Skip managing views (temporary feature, to be removed later)
      --before-apply=               Execute the given string before applying the regular DDLs
      --config=                     YAML file to specify: target_tables
      --help                        Show this help
      --version                     Show this version

このままだとコンソール再起動した時にリセットされちゃうので、.zshrcなど各自環境のログインシェルの設定ファイルにexport PATH="$HOME/go/bin:$PATH"を突っ込んでおく。
仕上げに読ませて、完了。

console
$ source ~/.zshrc

go製ツールをインストールするのは初だったので、焦った。

参考ページ

https://selfnote.work/20210513/programming/go-error-command-not-found/

go installについて(※利用バージョンで仕様が違う可能性あるので注意)
https://future-architect.github.io/articles/20210209/

Discussion