Вступление
Go - это современный язык программирования с открытым исходным кодом, разработанный Google. Это просто и имеет надежный набор библиотек и инструментов, который позволяет легко создавать надежные и эффективные приложения.
Если вы хотите протестировать свое приложение Go на последней версии языка, внести свой вклад в базу кода Go или улучшить управление версиями Go, вам нужно будет собрать Go из исходного кода. Этот учебник покажет вам, как собрать Go, охватит некоторые практические вопросы и создаст тестовое приложение «Hello, World».
Предпосылки
Чтобы следовать этому уроку, вам понадобится:
-
Один сервер Ubuntu 16.04 с не менее 1 ГБ памяти, настроенный в соответствии с Initial Настройка сервера с Ubuntu 16.04 учебник , включая некорневого пользователя sudo и брандмауэр.
-
Git установлен на вашем сервере, который вы можете настроить, следуя https://www.digitalocean.com/community/tutorials/how-to-install-git-on-ubuntu-16-04 в этом руководстве по установке Git для Ubuntu 16.04. .]
-
По желанию, учетная запись GitHub.
Шаг 1 - Установка зависимостей сборки
Перед началом убедитесь, что ваш кэш репозитория обновлен.
sudo apt-get update
По умолчанию Ubuntu не содержит всех пакетов, необходимых для сборки Go, таких как компиляторы, библиотеки и инструменты. Легко установить зависимости сборки и компиляции, установив + build-essential +
, пакет, включающий + gcc +
для компиляции C, + g +` для компиляции C и `+ make +
, инструмент автоматизации сборки.
sudo apt-get install build-essential
После завершения установки у вас будут все необходимые инструменты для сборки Go из исходного кода. Далее вам понадобятся файлы Go 1.4.
Шаг 2 - Установка Go 1.4.3
Для сборки Go 1.5+ требуется версия 1.4. Это потому, что цепочки инструментов для Go 1.5+ написаны на самом Go. Вы можете использовать Go 1.4 или любую другую версию (1.4.1, 1.4.2 или 1.4.3); В этом уроке мы будем использовать Go 1.4.3.
Двоичные файлы Go с контрольными суммами SHA1 можно найти на странице загрузки Go. Загрузите файл с именем + go1.4.3.linux-amd64.tar.gz +
в свой домашний каталог.
cd ~
curl -O https://storage.googleapis.com/golang/
Несмотря на то, что этот файл был загружен из подлинного источника, по-прежнему рекомендуется проверять целостность загруженного файла. Это проще всего сделать, сравнив хэш файла, представленный на странице загрузок, и хэш загруженного файла.
Сначала получите хеш файла, который вы скачали.
sha1sum go1.4.3.linux-amd64.tar.gz
Сравните вывод этой команды с предоставленной контрольной суммой на странице загрузки Go.
Output332b64236d30a8805fc8dd8b3a269915b4c507fe go1.4.3.linux-amd64.tar.gz
Если контрольные суммы совпадают, вы можете распаковать файлы.
tar xvf go1.4.3.linux-amd64.tar.gz
Флаг + x +
обозначает тракт e X , + v +
говорит + tar +
использовать V erbose output (т.е. для получения списка извлекаемых файлов), а + f +
позволяет нам указать псевдоним F .
Go 1.4 теперь распаковывается в каталог с именем + go +
, но скрипт сборки Go ищет бинарные файлы Go 1.4 в + ~ / go1.4 +
по умолчанию. Переименуйте каталог, используя команду + mv +
.
mv go go1.4
Теперь у вас есть необходимые зависимости для сборки Go из исходного кода. Если вы хотите переместить Go 1.4 из вашего домашнего каталога в другое место, вы можете выполнить следующий шаг. Если нет, вы можете перейти к шагу 4, чтобы клонировать источники Go.
Шаг 3 - Перемещение Go 1.4.3 (необязательно)
Когда скрипт сборки Go запускается, он ищет Go 1.4 на основе переменной окружения с именем + GOROOT_BOOTSTRAP +
. Если эта переменная не установлена, что по умолчанию, сценарий сборки будет считать, что каталог + go1.4 +
находится в вашем домашнем каталоге. Вы можете использовать переменную + GOROOT_BOOTSTRAP
, если вы хотите переместить Go 1.4 в другое место. Здесь мы переместим его в + / usr / local / go1.4 +
.
Сначала переместите сам каталог.
sudo mv go1.4
Затем вам нужно установить путь в вашей среде, изменив файл + ~ / .profile +
.
sudo nano ~/.profile
В конце файла добавьте следующую строку:
~ / .Profile
. . .
export GOROOT_BOOTSTRAP=go1.4
Сохраните файл и выйдите. Чтобы изменения вступили в силу, обновите свой профиль.
source ~/.profile
Далее вы будете клонировать исходники Go.
Шаг 4 - Получение Go источников
Рекомендуемое расположение для хранения двоичных файлов Go - + / usr / local +
, и это то, что мы будем использовать в этом руководстве. Тем не менее, вы можете хранить его где угодно.
Перейдите в + / usr / local +
и используйте Git для клонирования хранилища.
cd
sudo git clone https://go.googlesource.com/go
Нам нужно выполнить + git clone
с правами root, поскольку` + / usr / local` принадлежит * root *. Если вы клонируете Перейти в каталог, где у вашего пользователя есть права на запись, вы можете запустить эту команду без sudo.
После успешного завершения клона он создаст каталог + go +
в + / usr / local
. Переместитесь в этот каталог.
cd go
Перед сборкой нам нужно выбрать, какую версию Go мы хотим.
Шаг 5 - Выбор версии Go
Исходники Go имеют разные ветки Git для каждой доступной версии. Названия филиалов:
-
+ master +
для последней версии в разработке -
+ go +
для стабильных версий
Здесь мы будем использовать Go 1.7.4, что означает, что мы хотим использовать ветку + go1.7.4 +
.
Чтобы изменить ветки, используйте команду + git checkout +
. Вам необходимо запускать эти команды с правами суперпользователя, поскольку + / usr / local
и` + / usr / local / go 1.4 + `принадлежат * root *.
sudo git checkout
Выполнив этот шаг, вы загрузили исходный код Go предпочитаемой версии. Вы готовы перейти к ключевой части этого урока: сборка самого Go.
Шаг 6 - Строительство Go
Для сборки go вам необходимо выполнить скрипт bash + src / all.bash +
, который поставляется с исходным кодом. Сценарий проверит наличие всех необходимых зависимостей, выполнит несколько тестов и завершит сборку.
Выполните сценарий, но учтите, что если вы изменили расположение двоичных файлов Go 1.4.3, вам нужно будет добавить флаг + -E +
(т.е. + sudo -E bash. / all.bash +
) для сохранения переменных среды.
cd src
sudo bash ./all.bash
Сценарий займет короткое время, чтобы закончить. Как только сборка будет завершена, вы увидите следующий вывод:
Output of src/all.bashALL TESTS PASSED
---
Installed Go for linux/amd64 in /usr/local/go
Installed commands in /usr/local/go/bin
*** You need to add /usr/local/go/bin to your PATH.
Теперь, когда Go собран, вам нужно установить некоторые переменные окружения для него.
Шаг 7 - Установка переменных Go
Переменные среды являются мощным способом настройки установки Go. Мы пройдемся по самым важным и полезным.
Чтобы начать использовать Go, вам нужно добавить путь к двоичным файлам Go, + go / bin +
, в переменные окружения + PATH +
и + GOPATH +
. + GOPATH +
- это место, где хранятся код приложения и двоичные файлы Go, которые мы будем указывать как + ~ / work +
, хотя вы можете это настроить самостоятельно.
Добавьте эти переменные в файл + ~ / .profile
. Откройте его в вашем любимом текстовом редакторе:
nano ~/.profile
В конце файла добавьте следующие строки:
~ / .Profile
. . .
export GOPATH=
export PATH=$PATH:go/bin:$GOPATH/bin
Если вы установили Go по пути не по умолчанию, т.е. что-то другое, чем + / usr / local / go +
, вам нужно определить переменную + GOROOT +
. В этом случае добавьте также следующие строки:
~ / .Profile
export GOROOT=
export GOPATH=
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
Сохраните файл и выйдите. Чтобы эти изменения вступили в силу, обновите свой профиль.
source ~/.profile
После успешного завершения этого шага у вас будет полнофункциональная установка Go. Далее, мы проверим это, чтобы убедиться, что все работает как ожидалось.
Шаг 8 - Тестирование установки Go
Обычный способ проверить, что Go работает - это написать и запустить простое приложение «Hello, World».
Для этого сначала создадим и переместим в каталог для файлов приложения, основанный на вашем + GOPATH +
. Вы можете выбрать все, что вам нравится, в вашем пути Go, но в качестве примера мы настроим иерархию, которая вам понадобится, если вы https://github.com/golang/go/wiki/GithubCodeLayout[use GitHub управлять вашим кодом. Эта иерархия будет работать даже без учетной записи GitHub.
mkdir -p $GOPATH/src/github.com//test_project
cd $GOPATH/src/github.com//test_project
Затем создайте Go-файл «Hello, World» с именем + hello.go +
.
nano hello.go
Добавьте следующий код в файл:
hello.go
package main
import "fmt"
func main() {
fmt.Printf("Hello World!\n")
}
В этом примере используется пакет + fmt +
, который реализует функции ввода-вывода, такие как + Printf () +
, и определяет функцию + main () +
, которая будет печатать * Hello World * при запуске программы.
Сохраните его и выйдите из файла, затем скомпилируйте его с помощью команды Go + install
.
go install github.com//test_project
Когда компиляция завершится, вы можете запустить ее с помощью следующей команды:
hello
Вы увидите напечатанный на терминале * Hello World! *, Что означает, что ваша установка Go работает.
Шаг 9 - Изменение версий Go (необязательно)
Этот учебник создан Go 1.7.4. Если вы хотите использовать другую версию, вам нужно изменить активную ветку Git и пересобрать Go.
Чтобы проверить текущую версию Go, вы можете использовать + go version +
.
go version
Outputgo version go1.7.4 linux/amd64
В качестве примера, мы перейдем на версию Go до 1.6.4. Эта версия находится в ветке + go1.6.4 +
, так что переключитесь на нее.
cd /go
sudo git checkout
Чтобы убедиться, что все обновлено, запустите + git pull
, чтобы получить последние изменения для выбранной ветви.
sudo git pull origin
Теперь запустите скрипт сборки, как и прежде, убедившись, что добавили флаг + -E +
, если вы переместили Go 1.4 на шаге 3.
cd src
sudo bash ./all.bash
Это займет некоторое время, чтобы закончить. Когда сборка будет завершена, вы увидите следующий вывод:
Output of src/all.bashALL TESTS PASSED
---
Installed Go for linux/amd64 in /usr/local/go
Installed commands in /usr/local/go/bin
*** You need to add /usr/local/go/bin to your PATH.
У вас уже есть переменные Go, настроенные в + ~ / .profile
из шага 5, так что это все, что вам нужно сделать, чтобы изменить версии.
Заключение
Благодаря созданию исходных текстов и настройке путей у вас теперь есть отличная база для разработки и тестирования приложений Go или внесения вклада в базу кода Go.
Чтобы узнать больше, вы можете изучить how для начала работы с Go или https: // www. digitalocean.com/community/tutorials/how-to-use-martini-to-serve-go-applications-behind-an-nginx-server-on-ubuntu[how для обслуживания приложений Go с помощью Martini], который представляет собой сеть Go фреймворк. Если вы ищете вдохновение для участия в открытом исходном коде Go, вы можете прочитать о go-qemu и go-libvirt проекты.