Если ты разработчик или DevOps-инженер, работающий с микросервисами, контейнерами или облачными приложениями, Go (Golang) — это must-have в твоем инструментарии. В этой статье я, как опытный DevOps ментор, покажу тебе несколько способов установки Go на Ubuntu, объясню тонкости настройки и помогу избежать типичных ошибок.
Зачем устанавливать Go на Ubuntu?
Go — это компилируемый язык программирования от Google, который стал стандартом для cloud-native разработки. Его основные преимущества:
- Молниеносная компиляция
- Простая конкурентность с goroutines
- Статическая линковка (один бинарный файл)
- Идеален для Docker-контейнеров
- Используется в Kubernetes, Docker, Terraform
Подготовка системы Ubuntu
Перед установкой Go убедись, что твоя система Ubuntu обновлена:
sudo apt update
sudo apt upgrade -y
Метод 1: Установка Go из официального архива (рекомендуется)
Этот метод дает полный контроль над версией и является стандартом в индустрии.
Шаг 1: Определение последней версии Go
Сначала проверим актуальную версию на официальном сайте:
# Последняя стабильная версия (на момент написания)
LATEST_GO_VERSION="1.21.0"
# Или автоматически получаем версию (требуется curl и jq)
# LATEST_GO_VERSION=$(curl -s https://go.dev/VERSION?m=text | head -1)
Шаг 2: Скачивание и распаковка Go
# Удаляем старую версию, если была
sudo rm -rf /usr/local/go
# Скачиваем архив
wget https://go.dev/dl/go${LATEST_GO_VERSION}.linux-amd64.tar.gz
# Распаковываем в /usr/local
sudo tar -C /usr/local -xzf go${LATEST_GO_VERSION}.linux-amd64.tar.gz
# Очищаем за собой
rm go${LATEST_GO_VERSION}.linux-amd64.tar.gz
linux-amd64 на linux-arm64, если используешь ARM-процессор (например, на Mac M1 или Raspberry Pi).
Шаг 3: Настройка переменных окружения
Теперь нужно добавить Go в PATH и настроить GOPATH:
# Открываем файл конфигурации оболочки
# Для bash:
nano ~/.bashrc
# Для zsh:
# nano ~/.zshrc
Добавляем в конец файла:
# Go configuration
export PATH=$PATH:/usr/local/go/bin
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin
Применяем изменения:
source ~/.bashrc
# или source ~/.zshrc
Метод 2: Установка через apt (для быстрого старта)
Самый простой способ, но версия может быть не самой свежей:
sudo apt install golang-go -y
Метод 3: Установка через snap
Альтернативный способ с автоматическими обновлениями:
sudo snap install go --classic
Проверка установки Go
Убедимся, что Go установлен корректно:
# Проверяем версию
go version
# Проверяем окружение
go env
# Тестовый запуск
go run --version
Ожидаемый вывод для версии 1.21:
go version go1.21.0 linux/amd64
Создание первого проекта на Go
Давай создадим простой "Hello World" чтобы проверить всю цепочку:
# Создаем директорию проекта
mkdir -p ~/projects/hello-go
cd ~/projects/hello-go
# Инициализируем go модуль
go mod init hello-go
# Создаем main.go
cat > main.go << 'EOF'
package main
import "fmt"
func main() {
fmt.Println("Hello, Ubuntu! Go установлен успешно!")
}
EOF
Запускаем программу:
# Запуск напрямую
go run main.go
# Компиляция в бинарник
go build -o hello-app
# Запуск бинарника
./hello-app
Сравнение методов установки
| Метод | Преимущества | Недостатки | Когда использовать |
|---|---|---|---|
| Официальный архив | • Актуальная версия • Полный контроль • Стандарт в индустрии |
• Ручное обновление • Больше шагов |
Production, разработка |
| APT репозиторий | • Один команда • Интеграция с системой |
• Устаревшая версия • Меньше контроля |
Быстрое тестирование |
| Snap пакет | • Автообновления • Изоляция |
• Может быть медленнее • Нестандартный путь |
Desktop использование |
Настройка рабочего окружения Go
Для комфортной работы настрой следующие инструменты:
- GoLand или VS Code с плагином Go
- gopls — Language Server Protocol для Go
- delve — отладчик для Go
- staticcheck — линтер
# Установка полезных инструментов
go install golang.org/x/tools/gopls@latest
go install github.com/go-delve/delve/cmd/dlv@latest
go install honnef.co/go/tools/cmd/staticcheck@latest
Обновление Go до новой версии
Для обновления Go при установке через официальный архив:
# 1. Удаляем старую версию
sudo rm -rf /usr/local/go
# 2. Скачиваем новую (см. Метод 1)
# 3. Проверяем, что все работает
go version
Устранение распространенных проблем
Проблема: "go: command not found"
Решение:
# Проверяем, установлен ли Go
ls /usr/local/go/bin/go
# Если файл существует, проверяем PATH
echo $PATH
# Перезагружаем shell или выполняем
source ~/.bashrc
Проблема: Permission denied
# Даем права на выполнение
sudo chmod +x /usr/local/go/bin/go
# Или устанавливаем с правами sudo
sudo tar -C /usr/local -xzf go*.tar.gz
Часто задаваемые вопросы (FAQ)
Какой метод установки Go лучше для production-сервера?
Для production всегда используй установку из официального архива (Метод 1). Это дает контроль над версией, позволяет легко откатываться и соответствует best practices в индустрии.
Нужно ли настраивать GOPATH в современных версиях Go?
Начиная с Go 1.11, GOPATH не обязателен благодаря Go Modules. Однако его настройка все еще рекомендуется для совместимости со старыми инструментами и библиотеками.
Как установить несколько версий Go на одном компьютере?
Используй инструменты вроде gvm (Go Version Manager) или asdf с плагином Go. Они позволяют переключаться между версиями:
# Установка gvm
bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)
# Установка версии Go через gvm
gvm install go1.20
gvm use go1.20
Где хранятся скачанные Go модули?
По умолчанию в $GOPATH/pkg/mod. Если GOPATH не установлен, то в ~/go/pkg/mod. Можешь проверить командой go env GOMODCACHE.
Как полностью удалить Go с Ubuntu?
Для полного удаления:
# Для установки из архива
sudo rm -rf /usr/local/go
rm -rf ~/go
# Удаляем из PATH (редактируем ~/.bashrc или ~/.zshrc)
# Для apt
sudo apt remove --purge golang-go -y
# Для snap
sudo snap remove go
Дальнейшие шаги после установки
Теперь, когда Go установлен, рекомендую:
- Изучить Go Modules для управления зависимостями
- Настроить CI/CD пайплайн для Go-проектов
- Освоить тестирование с помощью встроенного testing пакета
- Изучить популярные фреймворки: Gin для веба, Cobra для CLI
- Оптимизировать Docker-образы для Go-приложений (мультистейдж сборка)
Пример Dockerfile для Go-приложения
# Stage 1: Build
FROM golang:1.21-alpine AS builder
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 GOOS=linux go build -o myapp .
# Stage 2: Runtime
FROM alpine:latest
RUN apk --no-cache add ca-certificates
WORKDIR /root/
COPY --from=builder /app/myapp .
EXPOSE 8080
CMD ["./myapp"]
Заключение
Установка Go на Ubuntu — это простой процесс, если понимать различия между методами. Для большинства случаев я рекомендую установку из официального архива: она дает контроль, актуальность и соответствует индустриальным стандартам.
Помни, что правильная установка — это только начало. Настройка окружения, изучение инструментов и best practices займет время, но результат того стоит. Go — это мощный инструмент в руках разработчика и DevOps-инженера, особенно в мире cloud-native приложений.
Теперь у тебя есть рабочая среда Go на Ubuntu. Время писать код! 🚀