「go get」が使えない!
自分で作ったテキストの色付けなどを行うツール https://github.com/x-color/mkr をGitHubで公開した後、インストールのチェックをするために、いつも通り以下のコマンドを叩いた。
$ go get -u github.com/x-color/mkr
そしたら...
go: cannot find main module; see 'go help modules'
いつもならインストールが開始したはずなのに、エラーが帰ってきてしまった...
原因
エラーメッセージを見るとバージョン1.11から追加されてた「Modules」関連の影響っぽい
ってことで、ドキュメントを軽く読んでみると
Day-to-day adding, removing, upgrading, and downgrading of dependencies should be done using 'go get', which will automatically update the go.mod file.
「「go get」は、依存関係にあるパッケージの追加、削除、アップグレードやダウングレードを行う」って感じのことが書いてあるみたい。
「go get」の仕様が変わってたのか..確かに、開発中にパッケージの管理で使ってたな..と振り返りつつ、じゃあツールのインストールの手段はどうなってるんだと調査続行。
解決策
ドキュメント読むより、実際に有名なGo言語製のツールはどうしてるのか見たほうが早そうだと「Hugo」のインストール方法を読んでみることに。
そしたら、このような感じになっていた。
$ git clone https://github.com/gohugoio/hugo.git
$ cd hugo
$ go install
以前の「go get」が内部で行っていたgit clone
とgo install
を自分で行うようになっていた。
この方法をGo言語製の自作ツールのインストールで試してみると
$ git clone https://github.com/x-color/mkr.git
$ cd mkr
$ go install
無事にインストールすることができた。
まとめ
Go言語のバージョン1.11で、Go言語製のツールをインストールする際には、
$ go get -u github.com/XXX/xxx
ではなく
$ git clone https://github.com/XXX/xxx
$ cd xxx
$ go install
でできる!