Как установить сторонние проекты golang из источников загрузки?

Я пытаюсь установить mgo, который представляет собой монго-драйвер, написанный на голанге.

Стандартная команда:

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

Итак, какова правильная команда для его установки?


person Freewind    schedule 27.05.2012    source источник
comment
Есть ли ваши проекты в вашей переменной env GOPATH?   -  person Denys Séguret    schedule 27.05.2012


Ответы (4)


Наконец я успешно установил проект mgo. Думаю, будет полезно новичкам, поэтому отвечу здесь.

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

Определите переменную env GOPATH, которая является корневым каталогом вашего проекта, и в ней должен быть вложенный каталог src.

Для меня я определяю его как E:\WORKSPACE_GO\mgo, затем создаю подкаталог src

Скопируйте проект в src

Затем скопируйте проект mgo в %GOPATH%/mgo, но мы должны быть осторожны со структурой каталогов. Он должен быть точно таким же, как пакет, определенный в файлах sources.

Для mgo это пакет launchpad.net/mgo, поэтому структура должна быть такой:

E:\WORKSPACE_GO\mgo\src\launchpad.net\mgo

перейти к установке

Наконец go install их:

cd E:\WORKSPACE_GO\mgo\src\launchpad.net\mgo\bson
go install

cd ..
go install

Если нет ввода ошибки, она должна быть успешно установлена.

person Freewind    schedule 27.05.2012
comment
В вашем GOPATH может быть несколько проектов. Обычно у меня есть стандартный репозиторий Go, каталог go, в который я помещаю весь свой внешний импорт (с code.google.com или github.com) и все мои проекты go. Инструмент go всегда помещает скомпилированные файлы в ближайший каталог gopath и всегда находит импортированные файлы. - person Denys Séguret; 27.05.2012
comment
Freewind, вы можете принять свой ответ. Это в принципе правильно. Лучшая документация для GOPATH - golang.org/doc/code.html#tmp_13. Обычно вам не нужно делать здесь первый шаг, если вы ранее настроили GOPATH. Вы оставляете это так же, как работаете над разными проектами. Ваш шаг копирования правильный. Для go install вам не нужно устанавливать зависимости отдельно. Вы можете просто установить команды или пакеты верхнего уровня, и все зависимости будут установлены автоматически. - person Sonia; 29.05.2012
comment
Вам не нужно go install это делать. Пока любой проект, зависящий от этого пакета, имеет этот GOPATH в своем GOPATH (в GOPATH при сборке), он все равно найдет зависимость. Фактически, если он может найти файлы, сгенерированные go install, он также найдет источники и при необходимости построит их для себя. - person Kissaki; 03.06.2012
comment
Также следует отметить, что Bazaar должен быть установлен и доступен в PATH. - person eAbi; 28.02.2014

Установить 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 

Подробнее об этом

person rofrol    schedule 29.04.2013
comment
У меня нет собираемых исходных файлов Go в указанном каталоге. - person zero_cool; 03.10.2015

Вам нужно будет поместить его в свой GOPATH/src каталог, сохранив путь импорта (тот, который вы передали в go install).

Резервный GOPATH - это ваш каталог для установки. Таким образом, вы можете клонировать репозиторий mgo в go/src/pkg/launchpad.net/mgo.

В качестве альтернативы, когда вы настраиваете каталог / среду проекта для вашего проекта, который зависит от mgo, и устанавливаете для переменной среды GOPATH значение этой FOLDER, вы можете клонировать репозиторий mgo в FOLDER/src/launchpad.net/mgo/.

Затем вы можете использовать пакет mgo в своем проекте, как и ожидалось:

import "launchpad.net/mgo"
person Kissaki    schedule 03.06.2012

Ложка дегтя во всем этом заключается в том, что GOPATH - это путь, аналогичный пути к классам Java или PATH в Unix. Это не одно расположение каталога: это последовательность расположений каталога. Например, я обычно использую операторы формы,

GOPATH=dira:dirb:dirc go install mypackage
person cliffberg    schedule 21.09.2017