- Всё, что вы хотели знать про GOPATH и GOROOT
- GOROOT
- GOPATH
- Структура Workspace
- Дополнительно
- molivier / gist:271bba5d67de1583a8e3
- This comment has been minimized.
- ritzeng commented Oct 5, 2018
- This comment has been minimized.
- PabloThiele commented Jan 17, 2019 •
- vsouza / .bashrc
- This comment has been minimized.
- yaauie commented Jul 2, 2015
- This comment has been minimized.
- vsouza commented Jul 4, 2015
- This comment has been minimized.
- danieledangeli commented Jul 17, 2015
- This comment has been minimized.
- pdxdan commented Jul 20, 2015
- This comment has been minimized.
- cihann commented Aug 9, 2015
- This comment has been minimized.
- vsouza commented Sep 14, 2015
- This comment has been minimized.
- orip commented Dec 6, 2015
- This comment has been minimized.
- ikrauchanka commented Dec 14, 2015
- This comment has been minimized.
- rawaludin commented Dec 19, 2015
- This comment has been minimized.
- Anonyfox commented Dec 30, 2015
- This comment has been minimized.
- wayanjimmy commented Jan 10, 2016
- This comment has been minimized.
- hallfox commented Jan 12, 2016
- This comment has been minimized.
- akshithg commented Mar 6, 2016
- This comment has been minimized.
- jsmestad commented Mar 23, 2016
- This comment has been minimized.
- nicksarafa commented Mar 28, 2016
- This comment has been minimized.
- channprj commented Mar 29, 2016
- This comment has been minimized.
- gukj commented Apr 6, 2016
- This comment has been minimized.
- mjreed09 commented May 6, 2016
- This comment has been minimized.
- xavipedrals commented May 8, 2016
- This comment has been minimized.
- nonotest commented May 13, 2016
- This comment has been minimized.
- rhamedy commented May 19, 2016
- Установка Go и настройка локальной среды разработки в macOS
- Требования
- 1: Терминал
- 2: Установка инструментов командной строки Xcode
- 3: Установка и настройка Homebrew
- 4: Установка Go
- 5: Создание рабочего пространства Go
- 6: Создание простой программы Go
- Заключение
Всё, что вы хотели знать про GOPATH и GOROOT
Несмотря на то, что Go считается одним из самых легких для входа языков, приходится регулярно слышать: «как-то все непонятно, какие-то переменные GOROOT и GOPATH нужно устанавливать». И хотя тема полностью раскрыта на официальном сайте Go, не будет лишним объяснить совсем простым языком.
TL;DR
Теперь чуть подробнее:
GOROOT
GOROOT — это переменная, указывающая, где лежит, собственно, вся бинарная сборка Go и исходные коды. Что-то вроде JAVA_HOME. Устанавливать эту переменную ручками нужно только в тех случаях, если вы ставите Go под Windows не с помощью MSI-инсталлера, а из zip-архива. Ну, или если вы хотите держать несколько версий Go, каждая в своей директории.
Раньше (до Go 1.0) эта переменная была нужна — её использовали скрипты сборки, равно как и GOARCH и GOOS. Но после Go 1.0 немного изменилась внутренняя логика работы go tool и сейчас значение GOROOT хардкодится на этапе сборки или инсталляции. Тоесть, go — дефолтно проинсталлированный — знает это значение и так. Его можно посмотреть с помощью команды:
В MacOS X это /usr/local/go/, в Linux тоже (хотя может зависеть от дистрибутива), в Windows — С:\Go.
GOPATH
А вот переменная GOPATH очень важна и нужна и её нужно установить обязательно, впрочем только один раз. Это ваш workspace, где будет лежать код и бинарные файлы всего с чем вы будете в Go работать. Поэтому выбирайте удобный вам путь и сохраняйте его в GOPATH. К примеру:
Ну и обязательно это сохраните в .profile или как вы там сохраняете переменные:
Всё, сделайте это один раз и забудьте. Создайте только эту директорию, если её еще и нет, и на этом готово. Теперь любой вызов go get github.com/someuser/somelib автоматически будет скачивать исходники в $GOPATH/src, а бинарный результат компиляции складывать в $GOPATH/pkg или $GOPATH/bin (для библиотек и исполняемых файлов соответственно).
Это опционально, но желательно сразу тоже сделать, раз уж вы взялись за настройку среды. Рано или поздно вы захотите пользоваться какими-то Go-программами, которые будут лежать в вашей GOPATH/bin. Чтобы их без лишних телодвижений использовать, добавьте к PATH директорию $GOPATH/bin:
Команда go install собирает и инсталлирует бинарник именно в эту директорию, поэтому это исключительно для удобства.
Структура Workspace
Теперь давайте посмотрим внимательно на структуру директории GOPATH. Возьму пример из официальной документации:
Достаточно просто, не так ли? Важно понимать, что никто не обязывает называть директории в src/ по какому-то формату. Можно использовать и src/test/my_first_app/main.go и src/anyname/main.go — но если вы работаете с системами контроля версий (а вы таки работаете)), то вам это бесспорно станет удобно — утилиты go get/install используют это соглашения наименования, чтобы сделать работу с системами контроля версий безбожно простой.
Дополнительно
/other_workspace. Это в очень редких случаях бывает полезно (например, для работы с внешними менеджерами зависимостей вроде gpm), но в 99% это не нужно, и просто так рекомендуется использовать только одну директорию в GOPATH.
В конце-концов, если вам нужны раздельные workspace-ы, всегда можно заменить переменную GOPATH на нужную (в скрипте сборки, к примеру). Так, собственно, и делают.
Источник
molivier / gist:271bba5d67de1583a8e3
/.bash_profile
/.bash_profile
This comment has been minimized.
Copy link Quote reply
ritzeng commented Oct 5, 2018
ok, but is that to place into a file or must i run that all the time ?
Sometime s the UNIC guys do not start at the basics.
This comment has been minimized.
Copy link Quote reply
PabloThiele commented Jan 17, 2019 •
ok, but is that to place into a file or must i run that all the time ?
Sometime s the UNIC guys do not start at the basics.
Adding this on your bash_profile will solve the problem. It’s not necessary to do it by yourself.
Since:
bash_profile is a configuration file for bash shell. When bash is invoked as an interactive login shell it first reads and executes commands from
/.bash_profile. E.g. This file can be used to export variables in shell. You can put your variables in
/.bashrc also apart from bash profile
If in your case still not work, verify if you’re really using bash or other shells scripts.
You can do this typing the command:
ps -p $$
This will provide the actual shell name.
In my case is:
PID TTY TIME CMD
790 ttys000 0:00.59 -zsh
So I’m using zsh as shell for instance I need to add any related configuration to my
Источник
vsouza / .bashrc
# Set variables in .bashrc file |
# don’t forget to change your path correctly! |
export GOPATH= $HOME /golang |
export GOROOT=/usr/local/opt/go/libexec |
export PATH= $PATH : $GOPATH /bin |
export PATH= $PATH : $GOROOT /bin |
# Set variables in .zshrc file |
# don’t forget to set path correctly! |
export GOPATH= $HOME /golang |
export GOROOT=/usr/local/opt/go/libexec |
export PATH= $PATH : $GOPATH /bin |
export PATH= $PATH : $GOROOT /bin |
# Set variables in config.fish file |
# don’t forget to set path correctly! |
# GOLANG configurations |
set -x GOPATH $HOME /golang |
set -x GOROOT /usr/local/opt/go/libexec |
set PATH $GOPATH /bin $GOROOT /bin $PATH |
echo » Please enter your golang path (ex: $HOME /golang) : « |
read gopath |
echo » Please enter your github username (ex: vsouza) : « |
read user |
mkdir $gopath |
mkdir -p $gopath /src/github.com/ $user |
export GOPATH= $gopath |
export GOROOT=/usr/local/opt/go/libexec |
export PATH= $PATH : $GOPATH /bin |
export PATH= $PATH : $GOROOT /bin |
/usr/bin/ruby -e » $( curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install ) « |
brew update |
brew install go |
brew install git |
go get golang.org/x/tools/cmd/godoc |
go get golang.org/x/tools/cmd/vet |
This comment has been minimized.
Copy link Quote reply
yaauie commented Jul 2, 2015
This was helpful for me on Mac OSX Yosemite (10.10.4); a couple notes:
- $HOME gets doubled when creating the path for your own code, probably accidentally.
- brew update && brew upgrade is a little aggressive, installing updates to everything.
- code.google.com no longer hosts the go tools; replace code.google.com/p/go.tools with golang.org/x/tools
This comment has been minimized.
Copy link Quote reply
vsouza commented Jul 4, 2015
This comment has been minimized.
Copy link Quote reply
danieledangeli commented Jul 17, 2015
Hey @vsouza I think you should update install.sh with this changes:
go get golang.org/x/tools/cmd/godod
go get golang.org/x/tools/cmd/vet
Because they have been moved:
«can’t load package: the code.google.com/p/go.tools/cmd/vet command has moved; use golang.org/x/tools/cmd/vet instead.»
This comment has been minimized.
Copy link Quote reply
pdxdan commented Jul 20, 2015
@danieledangeli I think there’s a typo there where you meant godoc, not godod
This comment has been minimized.
Copy link Quote reply
cihann commented Aug 9, 2015
i got an error. maybe you can update your gist.
go get code.google.com/p/go.tools/cmd/godoc
the code.google.com/p/go.tools/cmd/godoc command has moved; use golang.org/x/tools/cmd/godoc instead.
This comment has been minimized.
Copy link Quote reply
vsouza commented Sep 14, 2015
Bug fixes and links updated. Thank you all. ❤️
This comment has been minimized.
Copy link Quote reply
orip commented Dec 6, 2015
Suggestion to make .zshrc more zsh-y:
This comment has been minimized.
Copy link Quote reply
ikrauchanka commented Dec 14, 2015
thanks for bashrc
This comment has been minimized.
Copy link Quote reply
rawaludin commented Dec 19, 2015
This comment has been minimized.
Copy link Quote reply
Anonyfox commented Dec 30, 2015
Goroot -> the «/libexec» part does the trick for me on OSX — thanks dude!
This comment has been minimized.
Copy link Quote reply
wayanjimmy commented Jan 10, 2016
This comment has been minimized.
Copy link Quote reply
hallfox commented Jan 12, 2016
Setup for fish users
This comment has been minimized.
Copy link Quote reply
akshithg commented Mar 6, 2016
This comment has been minimized.
Copy link Quote reply
jsmestad commented Mar 23, 2016
@hallfox thanks for the fish config 👯
This comment has been minimized.
Copy link Quote reply
nicksarafa commented Mar 28, 2016
👍 thanks for the help.
For those like myself unfamiliar with go, you might have to run your go get commands with -d tag if you’re running into the issue can’t load package: package .: no buildable Go source files in while trying to install your package (Stack Overflow Reference).
This comment has been minimized.
Copy link Quote reply
channprj commented Mar 29, 2016
Thanks for your help.
This comment has been minimized.
Copy link Quote reply
gukj commented Apr 6, 2016
I get the following error after inserting path and GitHub username.
mkdir: /Users/username/GitHub/Go: File exists /Users/username/Downloads/77e6[. ]b8b9c/install.sh: line 26: syntax error: unexpected end of file
Any idea what this means?
This comment has been minimized.
Copy link Quote reply
mjreed09 commented May 6, 2016
I’m getting that error as well.
line 26: syntax error: unexpected end of file
This comment has been minimized.
Copy link Quote reply
xavipedrals commented May 8, 2016
package golang.org/x/tools/cmd/vet: cannot find package «golang.org/x/tools/cmd/vet» in any of:
/usr/local/opt/go/libexec/src/golang.org/x/tools/cmd/vet (from $GOROOT)
/Users/xavi/golang/src/golang.org/x/tools/cmd/vet (from $GOPATH)
Anyone else with this error?
This comment has been minimized.
Copy link Quote reply
nonotest commented May 13, 2016
its missing semicolons
This comment has been minimized.
Copy link Quote reply
rhamedy commented May 19, 2016
Thank you for the help and instructions @vsouza, very useful.
A couple of points based on my experiencing of carrying out these instructions on OSX 10.11.3
Источник
Установка Go и настройка локальной среды разработки в macOS
Go – это язык программирования, который появился благодаря долгим поискам команды Google. Разработчикам постоянно приходилось идти на компромисс: либо ты выбираешь эффективный язык программирования, который долго компилируется, либо выбираешь язык, который компилируется быстрее, но совершенно неэффективен в производстве. При разработке Go учитывались три главных аспекта: быстрая компиляция, простота программирования и эффективное выполнение в производстве.
Go – это универсальный язык программирования, который можно использовать для многих различных программных проектов, но особенно хорошо он подходит для сетевых программ и распределенных систем, благодаря чему он заслужил репутацию «языка облака». Его цель – помочь современному программисту сделать больше (для этого у него есть мощный набор инструментов), устранить споры о форматировании, сделав формат частью спецификации языка, а также упростить развертывание путем компиляции в один двоичный файл. Go легко изучить, так как он состоит из очень небольшого набора ключевых слов. Это отличный язык как для начинающих, так и для опытных разработчиков.
В этом мануале узнаете, как установить Go на локальный компьютер MacOS и настроить среду разработки с помощью командной строки.
Требования
Для работы вам нужен локальный компьютер MacOS с административным доступом, подключенный к Интернету.
1: Терминал
Большая часть действий будет выполняться в командной строке. Командная строка представляет собой неграфический способ взаимодействия с компьютером. Вместо нажатия кнопок с помощью мыши вы вводите команды в виде текста и получаете обратную связь опять же в виде текста. Командная строка, также известная как оболочка, позволяет вам автоматизировать многие рутинные задачи и является важным инструментом для разработчиков программного обеспечения.
Открыть приложение терминала в macOS можно через Finder → Applications → Utilities. Здесь дважды кликните по приложению Terminal.
Также для доступа к терминалу можно зажать Command, нажать Space и ввести Terminal в появившемся поле.
Если вы хорошо знакомы с терминалом Linux, то вы быстро разберетесь с терминалом macOS, так как они очень похожи.
2: Установка инструментов командной строки Xcode
Xcode – это интегрированная среда разработки (IDE), которая включает инструменты разработки программного обеспечения для macOS.
Чтобы узнать, установлен ли Xcode в вашей системе, введите в терминал:
Следующий вывод значит, что Xcode установлен:
Если вы получили ошибку, значит, вам нужно открыть браузер, установить Xcode из App Store и принять стандартные параметры.
После этого вернитесь в окно терминала. Вам нужно установить инструменты командной строки Xcode, для этого введите:
Теперь Xcode и его приложение Command Line Tools установлены, можно установить Homebrew.
3: Установка и настройка Homebrew
Интерфейс командной строки macOS обладает почти всеми функциями Linux и других Unix-подобных систем, но он не включает в себя менеджер пакетов. Менеджер пакетов – это набор инструментов, который автоматизирует установку, настройку и обновление программ. Эти инструменты обеспечивают централизованное хранение программ и могут поддерживать все программные пакеты в системе в разных форматах. Homebrew – это бесплатная система управления пакетами с открытым исходным кодом, которая упрощает установку программного обеспечения на macOS. Используйте Homebrew, чтобы установить последнюю версию Ruby, а затем настроить систему для использования этой версии вместо текущей версии Ruby по умолчанию.
Чтобы установить Homebrew, введите в терминал:
/usr/bin/ruby -e «$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)»
Homebrew и его сценарий установки написаны на Ruby, поэтому он изменит путь Ruby на вашем компьютере. Команда curl извлекает скрипт по указанному URL-адресу. Этот сценарий сначала объяснит, что он будет делать, а затем приостановит процесс, чтобы запросить подтверждение. Так вы получите много информации о том, что скрипт будет делать с вашей системой, и сможете проверить процесс.
При этом будет предложено ввести пароль. Однако при вводе пароля символы не отображаются в окне терминала. Эта мера безопасности часто применяется при запросе паролей в командной строке. Вы не будете видеть символов, но система все равно будет фиксировать нажимаемые клавиши. Введите пароль, нажмите Return и программа будет установлена.
Нажмите клавишу у, чтобы ответить yes, когда вам будет предложено подтвердить установку.
В команде использованы такие флаги:
- Флаг -f (–fail) блокирует в терминале вывод HTML-документа при ошибках сервера.
- Флаг -s (–silent) отключает индикатор выполнения.
- Флаг -S (–show-error) включает поддержку сообщений об ошибках curl.
- Флаг -L (–location) включает обработку редиректов. Если сервер сообщает, что запрошенная страница переместилась на другой адрес, команда автоматически отправит запрос в новое местоположение.
После установки нужно сделать каталог, который Homebrew использует для хранения исполняемых файлов, первым значением переменной среды PATH. Так все инструменты macOS смогут вызывать установленные через Homebrew программы.
/.bash_profile в текстовом редакторе:
Добавьте в конец файла:
Чтобы сохранить изменения, удерживайте клавишу Ctrl и O, при появлении запроса нажмите клавишу Return. Затем выйдите из редактора, удерживая клавишу Ctrl и нажав X. Это вернет вас в терминал.
Чтобы активировать все изменения, введите:
После этого изменения, внесенные в переменную среды PATH, вступят в силу.
Убедитесь, что Homebrew работает. Введите:
В терминале появится:
Your system is ready to brew.
Если что-то пошло не так, вы получите предупреждение. Если Homebrew нужно обновить, вам будет предложено ввести команду:
4: Установка Go
После установки Homebrew вы можете легко установить множество инструментов разработки и других программ.
Следующая команда выводит список всех доступных пакетов Homebrew:
Чтобы сузить поиск до связанных с Go пакетов и модулей, укажите:
brew search golang
Примечание: Мы не рекомендуем использовать запрос brew search go, поскольку он возвращает слишком много результатов. Слово «go» короткое, а потому оно совпадает со многими пакетами. Сейчас обычно в качестве поискового запроса используют golang (в том числе и при поиске в Интернете статей, связанных с Go). Термин Golang появился благодаря домену Go, golang.org.
В терминале появится список доступных пакетов:
Go будет в этом списке. Установите этот пакет:
brew install golang
Терминал сообщит вам о прогрессе установки Go. Этот процесс может занять несколько минут.
Чтобы проверить установленную версию Go, введите следующую команду:
Эта команда выведет версию Go, которая установлена в данный момент, по умолчанию это будет самая актуальная и стабильная версия Go из доступных.
В будущем, чтобы обновить Go, вы можете запустить следующие команды. Первая обновляет Homebrew, а вторая обновляет Go. Вам не нужно делать этого сейчас, так как вы только что установили последнюю версию.
brew update
brew upgrade golang
Первая команда обновит Homebrew, гарантируя, что у вас будет самая свежая информация о пакетах, которые нужно установить. Команда brew upgrade golang обновит пакет golang до последней версии.
Экземпляр Go рекомендуется поддерживать в актуальном состоянии, своевременно обновляя его.
Установив Go на ваш компьютер, вы можете создать рабочее пространство для своих проектов Go.
5: Создание рабочего пространства Go
Теперь, когда у вас установлены Xcode, Homebrew и Go, вы можете приступить к созданию своего рабочего пространства для программирования.
Рабочая среда Go будет содержать в корне два каталога:
- src: это каталог, содержащий исходные файлы Go. Исходный файл – это файл, который вы пишете на языке программирования Go. Исходные файлы используются компилятором Go для создания исполняемого двоичного файла.
- bin: каталог, содержащий исполняемые файлы, созданные и установленные инструментами Go. Исполняемые файлы – это двоичные файлы, которые запускаются в системе и выполняют задачи. Обычно это программы, скомпилированные из исходного кода Go.
Подкаталог src может содержать несколько репозиториев контроля версий (таких как Git, Mercurial или Bazaar). Вы увидите в нем каталоги типа github.com или golang.org, когда ваша программа импортирует сторонние библиотеки. Если вы используете репозиторий кода, например github.com, вы должны поместить свои проекты и исходные файлы в этот каталог. Это позволяет импортировать код в ваш проект. Канонический импорт – это импорт, который ссылается на полностью определенный пакет.
Вот так выглядит типичное рабочее пространство:
.
├── bin
│ ├── buffalo # command executable
│ ├── dlv # command executable
│ └── packr # command executable
└── src
└── github.com
└── godo
├── .git # Git reposistory metadata
├── account.go # package source
├── account_test.go # test source
├── .
├── timestamp.go
├── timestamp_test.go
└── util
├── server.go
└── server_test.go
C версии 1.8 каталог по умолчанию для рабочего пространства Go – это домашний каталог вашего пользователя с подкаталогом go или $HOME/go. Если вы используете более раннюю версию Go, рекомендуется все же использовать для вашего рабочего пространства расположение $HOME/go.
Выполните следующую команду, чтобы создать структуру каталогов для вашего рабочего пространства Go:
Опция -p создает все родительские каталоги, если они в настоящее время не существуют.
В итоге получится такая структура каталогов:
До версии 1.8 требовалось устанавливать локальную переменную среды $GOPATH. Явно это больше не требуется, но по-прежнему считается хорошей практикой, поскольку многие сторонние инструменты все еще зависят от этой переменной.
Установить $GOPATH можно в файле
Откройте этот файл в редакторе:
Установите переменную $GOPATH:
Когда Go компилирует и устанавливает инструменты, он помещает их в каталог $GOPATH/bin. Для удобства в файле
/.bash_profile подкаталог /bin рабочей области добавляют в PATH:
/bash_profile у вас должны быть следующие записи:
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin
Это позволит вам запускать любые программы, которые вы компилируете или загружаете с помощью инструментов Go, в любой точке вашей системы.
Чтобы обновить оболочку, введите следующую команду:
Вы можете убедиться, что $PATH обновилась, используя команду echo:
Вы должны увидеть $GOPATH/bin, который появится в вашем домашнем каталоге. Если вы вошли в систему как пользователь 8host, вы увидите путь /Users/8host/go/bin.
Теперь, когда у вас есть базовая рабочая среда и установленная переменная $GOPATH, вы можете использовать следующую структуру для разработки проектов (в этом примере предполагается, что вы используете github.com в качестве хранилища):
Такое структурирование проектов позволит получать к ним доступ с помощью инструмента go get. Это также нужно для удобочитаемости.
Вы можете проверить, работает ли структура, с помощью команды go get:
go get github.com/username/project
Запросив каталог, вы увидите, что пакет был загружен:
ls -l $GOPATH/src/github.com/username/project
-rw-r—r— 1 8host staff 2892 Apr 5 15:56 CHANGELOG.md
-rw-r—r— 1 8host staff 1851 Apr 5 15:56 CONTRIBUTING.md
.
.
.
-rw-r—r— 1 8host staff 4893 Apr 5 15:56 vpcs.go
-rw-r—r— 1 8host staff 4091 Apr 5 15:56 vpcs_test.go
6: Создание простой программы Go
Теперь у вас есть рабочее пространство Go. Попробуйте создать в нем простую программу «Hello, World!». Так вы сможете убедиться, что среда работает, а заодно и ближе познакомиться с Go.
Поскольку сейчас мы создадим простейший исходный файл Go, а не настоящий проект, входить в рабочее пространство не обязательно.
Перейдите в домашний каталог, откройте текстовый редактор и создайте файл:
Введите следующий код:
package main
import «fmt»
func main() <
fmt.Println(«Hello, World!»)
>
Сохраните и закройте файл.
Этот код будет использовать пакет fmt и вызовет функцию Println с аргументом Hello, World!. Это отобразит фразу Hello, World! в терминал при запуске программы.
Когда вы выйдете из nano и вернетесь к своей оболочке, запустите программу:
Программа hello.go, которую вы только что создали, покажет следующий вывод:
Вы написали базовую программу, чтобы убедиться, что ваше рабочее пространство Go правильно настроено.
Заключение
Теперь вы можете использовать рабочее пространство Go на локальной машине macOS для создания своих собственных проектов.
Источник