Tutorial

Установка Go и настройка локальной среды программирования в Ubuntu 18.04

Published on January 24, 2020
Русский
Установка Go и настройка локальной среды программирования в Ubuntu 18.04

Введение

Go — это язык программирования, созданный Google в результате разочарования в других языках. Разработчикам постоянно приходилось выбирать между эффективным языком программирования с очень длительным временем компиляции и удобным языком программирования, не отличающимся эффективностью в производственной среде. Язык Go был разработан, чтобы одновременно обеспечить все три преимущества: высокую скорость компиляции, удобство программирования и эффективное исполнение в производственной среде.

Go — это универсальный язык программирования, который можно использовать для самых разнообразных проектов. Он особенно хорошо подходит для сетевых программ и распределенных систем и заработал себе репутацию «языка облака». Он дает современным программистам больше возможностей благодаря мощному набору инструментов, позволяет устранить разногласия по поводу форматирования, делая формат частью спецификации языка, а также упрощает развертывание за счет компиляции в единый двоичный файл. Язык Go очень прост в изучении и имеет небольшой набор ключевых слов, что делает его идеальным вариантом как для начинающих, так и для опытных программистов.

В этом руководстве вы научитесь устанавливать и настраивать рабочее пространство программирования Go с помощью командной строки. В этом руководстве описывается процедура установки в Ubuntu 18.04, однако общие принципы могут применяться и для других дистрибутивов Debian Linux.

Предварительные требования

Вам потребуется компьютер или виртуальная машина с установленной операционной системой Ubuntu 18.04, а также административный доступ к этой машине и подключение к Интернету. Вы можете загрузить эту операционную систему через страницу релизов Ubuntu 18.04.

Шаг 1 — Установка Go

На этом шаге вы выполните установку Go посредством загрузки текущего выпуска с официальной страницы загрузки Go.

Для этого нужно найти URL для текущего файла тар-архива двоичного релиза. Также вам может понадобиться записать хэш SHA256, поскольку вы будете использовать его для проверки загруженного файла.

Основную часть установки и настройки вы будете выполнять через командную строку — текстовый интерфейс взаимодействия с компьютером. Вместо нажатия на кнопки вы вводите текст и получаете от компьютера обратную связь в текстовом формате.

Командная строка, также называемая оболочка или терминал, помогает изменять и автоматизировать многие повседневные задачи, выполняемые на компьютерах каждый день. Это необходимый и очень важный инструмент для разработчиков программного обеспечения. Существует много других разнообразных команд терминала, с помощью которых вы можете выполнять множество различных задач. Дополнительную информацию об интерфейсе командной строки можно найти в руководстве Введение в терминал Linux.

В Ubuntu 18.04 вы можете найти приложение терминала, нажав значок Ubuntu в верхнем левом углу экрана и введя terminal в панель поиска. Нажмите на значок приложения терминала, чтобы открыть его. Также вы можете нажать клавиши CTRL, ALT и T на клавиатуре, чтобы открыть приложение терминала автоматически.

Терминал Ubuntu

После открытия терминала двоичные файлы Go нужно установить вручную. Вы можете использовать диспетчер пакетов, например apt-get, но ручная установка поможет понять, какие изменения нужно внести в конфигурацию системы для создания действующего рабочего пространства Go.

Прежде чем загружать Go, необходимо перейти в домашнюю директорию (~):

  1. cd ~

Используйте команду curl для получения URL тар-архива файла, скопированного с официальной страницы загрузки Go:

  1. curl -O https://dl.google.com/go/go1.12.1.linux-amd64.tar.gz

Используйте sha256sum для проверки тар-архива файла:

  1. sha256sum go1.12.1.linux-amd64.tar.gz

Отображаемая при выполнении этой команды хэш-сумма должна соответствовать указанной на странице загрузок. Несоответствие означает, что файл неверный и что его нужно загрузить снова.

Output
2a3fdabf665496a0db5f41ec6af7a9b15a49fbe71a85a50ca38b1f13a103aeec go1.12.1.linux-amd64.tar.gz

Извлеките загруженный архив и установите его в желаемую часть системы. Лучше всего хранить его в директории /usr/local:

  1. sudo tar -xvf go1.12.1.linux-amd64.tar.gz -C /usr/local

Теперь директория go должна располагаться внутри директории /usr/local. Рекурсивно измените владельца и группу этой директории на root:

  1. sudo chown -R root:root /usr/local/go

Так все файлы будут защищены, и только пользователь root сможет запускать двоичные файлы Go.

Примечание. Хотя /usr/local/go — официально рекомендованная директория, некоторым пользователям может потребоваться использовать другой путь.

На этом шаге вы загрузили и установили Go на компьютер под управлением Ubuntu 18.04. На следующем шаге вы выполните настройку рабочего пространства Go.

Шаг 2 — Создание рабочего пространства Go

После установки Go вы можете создать рабочее пространство для программирования. На корневом уровне рабочего пространства Go имеются две директории:

  • src: это директория с исходными файлами Go. Исходный файл или файл исходного кода — это файл, который вы пишете на языке программирования Go. Компилятор Go использует исходные файлы для создания исполняемого двоичного файла.
  • bin: директория, содержащая исполняемые файлы, которые были созданы и установлены инструментами Go. Исполняемые файлы — это двоичные файлы, которые запускаются в системе и выполняют задачи. Обычно это программы, скомпилированные из вашего исходного кода или из другого загруженного исходного кода Go.

Субдиректория src может содержать несколько репозиториев контроля версий (например, Git, Mercurial и Bazaar). Это обеспечивает канонический импорт кода в ваш проект. Канонический импорт — это операция импорта, которая ссылается на полностью квалифицированный пакет, например github.com/digitalocean/godo.

При импорте сторонних двоичных файлов вашей программой вы увидите директорию github.com, golang.org или другую директорию, откуда ваша программа импортирует сторонние библиотеки. Если вы используете репозиторий кода, например github.com, вы также помещаете в эту директорию свои проекты и файлы исходного кода. Мы изучим эту концепцию на следующем шаге.

Вот так выглядит типичное рабочее пространство:

.
├── bin
│   ├── buffalo                                      # command executable
│   ├── dlv                                          # command executable
│   └── packr                                        # command executable
└── src
    └── github.com
        └── digitalocean
            └── godo
                ├── .git                            # Git repository metadata
                ├── account.go                      # package source
                ├── account_test.go                 # test source
                ├── ...
                ├── timestamp.go
                ├── timestamp_test.go
                └── util
                    ├── droplet.go
                    └── droplet_test.go

Директория по умолчанию рабочего пространства Go в версии 1.8 совпадает с домашней директорией вашего пользователя с субдиректорией go или имеет адрес $HOME/go. Если вы используете версию Go ниже 1.8, лучше всего использовать для рабочего пространства адрес $HOME/go.

Введите следующую команду для создания структуры директорий рабочего пространства Go:

  1. mkdir -p $HOME/go/{bin,src}

Опция -p предписывает команде mkdir создать в директории все родительские элементы, даже если их еще не существует. При использовании параметров {bin,src} для команды mkdir создается набор аргументов, предписывающий ей создать директорию bin и директорию src.

Таким образом, обеспечивается размещение следующей структуры директорий:

└── $HOME
    └── go
        ├── bin
        └── src

До выпуска версии Go 1.8 обязательно было создавать локальную переменную среды с именем $GOPATH. $GOPATH указывает компилятору, где находится импортированный сторонний исходный код, а также написанный вами локальный исходный код. Хотя это больше явно не требуется, создать такую переменную все равно полезно, поскольку многие сторонние инструменты зависят от ее использования.

Вы можете задать $GOPATH, добавив глобальные переменные в ваш ~/.profile. Также вы можете добавить ее в файл .zshrc или .bashrc в соответствии с конфигурацией оболочки.

Откройте файл ~/.profile с помощью nano или другого предпочитаемого текстового редактора:

  1. nano ~/.profile

Чтобы задать переменную $GOPATH, добавьте в файл следующую строку:

~/.profile
export GOPATH=$HOME/go

При компиляции и установке инструментов Go помещает их в директорию $GOPATH/bin. Для удобства субдиректория /bin рабочего пространства обычно добавляется в переменную PATH в файле ~/.profile:

~/.profile
export PATH=$PATH:$GOPATH/bin

Это позволит запускать любые компилируемые или загружаемые программы через инструменты Go в любом месте в вашей системе.

Наконец, вам нужно добавить двоичный файл go в PATH. Для этого добавьте /usr/local/go/bin в конец строки:

~/.profile
export PATH=$PATH:$GOPATH/bin:/usr/local/go/bin

Добавление /usr/local/go/bin в переменную $PATH делает все инструменты Go доступными в любом месте в вашей системе.

Чтобы обновить оболочку, запустите следующую команду для загрузки глобальных переменных:

  1. . ~/.profile

Вы можете проверить обновление переменной $PATH, запустив команду echo и просмотрев результаты:

  1. echo $PATH

Вы увидите директорию $GOPATH/bin в своей домашней директории. Если вы вошли в систему с именем пользователя root, вы увидите /root/go/bin в составе пути.

Output
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/root/go/bin:/usr/local/go/bin

Также вы увидите путь к инструментам Go для /usr/local/go/bin:

Output
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/root/go/bin:/usr/local/go/bin

Для проверки установки проверьте текущую версию Go:

  1. go version

Результат должен выглядеть следующим образом:

Output
go version go1.12.1 linux/amd64

Вы создали корневую директорию рабочего пространства и задали переменную среды $GOPATH. Теперь вы сможете создавать будущие проекты со следующей структурой директорий. В этом примере предполагается, что вы используете github.com в качестве репозитория:

$GOPATH/src/github.com/username/project

Например, если вы работаете над проектом https://github.com/digitalocean/godo, он будет сохранен в следующей директории:

$GOPATH/src/github.com/digitalocean/godo

При такой структуре проекты доступны с помощью инструмента go get. Также она делает проекты удобнее для чтения. Для проверки вы можете использовать команду go get для доставки библиотеки godo:

  1. go get github.com/digitalocean/godo

При этом будет загружено содержимое библиотеки godo, и на компьютере будет создана директория $GOPATH/src/github.com/digitalocean/godo.

Можно проверить успешную загрузку пакета godo посредством вывода директории:

  1. ll $GOPATH/src/github.com/digitalocean/godo

Результат должен выглядеть примерно следующим образом:

Output
drwxr-xr-x 4 root root 4096 Apr 5 00:43 ./ drwxr-xr-x 3 root root 4096 Apr 5 00:43 ../ drwxr-xr-x 8 root root 4096 Apr 5 00:43 .git/ -rwxr-xr-x 1 root root 8 Apr 5 00:43 .gitignore* -rw-r--r-- 1 root root 61 Apr 5 00:43 .travis.yml -rw-r--r-- 1 root root 2808 Apr 5 00:43 CHANGELOG.md -rw-r--r-- 1 root root 1851 Apr 5 00:43 CONTRIBUTING.md . . . -rw-r--r-- 1 root root 4893 Apr 5 00:43 vpcs.go -rw-r--r-- 1 root root 4091 Apr 5 00:43 vpcs_test.go

На этом шаге вы создали рабочее пространство Go и настроили необходимые переменные среды. На следующем шаге мы протестируем рабочее пространство, запустив в нем код.

Шаг 3 — Создание простой программы

Мы настроили рабочее пространство Go и теперь можем создать программу “Hello, World!” Так вы убедитесь, что ваше рабочее пространство настроено правильно, и сможете лучше познакомиться с Go. Поскольку мы создаем один исходный файл Go, а не фактический проект, нам не нужно находиться в рабочем пространстве.

Откройте в домашней директории редактор nano или другой текстовый редактор командной строки, и создайте новый файл:

  1. nano hello.go

Запишите свою программу в новый файл:

package main

import "fmt"

func main() {
	fmt.Println("Hello, World!")
}

Этот код использует пакет fmt и вызывает функцию Println с Hello, World! в качестве аргумента. В результате фраза Hello, World! распечатывается на терминале при запуске программы.

Закройте nano с помощью клавиш CTRL и X. Когда вам будет предложено сохранить файл, нажмите Y и затем ENTER.

После выхода из nano и возврата в оболочку запустите программу:

go run hello.go

Программа hello.go выведет на терминал следующий результат:

Output
Hello, World!

На этом шаге вы использовали простую программу для подтверждения правильности настройки рабочего пространства Go.

Заключение

Поздравляем! Вы настроили рабочее пространство программирования Go на своем локальном компьютере Ubuntu и теперь можете начинать проект по программированию.

Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.

Learn more about our products

About the authors


Still looking for an answer?

Ask a questionSearch for more help

Was this helpful?
 
1 Comments


This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

go get уже не поддерживается, статья не актуальна

Try DigitalOcean for free

Click below to sign up and get $200 of credit to try our products over 60 days!

Sign up

Join the Tech Talk
Success! Thank you! Please check your email for further details.

Please complete your information!

Featured on Community

Get our biweekly newsletter

Sign up for Infrastructure as a Newsletter.

Hollie's Hub for Good

Working on improving health and education, reducing inequality, and spurring economic growth? We'd like to help.

Become a contributor

Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.

Welcome to the developer cloud

DigitalOcean makes it simple to launch in the cloud and scale up as you grow — whether you're running one virtual machine or ten thousand.

Learn more