Почему больше не нужно устанавливатьGOROOT
Шерстяная ткань? Рекомендуется прочитать две англоязычные статьи, я их перефразировал и объединил в одну.
первый разРечь о том, как настроить до Go 1.10GOROOT
, опубликованный в 2013 году.Статья 2начиная с Go 1.10, как справитьсяGOROOT
, время 2018, журнал фиксации исходного кода Go. Этот очень короткий.
После прочтения вы обнаружите, что в большинстве случаев нам не нужно вручную устанавливатьGOROOT
.
первый раз
Автор: Дэйв Чейни | Адрес:you-dont-need-to-set-goroot-really
Небольшая статья, объясняющая, почему при компиляции и использовании Go не нужно устанавливатьGOROOT
.
Сводное представление
В общем, после Go 1.0 для компиляции и использования Go больше не требуется установкаGOROOT
. На самом деле, если на вашем компьютере установлено несколько версий локали Go, установитеGOROOT
Могут возникнуть некоторые проблемы.
GOPATH
Еще надо настроить.
Начиная с Go 1.0,GOPATH
Это настоятельно рекомендуется. С выпуском Go 1.1,GOPATH
Это уже обязательно.
Почему больше не ставитьGOROOT
?
Расскажите об истории переменных окружения Go!
Ветераны го могут помнить, что когда-то го был не только в настройкеGOROOT
, также необходимо установитьGOOS
иGOARCH
. Причина настройкиGOROOT
, потому что Make вводит при компиляции и сборкеGOROOT
Содержание в , должно быть установлено заранееGOROOT
как их базовый путь.
вместе сgo tool
Введение , до Go 1.0,GOOS
иGOARCH
Он стал необязательным, потому что сценарий сборки может автоматически определять системный класс и архитектуру ЦП. После выпуска GO 1.0 были введены инструменты сборки Bootstrap CMD / DINT, были введены,GOOS
иGOARCH
Это действительно необязательно и используется только при кросс-компиляции.
Настройка не требуетсяGOOS
иGOARCH
,ТотGOROOT
Шерстяная ткань?
GOROOT
Определяется для указания корневого каталога, в котором установлен GO. В предыдущем Makefile используйте его как базовый путь при импорте других Makefile. Более того, после Go 1.0,go tool
Используйте его, чтобы найти компилятор Go (хранится в$GOROOT/pkg/tool/$GOOS_$GOARCH
) и стандартной библиотеке (в$GOROOT/pkg/$GOOS_$GOARCH
). Если вы Java-разработчик, вы можетеGOROOT
понимается какJAVA_HOME
.
Скомпилируйте Go из исходного кода,GOROOT
Автоматическое обнаружение (all.bash в родительском каталоге), а затем установка цепочки инструментов.
Проверьте следующую команду:
$ echo $GOROOT
$ go env
/home/dfc/go
Двоичные пакеты, загруженные с golang.org или системные среды Go, также имеют правильный набор GOROOT в цепочке инструментов.
Например, в Ubutun 12.04 установлен Go 1.0.
$ dpkg -l golang-{go,src} | grep ^ii
$ go
/usr/bin/go
$ go env GOROOT
/usr/lib/go
Мы видим, что набор инструментов Go установлен в/usr/bin/go
Вниз,GOROOT
встроенный как/usr/lib/go
Почему это не должно быть установленоGOROOT
Мы не должны устанавливатьGOROOT
, потому что в набор инструментов Go уже встроено правильное значение.
настраиватьGOROOT
Переопределит значения по умолчанию, хранящиеся в цепочке инструментов go, что может привести к тому, что go будет выполнять разные версии файлов компилятора и стандартных библиотек.
В обоих случаях необходимо установитьGOROOT
. в официальномВведение в установкуСвязанное описание.
- Если вы являетесь пользователем Linux, FreeBSD или OS X, загрузите бинарные среды установки ZIP и Tarball. Эти бинарные среды по умолчанию находятся в /usr/local/go, рекомендуется установить GO в это место. Если вы этого не сделаете, вы должны быть установлены в указанный вами каталог.
- Если вы являетесь пользователем Windows, установите с помощью двоичного пакета zip, по умолчанию
GOROOT
в каталоге C:\Go. Если вы установили Go в другом месте, установитеGOROOT
в указанный каталог.
другие детали
В этой статье уже было показано, что при компиляции среды Go из исходного кодаGOROOT
Как автоматически обнаружить. но еслиGOROOT
Разве это не соответствует тому, где находится all.bash? Например, чтобы скомпилировать среду Go во временную директорию, как ее правильно установитьGOROOT
Шерстяная ткань? Ответ заключается в использованииGOROOT_FINAL
, который будет использоваться для переопределения автоматически обнаруженногоGOROOT
, установите в набор инструментов GO.
Например, в Debian/Ubuntu программа сборки будетGOROOT_FINAL
устанавливается в /usr/lib/go. ХранитьGOROOT
Является ли состояние SENSET, создавая сборку с компиляцией. После завершения сборки установите To Too Toolchain в каталог / usr / bin и установите компилятор, исходный код и пакеты в / usr / lib / go.
будь осторожен
Если вы используете бинарные пакеты для установки среды Go, необходимо обработать некоторые особые случаи, описанные в этой статье.
Хотя система сборки может автоматически определить, если родительский каталог all.bash не удовлетворяетGOROOT
запрос, но также должны быть обработаны отдельно.
Статья 2
Переведено из журнала коммитов Go по адресу:use os.Executable to find GOROOT.
GO 1.10 стартует, проходuse os.Executable
найтиGOROOT
.
Раньше мы компилировали и собирали с помощью make.shGOROOT
, но если вы переместите весь каталог на новый путь, это помешает правильной работе цепочки инструментов Go.
Как решить эту проблему?
Во-первых, исходный код можно перекомпилировать, но если новое расположение находится в каталоге другого пользователя, это может быть невозможно.
Во-вторых, через настройкуGOROOT
Путь решения переменной окружения, но дополнительно устанавливаемGOROOT
не рекомендуется, так как это может сделать окружающую средуgo tool
используется в другой средеcompile
.
Эта модификация,go tool
будет определяться относительным путемGOROOT
,используяos.Execute
функция. В то же время он также проверит$GOROOT/pkg/tool
Существует ли каталог, чтобы избежать следующих двух ситуаций.
$ ln -s $GOROOT/bin/go /usr/local/bin/go
и
$ PATH=$HOME/bin:$PATH
$ GOPATH=$HOME
$ ln -s $GOROOT/bin/go $HOME/bin/go
Кроме того, если текущий путь выполнения не находится вGOROOT
Далее местоположение реальной команды будет найдено через программную ссылку, и проверьте, является ли путьGOROOT
.