Как установить последнюю версию Go (Golang) на Ubuntu 22.04 LTS?
sudo apt update
sudo apt install golang-go
После этого `go version` показывает `go1.18.1 linux/amd64`. Это неприемлемо, так как многие современные библиотеки требуют версию 1.21+.
Пробовал добавлять PPA из интернета, но они часто устаревают или не работают. Подскажите, пожалуйста, надёжный способ установить самую свежую версию Go на Ubuntu, желательно с возможностью автоматического обновления. Также хотелось бы понять, как правильно настроить GOPATH и GOROOT, чтобы не было конфликтов, если я решу держать несколько версий.
ОС: Ubuntu 22.04 LTS, архитектура x86_64.
Заранее спасибо за помощь!
<<Правильный способ: установка через официальный бинарный дистрибутив
Самый надёжный и рекомендованный способ установки последней версии Go на Ubuntu — это скачивание официального архива с golang.org/dl. PPA-репозитории часто отстают или содержат нестабильные сборки, а apt из стандартного репозитория даёт устаревшую версию.
Пошаговая инструкция
- Удалите старую версию (если есть):
sudo apt remove --purge golang-go golang sudo rm -rf /usr/local/go /usr/lib/go - Скачайте последнюю версию: Зайдите на официальную страницу загрузок и скопируйте ссылку на архив для Linux (amd64). На момент написания это go1.22.4.linux-amd64.tar.gz.
wget https://go.dev/dl/go1.22.4.linux-amd64.tar.gz - Проверьте контрольную сумму (опционально, но рекомендуется):
sha256sum go1.22.4.linux-amd64.tar.gz # Сравните вывод с хешем на сайте golang.org - Распакуйте архив в /usr/local:
sudo tar -C /usr/local -xzf go1.22.4.linux-amd64.tar.gz - Настройте переменные окружения: Добавьте в файл
~/.profileили~/.bashrc:
Примените изменения:export GOROOT=/usr/local/go export GOPATH=$HOME/go export PATH=$GOPATH/bin:$GOROOT/bin:$PATHsource ~/.profile - Проверьте установку:
go version # Должно вывести: go version go1.22.4 linux/amd64
Объяснение переменных
GOROOT— путь к установленному Go (бинарники, стандартная библиотека).GOPATH— рабочее пространство для вашего кода и сторонних библиотек (по умолчанию$HOME/go).PATH— чтобы командыgoиgofmtбыли доступны из любого терминала.
Автоматическое обновление
Go не поддерживает автоматические обновления через менеджер пакетов. При выходе новой версии нужно повторять шаги 2-4. Для отслеживания обновлений можно использовать скрипт:
#!/bin/bash
# update_go.sh
LATEST=$(curl -s https://go.dev/VERSION?m=text | head -1)
CURRENT=$(go version | awk '{print $3}')
if [ "$LATEST" != "$CURRENT" ]; then
echo "Обновление до $LATEST..."
wget https://go.dev/dl/${LATEST}.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf ${LATEST}.linux-amd64.tar.gz
rm ${LATEST}.linux-amd64.tar.gz
fi
Работа с несколькими версиями
Если нужно держать несколько версий, используйте go install golang.org/dl/go1.21.0@latest и переключайтесь через go1.21.0 download. Или просто переименовывайте каталог /usr/local/go при переключении.
Важно: Не используйте sudo apt install golang — это сломает вашу ручную установку. Всегда проверяйте версию после обновления.
Альтернативный подход: использование snap-пакета
Если вы не хотите возиться с ручной установкой и предпочитаете автоматические обновления, можно использовать официальный snap-пакет от Canonical:
sudo snap install go --classic
Флаг --classic необходим, так как Go требует полного доступа к файловой системе для компиляции проектов.
Плюсы
- Автоматические обновления (snap сам проверяет и устанавливает новые версии).
- Изоляция от системы — не конфликтует с apt-пакетами.
- Всегда последняя стабильная версия (обычно обновляется в течение 1-2 дней после релиза).
Минусы
- Snap-пакеты запускаются с задержкой (монтирование squashfs-образа).
- Не подходит для серверных окружений, где важна минимальная задержка.
- Иногда возникают проблемы с правами доступа к проектам, расположенным вне домашней директории.
Настройка после установки
После установки через snap Go будет доступен по пути /snap/bin/go. Переменные окружения настраиваются так же, как в основном ответе:
export GOPATH=$HOME/go
export PATH=$GOPATH/bin:/snap/bin:$PATH
Обратите внимание: GOROOT в случае snap не нужен, так как Go лежит в изолированном окружении.
Проверка
go version
# Вывод: go version go1.22.4 linux/amd64
Если версия вас устраивает и вы готовы мириться с небольшим снижением производительности при первом запуске — это хороший вариант для разработки на локальной машине.