Wie kann ich ein Paket mit go get installieren?

132

Ich möchte Pakete von Github zu meinem Gopath installieren. Ich habe Folgendes versucht:

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

Das Repository ist hier .

Roger
quelle
4
Wenn Sie einen Fehler mit diesem Befehl haben, entfernen Sie .gitam Ende der Zeile:go get github.com:capotej/groupcache-db-experiment
Benyamin Jafari

Antworten:

120

Befehl gehen

Laden Sie Pakete und Abhängigkeiten herunter und installieren Sie sie

Verwendung:

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

Holen Sie sich Downloads der Pakete, die durch die Importpfade benannt sind, zusammen mit ihren Abhängigkeiten. Anschließend werden die genannten Pakete installiert, z. B. "go install".

Das Flag -d weist an, nach dem Herunterladen der Pakete anzuhalten. Das heißt, es weist get an, die Pakete nicht zu installieren.

Das Flag -f, das nur gültig ist, wenn -u gesetzt ist, zwingt get -u, nicht zu überprüfen, ob jedes Paket aus dem durch seinen Importpfad implizierten Quellcodeverwaltungs-Repository ausgecheckt wurde. Dies kann nützlich sein, wenn die Quelle eine lokale Verzweigung des Originals ist.

Das Flag -fix weist an, das Fix-Tool für die heruntergeladenen Pakete auszuführen, bevor Abhängigkeiten aufgelöst oder der Code erstellt werden.

Das Flag -insecure ermöglicht das Abrufen aus Repositorys und das Auflösen benutzerdefinierter Domänen mithilfe unsicherer Schemata wie HTTP. Mit Vorsicht verwenden.

Das Flag -t weist an, auch die Pakete herunterzuladen, die zum Erstellen der Tests für die angegebenen Pakete erforderlich sind.

Das Flag -u weist an, das Netzwerk zu verwenden, um die genannten Pakete und ihre Abhängigkeiten zu aktualisieren. Standardmäßig verwendet get das Netzwerk, um fehlende Pakete auszuchecken, verwendet es jedoch nicht, um nach Updates für vorhandene Pakete zu suchen.

Das Flag -v aktiviert den ausführlichen Fortschritt und die Debug-Ausgabe.

Get akzeptiert auch Build-Flags, um die Installation zu steuern. Siehe "Hilfe beim Bauen".

Beim Auschecken eines neuen Pakets erstellt get das Zielverzeichnis GOPATH / src /. Wenn der GOPATH mehrere Einträge enthält, verwendet get den ersten. Weitere Informationen finden Sie unter: "Geh und hilf Gopath".

Suchen Sie beim Auschecken oder Aktualisieren eines Pakets nach einem Zweig oder Tag, der der lokal installierten Version von Go entspricht. Die wichtigste Regel lautet: Wenn auf der lokalen Installation die Version "go1" ausgeführt wird, wird nach einem Zweig oder Tag mit dem Namen "go1" gesucht. Wenn keine solche Version vorhanden ist, wird der Standardzweig des Pakets abgerufen.

Wenn Sie ein Git-Repository auschecken oder aktualisieren, werden auch alle Git-Submodule aktualisiert, auf die das Repository verweist.

Lassen Sie sich niemals Code auschecken oder aktualisieren, der in Herstellerverzeichnissen gespeichert ist.

Weitere Informationen zum Festlegen von Paketen finden Sie unter "Hilfspakete".

Weitere Informationen darüber, wie 'go get' den herunterzuladenden Quellcode findet, finden Sie unter 'go help importpath'.

Dieser Text beschreibt das Verhalten von get bei der Verwendung von GOPATH zum Verwalten von Quellcode und Abhängigkeiten. Wenn stattdessen der Befehl go im modulsensitiven Modus ausgeführt wird, ändern sich die Details der Flags und Effekte von get, ebenso wie 'go help get'. Siehe 'go help modules' und 'go help module-get'.

Siehe auch: Bauen, installieren, reinigen.


Beispiel: Ausführliche Ausgabe anzeigen,

$ 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
$ 
peterSO
quelle
17
Wenn dies jemandem hilft, bestand die Lösung für mein Problem ( package github.com/coreos/go-iptables.git: invalid version control suffix in github.com/ path) darin, das .gitSuffix aus der Github-URL zu entfernen .
Excalibur
6
was macht -vdas
Yu Yang Jian
3
@yuyangJian bedeutet ausführliche Ausgabe.
Omrsin
3
Liebe , wie der -vBefehl in dieser Liste verwiesen wird , nicht lol fml ... sicherlich bedeutet es ausführliche tho
Alexander Mills
2
Wie führen Sie es aus, wenn Sie es verwendet haben go get?
Acjay
75

Erstens brauchen wir GOPATH

Dies $GOPATHist ein Ordner (oder eine Gruppe von Ordnern), der durch seine Umgebungsvariable angegeben wird. Wir müssen beachten, dass dies nicht das $GOROOTVerzeichnis ist, in dem Go installiert ist.

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

Wir haben den ~/gocodePfad in unserem Computer verwendet, um die Quelle unserer Anwendung und ihre Abhängigkeiten zu speichern. Das GOPATHVerzeichnis speichert auch die Binärdateien ihrer Pakete.

Aktivieren Sie dann Go env

Ihr System muss haben $GOPATHund $GOROOTunten ist mein 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"

Jetzt führen Sie das Download-Go-Paket aus:

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

Holen Sie sich Downloads und installieren Sie die durch die Importpfade benannten Pakete sowie deren Abhängigkeiten. Weitere Details finden Sie hier .

Pravin Mishra
quelle
1
Meine Go-Umgebung war bereits in Ordnung, aber ich bin nicht mit den Regeln vertraut go get, also github.com:capotej/groupcache-db-experiment.gitist es nicht illegal, wie ist der legale Weg?
Roger
2
Versuchen Sie, -v github.com/capotej/groupcache-db-experiment / ... zu holen, wie @peterSO sagte
Pravin Mishra
1
Beginnend mit Go v1.8 wird GOPATHstandardmäßig verwendet, $HOME/gowenn nicht festgelegt. Quelle 1 , 2 .
Manavalan Gajapathy