Установка Go на Kali Linux
Описание
Для установки актуальной 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, путь к исполняемому файлу и файл, в который добавлен 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 version
command -v go
Номер версии у вас может отличаться: команды скачивают актуальную stable-версию на момент запуска.
Что делают команды
- Устанавливают
curl,jqиca-certificatesдля загрузки файлов и обработки JSON. - Получают сведения о релизах Go и выбирают архив для
amd64,arm64илиarmv6l. Для другой архитектуры выполнение прекращается. - Скачивают архив с официального сайта и проверяют его контрольную сумму. При несовпадении SHA-256 установка не продолжается.
- Заменяют прежнее содержимое
/usr/local/goи распаковывают новую версию. - Добавляют пути в файл настроек оболочки и сразу применяют их в текущем терминале.
В 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.
Войдите, чтобы оценить заметку или добавить её в закладки.
По всем вопросам (технические, личные или по содержанию заметок) обращайтесь в бота поддержки или на почту iam@kgmnotes.ru.