Введение / Зачем это нужно
Go (Golang) — современный компилируемый язык, созданный Google для эффективной разработки сетевых сервисов и утилит. Настройка среды разработки на Linux — обязательный первый шаг для работы с Go. После выполнения этого гайда у вас будет полностью рабочая среда: установлен компилятор, настроены пути и вы сможете создавать, собирать и запускать Go-проекты.
Вы получите:
- Установленный компилятор
goв терминале - Настроенные переменные окружения
GOROOT,GOPATH,PATH - Возможность использовать
go get,go build,go run - Готовую структуру для проектов (если настроите GOPATH)
Требования / Подготовка
Перед началом убедитесь, что:
- У вас есть доступ к терминалу Linux (Ubuntu, Debian, Fedora, Arch или другой).
- Установлены базовые утилиты:
curlилиwget,tar. - Есть права sudo (если планируете установку в системные директории).
- Определите архитектуру вашей системы:
uname -mx86_64→amd64aarch64→arm64
Шаг 1: Проверка наличия Go и архитектуры системы
Сначала проверим, не установлен ли уже Go, и определим архитектуру.
# Проверка установленного Go (если есть)
go version
# Определение архитектуры
uname -m
Если команда go version выводит версию (например, go version go1.20 linux/amd64), Go уже установлен. Вы можете перейти к Шагу 5 для проверки переменных окружения или удалить старую версию перед установкой новой.
Шаг 2: Выбор способа установки
Есть два основных варианта:
| Способ | Плюсы | Минусы | Когда выбирать |
|---|---|---|---|
Через менеджер пакетов (apt, dnf, pacman) | Просто, автоматически в PATH, обновления через систему | Версия часто не самая новая | Для быстрой установки, если актуальная версия не критична |
| С официального сайта (golang.org/dl) | Последняя стабильная версия, контроль над расположением | Требует ручной настройки PATH | Для разработки, когда нужны новые фичи или точная версия |
Рекомендация: Если вы начинаете новый проект или хотите использовать Go Modules (современный стандарт), выбирайте установку с официального сайта.
Шаг 3: Установка через менеджер пакетов
Для Ubuntu/Debian:
# Обновление кэша пакетов
sudo apt update
# Установка Go
sudo apt install golang
# Проверка версии (должна быть, например, 1.18+ в современных репозиториях)
go version
Для Fedora/RHEL/CentOS:
sudo dnf install golang
go version
Для Arch Linux:
sudo pacman -S go
go version
Примечание: В некоторых дистрибутивах пакет называется golang или go. После установки через менеджер пакетов переменные окружения обычно настраиваются автоматически. Переходите к Шагу 5.
Шаг 4: Установка с официального сайта (ручная)
Этот способ даёт вам последнюю версию и полный контроль.
- Перейдите на страницу загрузок (можно сделать через терминал):
# Для amd64 wget https://go.dev/dl/go1.21.6.linux-amd64.tar.gz # Для arm64 wget https://go.dev/dl/go1.21.6.linux-arm64.tar.gz
Актуальную версию уточните на golang.org/dl. - Удалите старую версию (если была установлена в /usr/local/go):
sudo rm -rf /usr/local/go - Распакуйте архив в /usr/local (требует sudo):
sudo tar -C /usr/local -xzf go1.21.6.linux-amd64.tar.gz - Убедитесь, что Go добавлен в PATH. Добавьте строки в
~/.bashrc(или~/.zshrcдля zsh):# Откройте файл в редакторе nano ~/.bashrc
Добавьте в конец:export GOROOT=/usr/local/go export PATH=$PATH:$GOROOT/bin export GOPATH=$HOME/go export PATH=$PATH:$GOPATH/bin💡 Совет: Если вы не хотите устанавливать в системную директорию, распакуйте архив в
~/goили~/local/goи укажите соответствующийGOROOT. - Примените изменения:
source ~/.bashrc
Шаг 5: Настройка переменных окружения (если не сделали ранее)
Даже при установке через менеджер пакетов стоит проверить/настроть GOPATH.
- Проверьте текущие переменные:
go env - Убедитесь, что GOPATH указан. Если вывод
GOPATH="", добавьте в~/.bashrc:export GOPATH=$HOME/go export PATH=$PATH:$GOPATH/bin - Создайте директорию для проектов (если её нет):
mkdir -p $GOPATH/{src,bin,pkg} - Перезагрузите оболочку:
source ~/.bashrc
Шаг 6: Проверка результата
Выполните команды для полной проверки:
# 1. Проверка версии Go
go version
# Ожидаемый вывод: go version go1.21.6 linux/amd64
# 2. Проверка переменных окружения
go env GOROOT GOPATH PATH
# GOROOT должен указывать на /usr/local/go (или вашу директорию)
# GOPATH должен указывать на /home/ваш_пользователь/go
# 3. Простой тестовый проект
mkdir -p $GOPATH/src/hello
cat > $GOPATH/src/hello/main.go << 'EOF'
package main
import "fmt"
func main() {
fmt.Println("Hello, FixPedia!")
}
EOF
# 4. Запуск
go run $GOPATH/src/hello/main.go
# Должен вывести: Hello, FixPedia!
# 5. Сборка бинарника
go build -o $GOPATH/bin/hello $GOPATH/src/hello/main.go
hello
# Должен вывести: Hello, FixPedia!
Если все шаги прошли успешно — среда готова к работе.
Возможные проблемы
❌ go: command not found
Причина: Go не добавлен в PATH.
Решение:
- Проверьте, что в
~/.bashrc(или~/.zshrc) есть строкаexport PATH=$PATH:/usr/local/go/bin. - Выполните
source ~/.bashrcили перезайдите в терминал.
❌ Ошибка доступа при распаковке в /usr/local
Причина: Недостаточно прав.
Решение: Используйте sudo для распаковки или установите Go в домашнюю директорию (~/go).
❌ go env показывает пустой GOPATH
Причина: Переменная не задана.
Решение: Добавьте export GOPATH=$HOME/go в ~/.bashrc и перезагрузите оболочку.
❌ Устаревшая версия в репозитории дистрибутива
Причина: Репозитории Linux часто содержат стабильные, но не самые свежие версии. Решение: Установите с официального сайта (см. Шаг 4).
❌ Конфликт версий Go
Причина: В системе несколько версий Go, и go указывает на нежелательную.
Решение: Проверьте which go и ls -l $(which go). Удалите лишние версии или измените порядок в PATH.
Продвинутые настройки (опционально)
Настройка модулей (Go Modules)
Начиная с Go 1.11, модули — стандарт для управления зависимостями. Убедитесь, что включены:
go env -w GO111MODULE=on
Настройка прокси для модулей (если нужен доступ в РФ/Китай)
go env -w GOPROXY=https://goproxy.cn,direct
Автодополнение для bash/zsh
Установите плагин для автодополнения команд go:
# Для bash
go install golang.org/x/tools/cmd/godoc@latest
echo "source <(godoc -completion)" >> ~/.bashrc
Заключительная проверка
После настройки выполните полный цикл работы:
- Создайте новый модуль:
mkdir ~/projects/myapp && cd ~/projects/myapp go mod init github.com/username/myapp - Добавьте простой код:
cat > main.go << 'EOF' package main import "fmt" func main() { fmt.Println("Go is ready!") } EOF - Соберите и запустите:
go build -o myapp . ./myapp
Если вы видите Go is ready!, — поздравляем, среда полностью работоспособна!
Что дальше?
- Изучите официальный туториал
- Настройте IDE (VS Code с расширением Go, Goland)
- Освойте Go Modules для управления зависимостями