Какими должны быть значения GOPATH и GOROOT?
Я пытаюсь установить doozer как это
$ goinstall github.com/ha/doozer
Я получаю эти ошибки.
goinstall: os: go/build: package could not be found locally
goinstall: fmt: go/build: package could not be found locally
goinstall: io: go/build: package could not be found locally
goinstall: reflect: go/build: package could not be found locally
goinstall: math: go/build: package could not be found locally
goinstall: rand: go/build: package could not be found locally
goinstall: url: go/build: package could not be found locally
goinstall: net: go/build: package could not be found locally
goinstall: sync: go/build: package could not be found locally
goinstall: runtime: go/build: package could not be found locally
goinstall: strings: go/build: package could not be found locally
goinstall: sort: go/build: package could not be found locally
goinstall: strconv: go/build: package could not be found locally
goinstall: bytes: go/build: package could not be found locally
goinstall: log: go/build: package could not be found locally
goinstall: encoding/binary: go/build: package could not be found locally
Ответы
Ответ 1
GOPATH
обсуждается в документации cmd/go
:
В переменной среды GOPATH
перечислены места для поиска кода Go. На Unix, значение представляет собой строку, разделенную двоеточием. В Windows это значение строка с разделителями с запятой. В Plan 9 значение представляет собой список.
GOPATH
должен быть установлен для получения, сборки и установки пакетов за пределами стандартное дерево Go.
GOROOT
обсуждается в инструкциях по установке:
Бинарные дистрибутивы Go предполагают, что они будут установлены в /usr/local/go
(или c:\Go
под Windows), но можно установить инструменты Go в другое место. В этом случае вы должны установить GOROOT
переменная среды, указывающая на каталог, в котором она была установлен.
Например, если вы установили Go в свой домашний каталог, вы должны добавить следующие команды $HOME/.profile
:
export GOROOT=$HOME/go
export PATH=$PATH:$GOROOT/bin
Примечание. GOROOT
должен быть установлен только при установке в пользовательское местоположение.
(обновленная версия ответ Криса Бунка.)
Ответ 2
Вот моя простая настройка:
directory for go related things: ~/programming/go
directory for go compiler/tools: ~/programming/go/go-1.4
directory for go software : ~/programming/go/packages
GOROOT, GOPATH, PATH установлены следующим образом:
export GOROOT=/home/user/programming/go/go-1.4
export GOPATH=/home/user/programming/go/packages
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
Итак, короче:
GOROOT предназначен для компилятора/инструментов, которые исходят из установки go.
GOPATH предназначен для ваших собственных проектов/сторонних библиотек (загружаемых с помощью "go get" ).
Ответ 3
Первый запуск go env
.
Если вы видите, что переходы не установлены, вы можете установить их с помощью homebrew или через пакет и/или другими способами.
Если вы видите вывод, значит, ваш go установлен.
Он показывает вам все envs, которые установлены и не установлены.
Если вы видите пустой для GOROOT
:
- запустить
which go
(На моем компьютере: /usr/local/go/bin/go
) - затем экспортируйте как этот
export GOROOT=/usr/local/go
Если вы видите пустой для GOPATH
:
- В моем случае создайте любой каталог на вашем компьютере для проектов go:
~/GO_PROJECTS
- затем
export GOPATH=~/GO_PROJECTS
Ответ 4
GOPATH
обсуждается здесь:
GOPATH
Переменная среды
GOPATH
может быть установлен в список путей, разделенных двоеточиями, внутри которых Go код, объекты пакета и исполняемые файлы.
Установите GOPATH
, чтобы использовать goinstall для сборки и установки собственного кода и внешние библиотеки за пределами дерева Go (и во избежание записи Makefiles).
И GOROOT
обсуждается здесь:
$GOROOT
Корень дерева Go, часто $HOME/go
. По умолчанию это родительский каталог каталога, в котором выполняется all.bash
. Если вы решите не set $GOROOT
, вы должны запустить gomake вместо make или gmake, когда разрабатывая программы Go, используя обычные make файлы.
Ответ 5
Я прочитал docs go help gopath
и был все еще невероятно запутанным, но нашел этот маленький самородок с другой страницы go doc:
Переменная среды GOPATH указывает местоположение вашего рабочего пространства. Скорее всего, это единственная переменная среды, которую вам нужно установить при разработке кода Go.
http://golang.org/doc/code.html#GOPATH
Ответ 6
GOPATH не должен указывать на установку Go, а скорее на ваше рабочее пространство (см. https://golang.org/doc/code.html#GOPATH). Всякий раз, когда вы устанавливаете какой-либо пакет с Go Go Go Go Go, он будет приземляться в GOPATH. Вот почему он предупреждает вас, что вы определенно не хотите, чтобы случайные пакеты из Интернета были сброшены в вашу официальную установку.
Ответ 7
Начиная с версии 1.8 (2 квартал 2017 г.), для GOPATH по умолчанию будет установлено значение $ HOME/go.
Смотрите выпуск 17262 и комментарий Роба Пайка:
$HOME/go
это будет.
Единственного лучшего ответа не существует, но он краткий и приятный, и может быть проблемой выбрать это имя, только если $HOME/go
уже существует, что будет приятно только для экспертов, которые уже установили и будут понимать GOPATH
.
Ответ 8
Как упоминалось выше:
Переменная среды GOPATH указывает местоположение вашего рабочее пространство.
Для Windows это работало для меня (в окне Ms-dos):
set GOPATH=D:\my_folder_for_go_code\
Это создает переменную GOPATH, которую Ms-dos распознает при использовании следующим образом:
cd %GOPATH%
Ответ 9
В отношении GOROOT
в частности, Go 1.9 автоматически установит его путь установки.
Даже если у вас установлено несколько Go, вызов 1.9.x устанавливает GOROOT
на /path/to/go/1.9
(раньше, если не задано, он предполагал путь по умолчанию, например /usr/local/go
или c:\Go
).
См. CL Go Review 53370:
go tool
теперь будет использовать путь, из которого он был вызван, чтобы попытаться найти корень установки Go дерево.
Это означает, что если вся установка Go будет перемещена в новое место, go tool
должна работать как обычно.
Это может быть переопределено установкой GOROOT
в среде, которая должна выполняться только в необычных условиях.
Обратите внимание, что это не влияет на результат runtime.GOROOT()
function, который будет продолжать сообщать исходное местоположение установки; это может быть исправлено в последующих выпусках.
Ответ 10
Добавьте три строки ниже в ваш файл ~/.bashrc
.
export GOROOT="$HOME/go" # extracted tar.gz go
export GOPATH="$HOME/go/bin"
export PATH="$GOPATH:$PATH"
Другими словами, $GOROOT/bin
- это $GOPATH
.
Это GOROOT
понять, GOROOT
является основным корневым каталогом всего языка go
. GOPATH
где вы находите go
двоичным.
Ответ 11
в OSX, я установил с Brew, вот настройка, которая работает для меня
GOPATH="$HOME/my_go_work_space" //make sure you have this folder created
GOROOT="/usr/local/Cellar/go/1.10/libexec"
Ответ 12
Я должен был добавить
export GOROOT=/usr/local/Cellar/go/1.10.1/libexec
в мой ~/.bash_profile на Mac OS X
Ответ 13
Также есть случай, когда мы используем go, он компилирует все файлы go.
Допустим, у нас был один файл main.go, а позже мы изменили текущий файл на main_old.go, а затем добавили наш новый файл main.go. Затем, когда мы создадим наше приложение, все файлы go будут скомпилированы. Таким образом, ошибка может быть связана с ошибкой компиляции в некоторых других файлах go.
Ответ 14
После установки Go lang, GOROOT является корневым каталогом установки.
Когда я разбил бинарный файл Go Lang в каталоге Windows C: \, мой GOROOT должен быть C:\go. Если установлено с помощью установщика Windows, это может быть C:\Program Files\go (или C:\Program Files (x86)\go, для 64-битных пакетов)
GOROOT = C:\go
в то время как моя GOPATH - это местоположение исходного кода Go lang или рабочей области.
Если мой исходный код Go lang находится в C:\Users\\GO_Workspace, ваш GOPATH будет выглядеть так:
GOPATH = C:\Users\<xyz>\GO_Workspace
Ответ 15
Вам не нужно явно устанавливать GOROOT
(современные версии Go могут выяснить это самостоятельно, основываясь на расположении GOROOT
go).
Также, при попытке работать с vgo
:
Receiving the following error: go: modules disabled inside GOPATH/src by GO111MODULE=auto; see 'go help modules'
Удаление GOROOT, обновление моего GOPATH и export GO111MODULE="on"
решили проблему.
ГОПАТ увидеть здесь
GOPATH может быть установлен как разделенный двоеточиями список путей, внутри которых можно найти код Go, объекты пакета и исполняемые файлы.
Установите GOPATH для использования goinstall для сборки и установки вашего собственного кода и внешних библиотек вне дерева Go (и во избежание написания Make файлов).
Ответ 16
Если вы используете дистрибутив go, вы должны указать, где находятся файлы include, например:
$ rpm -ql golang | grep include
/usr/lib/golang/include
(Это для Fedora 20)