go getでパッケージをインストールするにはどうすればよいですか?


132

githubからgopathにパッケージをインストールしたいのですが、これを試しました:

go get github.com:capotej/groupcache-db-experiment.git

リポジトリはこちらです。


4
あなたは、このコマンドでエラーが発生している場合は、削除.git行の最後に:go get github.com:capotej/groupcache-db-experiment
Benyamin Jafari

回答:


120

コマンドゴー

パッケージと依存関係をダウンロードしてインストールする

使用法:

go get [-d] [-f] [-t] [-u] [-v] [-fix] [-insecure] [build flags] [packages]

Getは、依存関係とともに、インポートパスで指定されたパッケージをダウンロードします。次に、「go install」のように、指定されたパッケージをインストールします。

-dフラグは、パッケージのダウンロード後に停止するように指示します。つまり、パッケージをインストールしないようにgetに指示します。

-fフラグは、-uが設定されている場合にのみ有効であり、インポートパスによって暗黙的に指定されたソース管理リポジトリから各パッケージがチェックアウトされていることをget -uが確認しないようにします。これは、ソースがオリジナルのローカルフォークである場合に役立ちます。

-fixフラグは、依存関係を解決したりコードをビルドしたりする前に、ダウンロードしたパッケージに対して修正ツールを実行するように指示します。

-insecureフラグを指定すると、HTTPなどの安全でないスキームを使用して、リポジトリーからのフェッチとカスタムドメインの解決が可能になります。注意して使用してください。

-tフラグは、指定されたパッケージのテストをビルドするために必要なパッケージもダウンロードするように指示します。

-uフラグは、ネットワークを使用して、指定されたパッケージとその依存関係を更新するように指示します。デフォルトでは、getはネットワークを使用して欠落しているパッケージをチェックアウトしますが、既存のパッケージの更新を探すためには使用しません。

-vフラグは、詳細な進行状況とデバッグ出力を有効にします。

Getは、インストールを制御するためのビルドフラグも受け入れます。「go help build」を参照してください。

新しいパッケージをチェックアウトすると、getはターゲットディレクトリGOPATH / src /を作成します。GOPATHに複数のエントリが含まれている場合、getは最初のエントリを使用します。詳細については、「go help gopath」を参照してください。

パッケージをチェックアウトまたは更新するとき、getはローカルにインストールされたバージョンのGoと一致するブランチまたはタグを探します。最も重要なルールは、ローカルインストールがバージョン「go1」を実行している場合、getが「go1」という名前のブランチまたはタグを検索することです。そのようなバージョンが存在しない場合は、パッケージのデフォルトのブランチを取得します。

go getがGitリポジトリをチェックアウトまたは更新すると、リポジトリによって参照されるすべてのgitサブモジュールも更新されます。

Getは、ベンダーディレクトリに格納されているコードをチェックアウトまたは更新しません。

パッケージの指定の詳細については、「go help packages」を参照してください。

「go get」がダウンロードするソースコードを見つける方法の詳細については、「go help importpath」を参照してください。

このテキストでは、GOPATHを使用してソースコードと依存関係を管理するときのgetの動作について説明します。代わりにgoコマンドがモジュール対応モードで実行されている場合、「go help get」と同様に、getのフラグとエフェクトの詳細が変更されます。「go help modules」および「go help module-get」を参照してください。

参照:ビルド​​、インストール、クリーンアップ。


たとえば、詳細な出力を表示すると、

$ go get -v github.com/capotej/groupcache-db-experiment/...
github.com/capotej/groupcache-db-experiment (download)
github.com/golang/groupcache (download)
github.com/golang/protobuf (download)
github.com/capotej/groupcache-db-experiment/api
github.com/capotej/groupcache-db-experiment/client
github.com/capotej/groupcache-db-experiment/slowdb
github.com/golang/groupcache/consistenthash
github.com/golang/protobuf/proto
github.com/golang/groupcache/lru
github.com/capotej/groupcache-db-experiment/dbserver
github.com/capotej/groupcache-db-experiment/cli
github.com/golang/groupcache/singleflight
github.com/golang/groupcache/groupcachepb
github.com/golang/groupcache
github.com/capotej/groupcache-db-experiment/frontend
$ 

17
これが誰かを助ける場合、私の問題の解決策(package github.com/coreos/go-iptables.git: invalid version control suffix in github.com/ path)は.gitGithub URLからサフィックスを削除することでした。
エクスカリバー2017年

6
何をし-vますか?
ゆう

3
@yuyangJian冗長な出力を意味します。
omrsin

3
どのように愛-vコマンドはそのリストの中で参照されていませんが笑FML ...確かにそれは意味冗長カントー
アレクサンダー・ミルズ

2
一度使用したら、どのように実行しますgo getか?
acjay 2018年

75

まず、GOPATHが必要です

$GOPATHその環境変数で指定したフォルダ(またはフォルダのセット)です。これは$GOROOTGoがインストールされているディレクトリではないことに注意してください。

export GOPATH=$HOME/gocode
export PATH=$PATH:$GOPATH/bin

~/gocodeコンピューターのパスを使用して、アプリケーションのソースとその依存関係を保存しました。GOPATHディレクトリには、そのパッケージのバイナリを格納します。

次に、環境を確認します

あなたのシステムが持っている必要があります$GOPATH$GOROOT、以下の、私のEnvです。

GOARCH="amd64"
GOBIN=""
GOCHAR="6"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/elpsstu/gocode"
GORACE=""
GOROOT="/home/pravin/go"
GOTOOLDIR="/home/pravin/go/pkg/tool/linux_amd64"
CC="gcc"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0"
CXX="g++"
CGO_ENABLED="1"

次に、goパッケージのダウンロードを実行します。

go get [-d] [-f] [-fix] [-t] [-u] [build flags] [packages]

インポートパスで指定されたパッケージとその依存関係をダウンロードしてインストールします。詳細については、あなたが見ることができ、ここで


1
私の囲碁環境はすでに大丈夫ですが、私はのルールに精通していないgo getのでgithub.com:capotej/groupcache-db-experiment.git、違法ではありません。
ロジャー

2
@peterSOが言ったように、get -v github.com/capotej/groupcache-db-experiment / ...に行ってみてください
Pravin Mishra

1
Go v1.8以降、GOPATH設定され$HOME/goていない場合のデフォルトはです。ソース12
Manavalan Gajapathy
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.