Установка Go на Kali Linux

6 мин 2026-10-02

Описание

Для установки актуальной stable-версии Go на Kali Linux можно скачать официальный архив, проверить его SHA-256 и добавить необходимые каталоги в PATH.

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

Установка

Откройте терминал Kali, скопируйте блок ниже и выполните команды. Создавать отдельный файл не нужно.

Когда sudo запросит пароль, введите пароль своей учётной записи и нажмите Enter. При вводе пароля символы не отображаются — это нормально.

Важно

Команды удаляют прежнюю установку из /usr/local/go и заменяют её новой. Если вы храните в этом каталоге собственные файлы, предварительно сохраните их. Не меняйте путь в команде удаления на другой каталог.

set -euo pipefail

# Обновляем пакеты и устанавливаем зависимости
sudo apt update
sudo apt install -y curl jq ca-certificates

# Получаем информацию о последних версиях Go
GO_JSON="$(curl -fsSL 'https://go.dev/dl/?mode=json')"

# Последняя stable-версия
LATEST_VERSION="$(jq -r '.[0].version' <<< "$GO_JSON")"

# Определяем архитектуру
case "$(uname -m)" in
    x86_64)
        GOARCH="amd64"
        ;;
    aarch64|arm64)
        GOARCH="arm64"
        ;;
    armv7l|armv6l)
        GOARCH="armv6l"
        ;;
    *)
        echo "Неподдерживаемая архитектура: $(uname -m)"
        exit 1
        ;;
esac

FILENAME="${LATEST_VERSION}.linux-${GOARCH}.tar.gz"

# Получаем официальный SHA-256
SHA256="$(
    jq -r --arg filename "$FILENAME" \
    '.[] | .files[] | select(.filename == $filename) | .sha256' \
    <<< "$GO_JSON"
)"

if [[ -z "$SHA256" || "$SHA256" == "null" ]]; then
    echo "Не удалось получить SHA-256 для ${FILENAME}"
    exit 1
fi

echo "Устанавливаем ${LATEST_VERSION} для linux/${GOARCH}"

# Скачиваем Go
curl -fL \
    "https://go.dev/dl/${FILENAME}" \
    -o "/tmp/${FILENAME}"

# Проверяем целостность архива
echo "${SHA256}  /tmp/${FILENAME}" | sha256sum -c -

# Удаляем старую версию
sudo rm -rf /usr/local/go

# Устанавливаем новую
sudo tar -C /usr/local -xzf "/tmp/${FILENAME}"

# Удаляем архив
rm -f "/tmp/${FILENAME}"

# PATH
PATH_LINE='export PATH="/usr/local/go/bin:$HOME/go/bin:$HOME/.pdtm/go/bin:$PATH"'

# Kali обычно использует zsh
if [[ "${SHELL:-}" == */zsh ]]; then
    RC_FILE="$HOME/.zshrc"
else
    RC_FILE="$HOME/.profile"
fi

touch "$RC_FILE"

# Не добавляем строку повторно
grep -qxF "$PATH_LINE" "$RC_FILE" || echo "$PATH_LINE" >> "$RC_FILE"

# PATH для текущего процесса
export PATH="/usr/local/go/bin:$HOME/go/bin:$HOME/.pdtm/go/bin:$PATH"

echo
echo "Go успешно установлен:"
go version

echo
echo "Путь к Go:"
command -v go

echo
echo "PATH добавлен в: $RC_FILE"

Во время выполнения обновляется список пакетов, устанавливаются зависимости и скачивается архив Go:

go-kali-install-process.png

Проверка результата

В конце выполнения команд выводятся версия Go, путь к исполняемому файлу и файл, в который добавлен PATH.

На моём скриншоте установилась версия Go 1.27.1 для linux/amd64:

Go успешно установлен:
go version go1.27.1 linux/amd64

Путь к Go:
/usr/local/go/bin/go

PATH добавлен в: /home/kali/.zshrc

go-kali-install-result.png

Проверку можно повторить в этом же терминале:

go version
command -v go

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

Что делают команды

  1. Устанавливают curl, jq и ca-certificates для загрузки файлов и обработки JSON.
  2. Получают сведения о релизах Go и выбирают архив для amd64, arm64 или armv6l. Для другой архитектуры выполнение прекращается.
  3. Скачивают архив с официального сайта и проверяют его контрольную сумму. При несовпадении SHA-256 установка не продолжается.
  4. Заменяют прежнее содержимое /usr/local/go и распаковывают новую версию.
  5. Добавляют пути в файл настроек оболочки и сразу применяют их в текущем терминале.

В PATH добавляются три каталога:

Каталог Назначение
/usr/local/go/bin Сам Go: команды go и gofmt.
$HOME/go/bin Утилиты, устанавливаемые через go install, при стандартных настройках GOPATH и GOBIN.
$HOME/.pdtm/go/bin Go-утилиты ProjectDiscovery при использовании pdtm.

Важные моменты

  • В Kali обычно используется Zsh, поэтому строка с PATH записывается в ~/.zshrc. Если $SHELL не указывает на Zsh, команды используют ~/.profile.
  • Поскольку команды выполняются непосредственно в терминале, export PATH=… действует сразу. В новых вкладках Zsh пути загрузятся из ~/.zshrc; для другой оболочки важно, чтобы её режим запуска читал ~/.profile.
  • Одинаковая строка PATH не добавляется в файл повторно. Если там уже есть другая строка с путями Go, она остаётся без изменений.
  • set -euo pipefail включает строгий режим текущей оболочки. При ошибке выполнение может прерваться, а терминальная сессия — завершиться. Не продолжайте установку вручную после ошибки проверки архива.
  • Эти команды устанавливают Go, но не pdtm и не утилиты ProjectDiscovery — для них только добавляется каталог в PATH.