Как установить сторонние проекты golang из источников загрузки?
Я пытаюсь установить mgo, который является гондором, написанным в golang.
Стандартная команда:
go get launchpad.net/mgo
Но это не удалось из-за некоторых проблем с сертификатами.
Итак, я вручную загружаю источники mgo в локальный E:\mgo
, но я не знаю, как его установить.
Дерево файлов:
├─.bzr
│ ├─branch
│ │ └─lock
│ ├─branch-lock
│ ├─checkout
│ │ └─lock
│ └─repository
│ ├─indices
│ ├─lock
│ ├─obsolete_packs
│ ├─packs
│ └─upload
├─bson
└─testdb
Я пробовал:
cd mgo
go install
Сообщается:
auth.go:34:2: import "launchpad.net/mgo/bson": cannot find package
Но если я сначала попытаюсь установить bson:
cd bson
go install
Сообщается о следующей ошибке:
go install: no install location for _/E_/mgo/bson
Итак, какая правильная команда для его установки?
Ответы
Ответ 1
Наконец, я успешно установил проект mgo. Я думаю, что это будет полезно для новичков, поэтому я отвечу на него здесь.
Сначала нам нужен GOPATH
Определите переменную env GOPATH
, которая является корневым каталогом вашего проекта, и она должна иметь sub dir src
.
Для меня я определяю его на E:\WORKSPACE_GO\mgo
, а затем создаю sub dir src
Скопировать проект в src
Затем скопируйте проект mgo
на %GOPATH%/mgo
, но мы должны быть осторожны в структуре каталогов. Он должен быть точно таким же, как пакет, определенный в источниках.
Для mgo
, это пакет launchpad.net/mgo
, поэтому структура должна быть:
E:\WORKSPACE_GO\mgo\src\launchpad.net\mgo
go install
Наконец, go install
их:
cd E:\WORKSPACE_GO\mgo\src\launchpad.net\mgo\bson
go install
cd ..
go install
Если вход ошибки отсутствует, он должен быть успешно установлен.
Ответ 2
Установить GOPATH. Переместите код под $GOPATH
. Тогда
cd $GOPATH/src/github.com/user/package
go get .
Пояснение:
go build . # produces binary in current dir
go install . # produces binary in $GOPATH/bin
go get . # same as 'install' but resolves import deps
Подробнее об этом
Ответ 3
Вам нужно поместить его в каталог GOPATH/src
, сохранив путь импорта (тот, который вы передали в go install
).
Резервный GOPATH - это ваш каталог установки go. Таким образом, вы можете клонировать репозиторий mgo на go/src/pkg/launchpad.net/mgo
.
В качестве альтернативы, когда вы устанавливаете каталог проекта/среду для вашего проекта, который зависит от mgo, и устанавливайте переменную среды GOPATH
этой переменной FOLDER, вы можете клонировать хранилище mgo на FOLDER/src/launchpad.net/mgo/
.
Затем вы можете использовать пакет mgo в своем проекте, как ожидалось:
import "launchpad.net/mgo"
Ответ 4
Муха в мазке всего этого состоит в том, что GOPATH - это путь, похожий на Java classpath или Unix PATH. Это не одно местоположение каталога: это последовательность местоположений каталога. Например, я обычно использую выражения формы,
GOPATH=dira:dirb:dirc go install mypackage