0
Help us understand the problem. What are the problem?

posted at

updated at

github.com/gin-gonic/gin がインストールできない?

なにが発生した?

Go言語のWebフレームワーク Gin が気になったので、Hello,World!的なものを作ろうとした。
その際に、

> go install github.com/gin-gonic/gin@latest

を実行したが、go buildでパッケージが見つからないエラーが発生した。

この時の環境

Microsoft Windows [Version 10.0.19044.1766]
(c) Microsoft Corporation. All rights reserved.

C:\Users\7280ayubihs>go version
go version go1.18.3 windows/amd64

解決の備忘録

go installの実行後に調べてみると、$GOPATH/pkg/modにGinが配置されており、go build実行時に$GOPATH/pkg/modにパスが通っていないので、エラーになったようです。

で、この$GOPATH/pkg/modは Go modules が有効になっている場合に、ダウンロードされたパッケージが配置される場所らしい。Go modulesは、Go1.11バージョン以降追加されたモジュール管理機能で、GO111MODULE環境変数をonにすることで利用できるようになるとのこと。
なお、GO111MODULE環境変数の設定値は、次の値があるようです。

内容
on モジュール対応モードで動作
off GOPATHモードで動作
auto $GOPATH/src 以下のディレクトリに配置され go.mod ファイルを含まないパッケージは GOPATH モードで,それ以外はモジュール対応モードで動作する

GO111MODULE環境変数を確認すると、未指定だったので、次のコマンドでOnにしました。

> go env -w GO111MODULE=on

Go modulesは、go modコマンドで初期化して、go.mod と go.sum を生成する必要があるので、
プロジェクトのカレントディレクトリに移動して、次のコマンドを実行した。

> go mod init <project-name>

実行すると、無事、go.mod と go.sum が生成されていました。この2つのファイルはそれぞれ、次のような役割があるようです。
go.sum は .gitignoreで除外の指定をした方がよさそうですね。

ファイル 役割
go.mod モジュールの依存関係が記述されているファイル
go.sum 依存モジュールのチェックサムを管理しているファイル

初期化が完了したので、改めて、github.com/gin-gonic/ginをインストールします。
go installではなく、go getコマンドでインストールです。

> go get -u github.com/gin-gonic/gin

この後、go buildが無事完了し、Hello,World!的なものも動きました。

最後に

まずは、Hello,World!的なものが動いたので、良し!
ただ、go installgo getの違いとか、知るべきことは、まだまだ多いなと痛感した。

謝辞

以下の記事で勉強させていただきました。ありがとうございます。
https://qiita.com/Syoitu/items/f221b52231703cebe8ff
https://zenn.dev/spiegel/articles/20210223-go-module-aware-mode
https://zenn.dev/tennashi/articles/3b87a8d924bc9c43573e

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
0
Help us understand the problem. What are the problem?