1. ホーム
  2. go

[解決済み] go install` は `go.mod` にレコードを追加します。

2022-03-01 20:35:36

質問

を使用してバイナリをインストールする際に、Go モジュールがどのように機能するかについて、少し混乱しています。 go install .

をインストールしようとしたのですが、( https://github.com/joho/godotenv ) バイナリを実行することで go install github.com/joho/godotenv/cmd/godotenv でレコードを追加していることがわかりました。 go.mod . このパッケージはコードで使用していないので、迷っています。 go mod tidy は削除されます(コードにないので)。

どなたか、goモジュールの期待される動作なのか、説明していただけませんか? 次に、どのようにすればこれを go.mod バイナリをインストールして実行するだけでいいので

ありがとうございます。

Goバージョン。 go version go1.13.4 darwin/amd64

解決方法は?

コマンドgo。go.modファイルです。

<ブロッククオート

goコマンドはモジュールグラフを使うたびにgo.modを自動的に更新し、go.modが常に現実を正確に反映し、正しくフォーマットされていることを確認します。

goツールは go.mod は、ビルドを実行する際に依存関係が不正確であることを検出すると、自動的に

をインストールすると github.com/joho/godotenv/cmd/godotenv モジュールからインストールする場合、少なくとも当該パッケージがビルド/インストールされている必要があります (そして、その依存関係も過渡的に存在します)。

を安全に実行することができます。 go mod tidy を使用してこの依存関係の記録を元に戻すことができます。

一般に、go ツールによる go.mod ファイルでは -mod=readonly フラグがありますが、これは失敗です。 go install ( "パッケージをロードできません: パッケージ xxx: -mod=readonly" によってインポート検索が無効になっています。 ). 詳しくはこちらをご覧ください。 Go Wikiです。Go モジュール。go.mod が更新されるタイミングと、go ツールが依存関係を満たすためにネットワークを使用するタイミングを制御できますか?

また、これを避けたい場合は、ツールのビルド/インストールをモジュールの外で行ってください。この場合、ダミーモジュールを使用することができます。