Go install всегда не удается установить каталог вне GOPATH
~/src/go-statsd-client> echo $GOPATH
/Users/me/gopath
~/src/go-statsd-client> echo $GOROOT
/usr/local/Cellar/go/1.1.1
~/src/go-statsd-client> go install
go install: no install location for directory /Users/me/src/go-statsd-client outside GOPATH
независимо от того, какая структура проекта в этом всегда терпит неудачу с тем же сообщением. Отлично сочетаются строительных работ.
вот мой go env
GOARCH="amd64"
GOBIN=""
GOCHAR="6"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/me/gopath"
GORACE=""
GOROOT="/usr/local/Cellar/go/1.1.1"
GOTOOLDIR="/usr/local/Cellar/go/1.1.1/pkg/tool/darwin_amd64"
CC="gcc"
GOGCCFLAGS="-g -O2 -fPIC -m64 -pthread -fno-common"
CGO_ENABLED="1"
Это на Mac OSX Mountain Lion и go был установлен с homebrew.
10 ответов:
когда вы не предоставляете аргументов
go install, по умолчанию он пытается установить пакет в текущем каталоге. Сообщение об ошибке говорит вам, что он не может сделать, потому что текущий каталог не является частью вашего$GOPATH.вы можете:
- определение
$GOPATHв $Home (export GOPATH=$HOME).- переместите источник в пределах текущего
$GOPATH(mv ~/src/go-statsd-client /User/me/gopath).после того, как либо, входя в
go-statsd-clientкаталог и набравgo installбудет работать, и так пишитеgo install go-statsd-clientиз любой точки файловой системы. Встроенные двоичные файлы войдут в$GOPATH/bin.как несвязанное предложение, вы, вероятно, хотите, чтобы пространство имен вашего пакета с доменным именем, чтобы избежать столкновения имен (например,
github.com/you/go-statsd-client, если вы держите свой исходный код).
для любых пользователей OS X и future me вам также нужно установить
GOBINчтобы избежать этого запутанного сообщения при установке иgo getmkdir bin export GOBIN=$GOPATH/bin
вы используете установить в каталоге за пределами папки GOPATH. Установите переменную gobin env или переместите src папка внутри GOPATH.
GOPATH/ bin/ src/ go-statsd-client/Подробнее: перейти построить исходный код строка 296
вам нужно настроить как GOPATH, так и GOBIN. Убедитесь, что вы сделали следующее (пожалуйста, замените ~/go на ваш предпочтительный GOPAH и впоследствии измените GOBIN). Это тестируется на Ubuntu 16.04 LTS.
экспорт GOPATH=~ / go
mkdir ~ / go / bin
экспорт GOBIN=$GOPATH / bin
выбранный ответ не решил проблему для меня.
вы хотите иметь 3 каталога внутри выбранного каталога GOPATH.
GOPATH /bin /src /someProgram program.go /someLibrary library.go /pkgтогда ты побежишь
go installизнутри либо someProgram (который помещает исполняемый файл в bin), либо someLibrary (который помещает библиотеку в pkg).
у меня была эта проблема на Windows.
моя проблема была в том, что мой
%GOPATH%переменная окружения была установлена в
C:\Users\john\src\goworkspaceвместо
C:\Users\john\src\goworkspace\добавление отсутствующей косой черты в конце исправило это для меня.
в моем случае (OS X) это было потому, что я установил
GOPATHдо/home/username/go(согласно книге) вместо/Users/username/go
для чего это стоит, вот мой .bash_profile, который хорошо работает для меня на mac с Atom, после установки go with Homebrew:
export GOROOT=`go env GOROOT` export GOPATH=/Users/yy/Projects/go export GOBIN=$GOPATH/bin export PATH=$PATH:$GOBIN
Я на Windows, и я получил его, дав команду
go help gopathк cmd, и прочитайте жирный текст в инструкции,то есть если код, который вы хотите установить в
..BaseDir...\SomeProject\src\basic\setна GOPATH не должно быть того же места, что и код, это должен быть просто базовый проект DIR:..BaseDir...\SomeProject.в переменной окружения GOPATH списки мест, где искать код. На Unix, значение-это строка, разделенная двоеточием. На Windows, значение через точку с запятой строка. На плане 9 значение представляет собой список.
если переменная окружения не задана, GOPATH по умолчанию имеет значение a подкаталог с именем "go" в домашнем каталоге пользователя ($HOME / go on Unix, %USERPROFILE%\go на Windows), если этот каталог не содержит Go распределение. Запустите "go env GOPATH", чтобы увидеть текущего ГОПАТА.
см.https://golang.org/wiki/SettingGOPATH чтобы установить пользовательский ГОПАТ.
каждый каталог, указанный в GOPATH, должен иметь предписанная структура:
каталог src содержит исходный код. Путь ниже src определяет импортируйте путь или имя исполняемого файла.
каталог pkg содержит установленные объекты пакета. Как в дереве, каждая целевая операционная система и архитектурная пара имеет свою собственную подкаталог pkg (pkg/GOOS_GOARCH).
если DIR-это каталог, указанный в GOPATH, пакет с исходным кодом в Каталог/ГНЦ именем/foo/бар могут быть импортированы как "foo/bar" и имеет его скомпилированная форма устанавливается в "DIR/pkg/GOOS_GOARCH/foo / bar.ля."
каталог bin содержит скомпилированные команды. Каждая команда имеет имя его исходный каталог, но только последний элемент, а не весь путь. То есть команда с исходным кодом в DIR / src/foo / quux устанавливается в DIR/bin/quux, а не DIR/bin/foo / quux. Префикс "foo/" лишен так что вы можете добавить DIR / bin в свой путь, чтобы добраться до установленного команды. Если переменная среды GOBIN является набор команды устанавливается в каталог, который он называет вместо DIR / bin. Гобин должен быть абсолютный путь.
вот пример макета каталога:
GOPATH=/home/user/go /home/user/go/ src/ foo/ bar/ (go code in package bar) x.go quux/ (go code in package main) y.go bin/ quux (installed command) pkg/ linux_amd64/ foo/ bar.a (installed package object)..........
если GOPATH был установлен в базовый проект DIR и все еще имеет эту проблему, в windows вы можете попробовать установить Гобин как
Base Project DIR\binили%GOPATH%\bin.
в windows мое окно cmd уже было открыто, когда я установил переменную среды GOPATH. Сначала мне пришлось закрыть cmd, а затем снова открыть его, чтобы он стал эффективным.
Comments