Як я можу встановити пакет з go get?


133

Я хочу встановити пакети з github на мій gopath, я спробував це:

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

сховище тут .


4
Якщо у вас є помилка з цією командою, видаліть .gitв кінці рядка:go get github.com:capotej/groupcache-db-experiment
Бенямін Джафарі

Відповіді:


120

Команда йде

Завантажте та встановіть пакети та залежності

Використання:

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

Отримайте завантаження пакетів, названих шляхами імпорту, разом із їх залежностями. Потім він встановлює названі пакети, як-от "іти встановити".

Прапор -d прапор припиняє після завантаження пакетів; тобто вказує отримати не встановлювати пакунки.

Прапор -f, дійсний лише тоді, коли встановлено -u, змушує get -u не перевіряти, що кожен пакунок був перевірений із сховища керування джерелом, що має на увазі його імпортний шлях. Це може бути корисно, якщо джерело є локальною роздвою оригіналу.

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

Прапор-незахищеність дозволяє отримувати збір із сховищ та вирішувати власні домени за допомогою небезпечних схем, таких як HTTP. Використовуйте обережно.

Інструкція -t прапор також отримує завантаження пакетів, необхідних для складання тестів для зазначених пакетів.

Прапор -u дає інструкції використовувати мережу для оновлення названих пакетів та їх залежностей. За замовчуванням користуйтеся мережею, щоб перевірити відсутні пакети, але не використовуйте її для пошуку оновлень існуючих пакетів.

Прапор -v дозволяє докладно прогресувати та виводити налагодження.

Get також приймає прапори збірки для управління встановленням. Див. "Ідіть, допоможіть створити"

Перевіряючи новий пакет, get створює цільовий каталог GOPATH / src /. Якщо GOPATH містить кілька записів, використовуйте перший. Докладніші відомості див. У розділі "Іти довідкою gopath".

Перевіряючи або оновлюючи пакет, знайдіть гілку або тег, який відповідає локально встановленій версії Go. Найважливіше правило - якщо локальна установка працює з версією "go1", знайдіть пошук гілки або тегу з назвою "go1". Якщо такої версії не існує, вона отримує гілку за замовчуванням пакета.

Під час перевірки або оновлення сховища Git він також оновлює будь-які підмодулі git, на які посилається репозиторій.

Ніколи не перевіряйте та не оновлюйте код, що зберігається в каталогах постачальників.

Докладніше про вказівку пакетів див.

Щоб отримати докладнішу інформацію про те, як "go get" знаходить вихідний код для завантаження, перегляньте статтю "go help importpath".

Цей текст описує поведінку get при використанні GOPATH для управління вихідним кодом та залежностями. Якщо замість цього команда go працює в режимі, зрозумілому для модулів, деталі прапорів get і ефектів get змінюються, як і "go help 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) було видалення .gitсуфікса з URL-адреси Github.
Excalibur

6
що робить -v?
ю ян Цзянь

3
@yuyangJian це означає багатослівний вихід.
omrsin

3
люблю, як -vкоманда не вказується в цьому списку lol fml ... неодмінно це означає багатослівний Тхо
Олександр Міллс

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"

Тепер ви запускаєте пакет завантаження go:

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

Отримайте завантаження та встановлення пакетів, названих шляхами імпорту, разом із їх залежностями. Детальніше ви можете подивитися тут .


1
моє оточення вже нормально, але я не знайомий з правилами go get, тому github.com:capotej/groupcache-db-experiment.gitце не є незаконним, який законний шлях?
Роджер

2
Спробуйте перейти get -v github.com/capotej/groupcache-db-experiment / ... як сказав @peterSO
Pravin Mishra

1
Починаючи з Go v1.8, GOPATHза замовчуванням $HOME/goякщо не встановлено. Джерело 1 , 2 .
Манавалан Гаджапатій
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.