web-dev-qa-db-ja.com

golangのモジュールキャッシュはどこにありますか?

Gomodulesを有効にしてgoプログラムをビルドすると、必要なパッケージがダウンロードされます。

しかし、$GOPATH/src/または$GOPATH/src/modでそれらを見つけることができません。

それらはどこに保存されますか?

export GO111MODULE=on
go mod init
go build main.go 
go: finding github.com/sirupsen/logrus v1.0.6
go: downloading github.com/sirupsen/logrus v1.0.6
...
17
christian

Go 1.11の場合、これらは

$GOPATH/pkg/mod
25
peterSO

Macos 10.13.6を使用しています。go1.11 darwin/AMD64を使用しており、echo $GOPATHは空です。

$HOME/go/pkg/modでモジュールを見つけました

2
Luke Bayes

モジュールキャッシュは$GOPATH/pkg/modに保存されます。$HOME/go/pkg/modが設定されていない場合は$GOPATHに保存されます。

:一般に、モジュールキャッシュは読み取り専用であり、不変のキャッシュになることを意図しています。そのため、ここで何かを編集したり、キャッシュ内からgoコマンドを実行したりしないでください。

モジュールキャッシュには、Zipファイル、展開されたモジュールソースコード、およびVCSキャッシュ(プロキシを使用しない場合)が含まれます。キャッシュには、多くの場合、単一の依存関係の複数のバージョンが含まれます。

モジュールキャッシュ内の依存関係のコードを調べたい場合、ショートカットの1つとして、次の方法でcdを使用して、展開された依存関係の場所に直接移動できます。

cd $(go list -f '{{.Dir}}' -m github.com/foo/bar)

go list に、モジュールキャッシュ内のモジュールgithub.com/foo/barのディレクトリの場所を報告するよう要求します。デフォルトは、現在のモジュールで現在使用しているバージョンです。

キャッシュが不変であることを意図している場合、関連する質問は、依存関係をどのように編集するかです(たとえば、デバッグログを追加する場合、または依存関係のアップストリーム修正を送信する準備中)。この時点での一般的な解決策は、依存関係の変更可能なコピーを作成する gohack を使用することです(デフォルトでは$HOME/gohackですが、場所は$GOHACK変数によって制御されます)。 gohackは、現在のgo.modファイルにも、その変更可能なコピーを指す replace ディレクティブを設定します。

0
typical182