Jak mogę zainstalować pakiet za pomocą go get?

133

Chcę zainstalować pakiety z github na mój gopath, próbowałem tego:

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

repozytorium jest tutaj .

zrozumiałem
źródło
4
Jeśli masz błąd z tym poleceniem, usuń .gitna końcu wiersza:go get github.com:capotej/groupcache-db-experiment
Benyamin Jafari

Odpowiedzi:

121

Polecenie idź

Pobierz i zainstaluj pakiety i zależności

Stosowanie:

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

Pobierz pobiera pakiety nazwane przez ścieżki importu wraz z ich zależnościami. Następnie instaluje wymienione pakiety, na przykład „przejdź do instalacji”.

Flaga -d nakazuje zatrzymanie się po pobraniu pakietów; to znaczy, instruuje get, aby nie instalował pakietów.

Flaga -f, poprawna tylko wtedy, gdy ustawiona jest opcja -u, wymusza na get -u nieweryfikowanie, czy każdy pakiet został wyrejestrowany z repozytorium kontroli źródła, co wynika ze ścieżki importu. Może to być przydatne, jeśli źródło jest lokalnym rozwidleniem oryginału.

Flaga -fix instruuje get, aby uruchomić narzędzie naprawcze na pobranych pakietach przed rozwiązaniem zależności lub zbudowaniem kodu.

Flaga -insecure umożliwia pobieranie z repozytoriów i rozpoznawanie domen niestandardowych przy użyciu niezabezpieczonych schematów, takich jak HTTP. Używaj ostrożnie.

Flaga -t nakazuje pobranie również pakietów wymaganych do zbudowania testów dla określonych pakietów.

Flaga -u nakazuje używać sieci do aktualizowania nazwanych pakietów i ich zależności. Domyślnie get używa sieci do pobierania brakujących pakietów, ale nie używa jej do wyszukiwania aktualizacji istniejących pakietów.

Flaga -v włącza pełny postęp i wyjście debugowania.

Get akceptuje również flagi kompilacji do kontrolowania instalacji. Zobacz „idź, pomóż budować”.

Podczas pobierania nowego pakietu get tworzy katalog docelowy GOPATH / src /. Jeśli GOPATH zawiera wiele wpisów, get używa pierwszego. Aby uzyskać więcej informacji, zobacz: „idź na pomoc gopath”.

Podczas pobierania lub aktualizowania pakietu get szuka gałęzi lub tagu, który pasuje do lokalnie zainstalowanej wersji Go. Najważniejszą zasadą jest to, że jeśli lokalna instalacja działa w wersji „go1”, wyszukiwanie gałęzi lub tagu o nazwie „go1”. Jeśli taka wersja nie istnieje, pobiera domyślną gałąź pakietu.

Kiedy idź pobiera wyewidencjonowania lub aktualizuje repozytorium Git, aktualizuje również wszystkie podmoduły git, do których odwołuje się repozytorium.

Nigdy nie wypisuj ani nie aktualizuj kodu przechowywanego w katalogach dostawców.

Aby uzyskać więcej informacji na temat określania pakietów, zobacz „go help packages”.

Aby uzyskać więcej informacji na temat znajdowania kodu źródłowego do pobrania za pomocą polecenia „go get”, zobacz „go help importpath”.

Ten tekst opisuje zachowanie get podczas używania GOPATH do zarządzania kodem źródłowym i zależnościami. Jeśli zamiast tego polecenie go działa w trybie uwzględniającym moduły, zmieniają się szczegóły flag i efektów programu get, podobnie jak polecenie „go help get”. Zobacz „przejdź do modułów pomocy” i „przejdź do modułu pomocy - pobierz”.

Zobacz także: idź budować, instaluj, czyść.


Na przykład wyświetlając szczegółowe dane wyjściowe,

$ 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
źródło
17
Jeśli to komuś pomoże, rozwiązaniem mojego problemu ( package github.com/coreos/go-iptables.git: invalid version control suffix in github.com/ path) było usunięcie .gitsufiksu z adresu URL Github.
Excalibur
6
Co ma -vzrobić?
yu yang Jian
3
@yuyangJian oznacza szczegółowe dane wyjściowe.
omrsin
3
Miłość jak -vkomenda nie jest wymieniony w tym wykazie lol FML ... na pewno oznacza to gadatliwy tho
Alexander Mills
2
Jak go uruchomić po użyciu go get?
acjay
75

Po pierwsze, potrzebujemy GOPATH

To $GOPATHfolder (lub zestaw folderów) określony przez jego zmienną środowiskową. Musimy zauważyć, że to nie jest $GOROOTkatalog, w którym zainstalowano Go.

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

Użyliśmy ~/gocodeścieżki w naszym komputerze do przechowywania źródła naszej aplikacji i jej zależności. W GOPATHkatalogu będą również przechowywane pliki binarne ich pakietów.

Następnie zaznacz Go env

Twój system musi mieć, $GOPATHa $GOROOTponiżej mój 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"

Teraz uruchom pakiet download go:

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

Pobieranie i instalowanie pakietów nazwanych przez ścieżki importu wraz z ich zależnościami. Więcej szczegółów można znaleźć tutaj .

Pravin Mishra
źródło
1
moje środowisko go jest już w porządku, ale nie znam zasad go get, więc github.com:capotej/groupcache-db-experiment.gitnie jest nielegalne, jaka jest ścieżka prawna?
roger
2
Spróbuj go get -v github.com/capotej/groupcache-db-experiment / ... jak powiedział @peterSO
Pravin Mishra
1
Począwszy od Go v1.8, wartość GOPATHdomyślna to $HOME/gojeśli nie jest ustawiona. Źródło 1 , 2 .
Manavalan Gajapathy