Как я могу установить пакет с помощью go get?

134

Я хочу установить пакеты из github на свой путь, я пробовал это:

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

репозиторий здесь .

Роджер
источник
4
Если у вас есть ошибка с этой командой, удалите .gitв конце строки:go get github.com:capotej/groupcache-db-experiment
Беньямин Джафари

Ответы:

121

Команда идти

Скачайте и установите пакеты и зависимости

Использование:

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

Get загружает пакеты, названные путями импорта, вместе с их зависимостями. Затем он устанавливает названные пакеты, например go install.

Флаг -d дает указание остановиться после загрузки пакетов; то есть он дает указание не устанавливать пакеты.

Флаг -f, действительный только при установке -u, заставляет get -u не проверять, что каждый пакет был извлечен из репозитория системы управления версиями, что подразумевается его путем импорта. Это может быть полезно, если источник является локальной вилкой оригинала.

Флаг -fix дает команду запустить средство исправления для загруженных пакетов перед разрешением зависимостей или сборкой кода.

Флаг -insecure разрешает выборку из репозиториев и разрешение пользовательских доменов с использованием небезопасных схем, таких как HTTP. Используйте с осторожностью.

Флаг -t указывает, что нужно также загрузить пакеты, необходимые для создания тестов для указанных пакетов.

Флаг -u дает указание использовать сеть для обновления названных пакетов и их зависимостей. По умолчанию get использует сеть для проверки отсутствующих пакетов, но не использует ее для поиска обновлений для существующих пакетов.

Флаг -v включает подробный ход выполнения и вывод отладки.

Get также принимает флаги сборки для управления установкой. См. «Иди, помогите построить».

При извлечении нового пакета get создает целевой каталог GOPATH / src /. Если GOPATH содержит несколько записей, get использует первую. Для получения дополнительной информации см .: «иди, помогай гопату».

При извлечении или обновлении пакета get ищет ветку или тег, который соответствует локально установленной версии Go. Самым важным правилом является то, что если локальная установка работает под управлением версии «go1», поиск будет ветки или тега с именем «go1». Если такой версии не существует, он получает ветвь пакета по умолчанию.

Когда go get проверяет или обновляет репозиторий Git, он также обновляет любые подмодули git, на которые ссылается репозиторий.

Никогда не проверяйте и не обновляйте код, хранящийся в каталогах поставщиков.

Дополнительные сведения об указании пакетов см. В разделе «Пакеты справки go».

Для получения дополнительной информации о том, как «go get» находит исходный код для загрузки, см. «Go help importpath».

Этот текст описывает поведение get при использовании GOPATH для управления исходным кодом и зависимостями. Если вместо этого команда go выполняется в режиме с поддержкой модулей, детали флагов и эффектов get изменяются, как и go help get. См. Разделы 'go help modules' и 'go help module-get'.

См. Также: go build, go install, go clean.


Например, показывая подробный вывод,

$ 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
источник
17
Если это кому-то поможет, решение моей проблемы ( package github.com/coreos/go-iptables.git: invalid version control suffix in github.com/ path) заключалось в удалении .gitсуффикса из URL-адреса Github.
Excalibur
6
что -vделать?
Ю Ян Цзянь
3
@yuyangJian означает подробный вывод.
omrsin
3
любовь как -vкоманда не упоминается в этом списке лол FML ... конечно , это означает , многословен Тхо
Alexander Mills
2
Как запустить его после того, как вы его использовали go get?
acjay
75

Во-первых, нам нужен GOPATH

Это $GOPATHпапка (или набор папок), заданная ее переменной среды. Мы должны заметить, что это не $GOROOTкаталог, в который установлен Go.

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

Мы использовали ~/gocodeпуть на нашем компьютере для хранения исходного кода нашего приложения и его зависимостей. В GOPATHкаталоге также будут храниться двоичные файлы их пакетов.

Затем проверьте Go env

У вас должна быть система, $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"

Теперь вы запускаете пакет download go:

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

Получить загрузки и установить пакеты, названные путями импорта, вместе с их зависимостями. Подробности можно посмотреть здесь .

Правин Мишра
источник
1
Моя среда go уже в порядке, но я не знаком с правилами go get, так что github.com:capotej/groupcache-db-experiment.gitэто не незаконно, каков законный путь?
Роджер
2
Попробуйте пойти get -v github.com/capotej/groupcache-db-experiment / ... как сказал @peterSO
Правин Мишра
2
Начиная с Go v1.8, по GOPATHумолчанию, $HOME/goесли не установлено. Источник 1 , 2 .
Манавалан Гаджапати,