Home » Как установить Go на Ubuntu 24
Как установить Go на Ubuntu 24

Как установить Go на Ubuntu 24

Когда-то установка Go на Linux была не самой приятной задачей. Сегодня всё изменилось — процесс стал намного проще, особенно на Ubuntu 24. Если вы занимаетесь серверным администрированием, разрабатываете микросервисы или просто хотите попробовать один из самых быстрых языков программирования, то эта статья для вас. Разберём три способа установки Go: через apt, напрямую с официального сайта и с помощью менеджера версий. Рассмотрим плюсы и минусы каждого подхода, покажем практические примеры и дадим рекомендации для продакшена.

Зачем нужен Go на сервере?

Go — это не просто очередной язык программирования. Это инструмент, который Google создал специально для решения проблем масштабирования и производительности в серверной среде. Вот несколько причин, почему стоит обратить внимание на Go:

  • Скорость компиляции — проекты собираются за секунды, а не минуты
  • Статическая сборка — один исполняемый файл без зависимостей
  • Встроенная конкурентность — горутины позволяют легко писать высоконагруженные приложения
  • Кроссплатформенность — собираете на одной системе, запускаете на другой
  • Богатая стандартная библиотека — HTTP-сервер, JSON, криптография из коробки

Способ 1: Установка через apt (самый простой)

Начнём с самого простого способа — установки через системный пакетный менеджер. Это быстро и удобно, но есть нюансы.

sudo apt update
sudo apt install golang-go

Проверим, что установилось:

go version

Скорее всего, вы увидите что-то вроде:

go version go1.21.1 linux/amd64

Плюсы:

  • Быстрая установка в одну команду
  • Автоматические обновления через системный менеджер
  • Интеграция с системными пакетами

Минусы:

  • Версия может отставать от последней официальной
  • Ограниченная гибкость в выборе версии
  • Сложности с переключением между версиями

Способ 2: Установка с официального сайта (рекомендуется)

Для продакшена лучше использовать официальную версию прямо с сайта Go. Так вы получите самую свежую и стабильную версию.

Сначала удалим старую версию, если она есть:

sudo rm -rf /usr/local/go

Теперь скачаем последнюю версию. На момент написания статьи актуальная версия 1.21.5:

cd /tmp
wget https://go.dev/dl/go1.21.5.linux-amd64.tar.gz

Распаковываем в /usr/local:

sudo tar -C /usr/local -xzf go1.21.5.linux-amd64.tar.gz

Настраиваем переменные окружения. Добавляем в ~/.bashrc или ~/.zshrc:

export PATH=$PATH:/usr/local/go/bin
export GOPATH=$HOME/go
export GOROOT=/usr/local/go

Применяем изменения:

source ~/.bashrc

Проверяем установку:

go version
go env GOPATH
go env GOROOT

Способ 3: Использование менеджера версий g

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

Устанавливаем g:

curl -sSL https://git.io/g-install | sh -s

Или клонируем репозиторий:

git clone https://github.com/stefanmaric/g $HOME/.g
echo 'export PATH=$HOME/.g/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

Теперь можно легко устанавливать и переключать версии:

# Установить последнюю версию
g install latest

# Установить конкретную версию
g install 1.20.5

# Посмотреть доступные версии
g list-all

# Переключиться на другую версию
g use 1.20.5

Сравнение способов установки

Критерий apt Официальный сайт Менеджер g
Скорость установки Высокая Средняя Средняя
Актуальность версии Низкая Высокая Высокая
Управление версиями Сложное Ручное Простое
Подходит для продакшена Условно Да Да
Сложность настройки Минимальная Средняя Средняя

Первые шаги после установки

Создадим простой Hello World проект, чтобы убедиться, что всё работает:

mkdir -p $HOME/go/src/hello
cd $HOME/go/src/hello

Создаём файл main.go:

package main

import "fmt"

func main() {
    fmt.Println("Hello, Go on Ubuntu 24!")
}

Запускаем:

go run main.go

Собираем в исполняемый файл:

go build -o hello main.go
./hello

Настройка окружения для разработки

Для комфортной работы стоит настроить дополнительные инструменты:

# Устанавливаем полезные пакеты
go install golang.org/x/tools/gopls@latest
go install github.com/go-delve/delve/cmd/dlv@latest
go install golang.org/x/tools/cmd/goimports@latest

Настраиваем Git для Go модулей:

git config --global url."https://".insteadOf "git://"

Практические примеры использования

Простой HTTP-сервер

Создадим минимальный веб-сервер:

package main

import (
    "fmt"
    "log"
    "net/http"
)

func main() {
    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        fmt.Fprintf(w, "Hello from Go server on Ubuntu 24!")
    })
    
    log.Println("Server starting on :8080")
    log.Fatal(http.ListenAndServe(":8080", nil))
}

Запускаем:

go run server.go

Кроссплатформенная сборка

Одна из крутых фич Go — возможность собирать приложения для разных платформ:

# Для Windows
GOOS=windows GOARCH=amd64 go build -o app.exe main.go

# Для macOS
GOOS=darwin GOARCH=amd64 go build -o app-mac main.go

# Для ARM (например, Raspberry Pi)
GOOS=linux GOARCH=arm go build -o app-arm main.go

Автоматизация и скрипты

Go отлично подходит для написания системных утилит и скриптов автоматизации. Вот пример скрипта для мониторинга дискового пространства:

package main

import (
    "fmt"
    "log"
    "os/exec"
    "strconv"
    "strings"
)

func main() {
    cmd := exec.Command("df", "-h", "/")
    output, err := cmd.Output()
    if err != nil {
        log.Fatal(err)
    }
    
    lines := strings.Split(string(output), "\n")
    if len(lines) < 2 {
        log.Fatal("Unexpected df output")
    }
    
    fields := strings.Fields(lines[1])
    if len(fields) < 5 {
        log.Fatal("Unexpected df output format")
    }
    
    usedPercent := strings.TrimSuffix(fields[4], "%")
    used, err := strconv.Atoi(usedPercent)
    if err != nil {
        log.Fatal(err)
    }
    
    if used > 80 {
        fmt.Printf("WARNING: Disk usage is %d%%\n", used)
    } else {
        fmt.Printf("Disk usage is OK: %d%%\n", used)
    }
}

Интеграция с Docker

Go приложения идеально подходят для контейнеризации. Пример Dockerfile:

# Многоэтапная сборка
FROM golang:1.21-alpine AS builder

WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download

COPY . .
RUN go build -o main .

# Финальный образ
FROM alpine:latest
RUN apk --no-cache add ca-certificates
WORKDIR /root/

COPY --from=builder /app/main .
CMD ["./main"]

Полезные инструменты экосистемы

После установки Go стоит обратить внимание на эти инструменты:

  • gofmt — форматирование кода (входит в стандартную поставку)
  • golint — линтер для проверки стиля кода
  • go-swagger — генерация API документации
  • Buffalo — веб-фреймворк для быстрой разработки
  • Cobra — библиотека для создания CLI приложений

Сравнение с другими языками

Интересная статистика производительности Go в сравнении с другими языками:

Язык Время компиляции Размер исполняемого файла Потребление RAM Производительность
Go Очень быстро Средний Низкое Высокая
Python N/A Маленький Среднее Средняя
Java Медленно Большой Высокое Высокая
Node.js N/A Маленький Среднее Средняя

Типичные проблемы и их решения

Проблема: GOPATH не найден

Решение: Убедитесь, что переменные окружения правильно настроены. Проверьте командой go env.

Проблема: Не удается скачать пакеты

Решение: Настройте прокси для Go:

go env -w GOPROXY=https://proxy.golang.org,direct
go env -w GOSUMDB=sum.golang.org

Проблема: Конфликт версий

Решение: Используйте Go модули (go.mod) для управления зависимостями.

Мониторинг и профилирование

Go предоставляет отличные инструменты для профилирования прямо из коробки:

import _ "net/http/pprof"

// В main функции
go func() {
    log.Println(http.ListenAndServe("localhost:6060", nil))
}()

Теперь можно анализировать производительность:

go tool pprof http://localhost:6060/debug/pprof/profile

Деплой на VPS

Для деплоя Go приложений на продакшен понадобится надёжный VPS. Рекомендую обратить внимание на аренду VPS с предустановленной Ubuntu 24, где можно быстро развернуть Go окружение. Для высоконагруженных проектов стоит рассмотреть выделенные серверы.

Заключение и рекомендации

Go — это мощный инструмент для серверной разработки, который особенно хорошо подходит для микросервисов, API и системных утилит. Вот мои рекомендации:

  • Для изучения — используйте установку через apt
  • Для продакшена — устанавливайте с официального сайта
  • Для разработки — используйте менеджер версий g
  • Для команды — стандартизируйте версию через Docker

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

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

Полезные ссылки:


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

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

Leave a reply

Your email address will not be published. Required fields are marked