まえがき
Goでプログラミングをしてみたいと思い、環境整備したときモジュールのインストールにかなり手間取った。
その時の忘備録。
GitHub以外のリポジトリからインストールするときはまた話が変わってくるので注意。
環境
OS:Windows 10(64bit)
プロセッサ:AMD Ryzen 5 3450U with Radeon Vega Mobile Gfx 2.10 GHz
RAM:16 GB
Goのバージョン:go1.19.3 windows/amd64
結論
こうすればOK。
go install github.com/<リポジトリのパス>@HEAD
経緯
Teftifyをインストールしたいと思い、公式のインストール方法を見てみた。
go get github.com/stretchr/testify
なんだこれなら簡単じゃないか、と思いきや、以下のエラーが出てしまった。
> go get github.com/stretchr/testify
go: go.mod file not found in current directory or any parent directory.
'go get' is no longer supported outside a module.
To build and install a command, use 'go install' with a version,
like 'go install example.com/cmd@latest'
For more information, see https://golang.org/doc/go-get-install-deprecation
or run 'go help get' or 'go help install'.
メッセージを見てみると、どうやら「go get」はこの書き方をもうサポートしていないらしい。
代わりに「go install example.com/cmd@latest」としろ、と書いてある。
つまり、「go install github.com/stretchr/testify@lastest」と書けば良さそうか。
> go install github.com/stretchr/testify@lastest
go: github.com/stretchr/testify@lastest: github.com/stretchr/testify@lastest: invalid version: unknown revision lastest
「lastestというリビジョンは存在しない」と返ってきた。
調べてみると、GitではlastestではなくHEADらしい。(実は人生で一度もGitを使ったことがなかったので分からなかった。)
lasestをHEADにしてみたところ、通った。
> go install github.com/stretchr/testify@HEAD
package github.com/stretchr/testify is not a main package
インストールもできているようだ。
> ls
ディレクトリ: C:\Users\XXXXXXX\go\pkg\mod\github.com\stretchr\testify@v1.8.2-0.20221102114659-1333b5d3bda8
Mode LastWriteTime Length Name
---- ------------- ------ ----
d-r--- 2022/12/09 12:33 .github
d-r--- 2022/12/09 12:33 assert
d-r--- 2022/12/09 12:33 http
d-r--- 2022/12/09 12:33 mock
d-r--- 2022/12/09 12:33 require
d-r--- 2022/12/09 12:33 suite
-ar--- 2022/12/09 12:33 278 .ci.gofmt.sh
-ar--- 2022/12/09 12:33 455 .ci.gogenerate.sh
-ar--- 2022/12/09 12:33 34 .ci.govet.sh
-ar--- 2022/12/09 12:33 263 .gitignore
-ar--- 2022/12/09 12:33 2566 CONTRIBUTING.md
-ar--- 2022/12/09 12:33 1075 doc.go
-ar--- 2022/12/09 12:33 188 go.mod
-ar--- 2022/12/09 12:33 1425 go.sum
-ar--- 2022/12/09 12:33 1103 LICENSE
-ar--- 2022/12/09 12:33 186 MAINTAINERS.md
-ar--- 2022/12/09 12:33 186 package_test.go
-ar--- 2022/12/09 12:33 11667 README.md
あとがき
複数のツールが絡んだり、バージョン更新で変更が入ったりすると、こういうところで苦労させられるなぁ、と思う。
一番助かるのは公式サイトの情報が更新されることなのだけども。