😸
Goのパッケージ管理をコマンド打って確認してみた
これだけわかればOK
- Goではライブラリやパッケージは「モジュール」と言うらしい
-
モジュールは大きく2つに分かれる
- 依存パッケージ(フレームワークのようなアプリ内で利用するモジュール)
- コマンドラインツール(CLIのコマンドで使えるようになるモジュール。「$GOPATH/bin」にあることが多い)
-
モジュールをインストールする場合は2種類
- 「Go get [URL]」(依存パッケージの場合。コマンドツールは後述)
個別にモジュールをダウンロードする(同時にgo.modに追記もされるので、開発時に新しくモジュールを追加したい場合はこっち) - 「Go mod download」
go.modというパッケージ管理ファイルからモジュールをまとめてダウンロードする(チームで開発している際の環境構築はこちらになりそう)
- 「Go get [URL]」(依存パッケージの場合。コマンドツールは後述)
Goでのモジュール管理ってどうやってやるの?
- 「Go Modules」というパッケージ管理システムが標準で組み込まれているので、パッケージ管理ソフトを入れる必要はない(ver1.11以降)
(JavaではMavenやGradleといったビルドツール、Reactではnpmやyarnといったパッケージ外部ソフトを使う必要があった)
管理するためのファイル(大事)
- 「go.mod」・・・モジュール名とバージョンが記載されている。(モジュール情報の管理)
- 「go.sum」・・・モジュールのチェックサムが記載(改ざん防止)
利用するディレクトリ(飛ばしても可)
- 「$GoPATH」・・・Goのモジュールが含まれるルートディレクトリ
確認・設定方法
設定方法は「export GoPATH=$(Go env GoPATH)」(Linuxの場合)
※wsl環境では終了すると環境変数がリセットされるので、以下永続化設定
「echo 'export GoPATH=$(Go env GoPATH)' >> ~/.bashrc」
※.bashrcはシェル起動時に1回、実行される。 - 「$GoPATH/pkg/mod」・・・インストールされたパッケージが入っているディレクトリ
- 「$GoPATH/bin」・・・実行可能なコマンドディレクトリ。(migrate -versionとか使える)
コマンド
- 「Go get [URL]」・・・依存パッケージモジュールをインストール(ついでにgo.modにモジュール情報が追記される)※これだけわかってれば大丈夫そう
- 「Go init GitHubのURL」・・・go.mod、go.sumファイルが作成される
- 「Go mod download」・・・go.mod、go.sumに記載された情報からライブラリをダウンロード
- 「Go mod tidy」・・・ソースコードの中で利用されているパッケージをスキャンし、利用しているパッケージのみgo.modに残す。(利用されていないものはgo.modから削除される。
- 「Go clean -modcache」・・・インストールされたパッケージを削除($GoPATH/modが削除される)
- 「Go install [URL]」・・・コマンドラインツールをインストール(リンターやデバッガーを追加する場合こっち)
Discussion
こんにちは。
go installは、Goで書かれたプログラムをビルドしてインストールするためのものです。CLIのインストールに使われることが多いですね。
開発において外部のパッケージをインポートして使えるようにしたいのであれば、go getで大丈夫です。
tenkoh様
ご指摘いただきありがとうございます!
ざっくりした理解で恐縮ですが、goのアプリ内で利用するものはgo get、アプリ外のCLIツールはgo installと理解をしました!
記事も修正いたしました。記事にコメントいただいたのは初めてなので嬉しかったです。
ありがとうございますm(_ _)m