12 марта 2022

Как я свежую версию компилятора языка Go на Debian ставил.

 

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

Для установке компилятора понадобится система, на которой уже есть установленный компилятор. Он нужен, чтобы собрать программу godeb. Программу так же можно скачать в уже собранном виде по ссылке на странице репозитория Github.

Сборка программы производится командой:
go install gopkg.in/niemeyer/godeb.v1/cmd/godeb@latest
При этом надо учитывать, что без изменения исходного кода собирать программу под архитектуры, которые отличаются от amd64 и i386, нет смысла, потому что программа подразумевает установку компилятора только под них.
 
Итак, после получения исполняемого файла его надо скопировать на целевую машину. Если система на целевой машине относительно свежая, то программа скорее всего заработает без проблем, потому что ей не требуются никакие сторонние библиотеки.

После копирования на целевую машину можно попробовать получить список доступных версий компилятора:
./godeb list
...
1.17.2
1.17.3
1.17.4
1.17.5
1.17.6
1.17.7
1.17.8
1.18beta1
1.18beta2
1.18rc1
Из предложенных версий надо выбрать последнюю стабильную или конкретную версию, которая нужна. При этом надо учитывать, что все манипуляции будут происходить в текущем каталоге.
 
Установка выполняется примерно такой командой:
./godeb install 1.17.8
Программа скачает архив с нужной версией компилятора, преобразует его в deb-пакет и попытается его установить, используя "sudo" для повышения привилегий. В каталоге так же останется deb-пакет с выбранной версией компилятора.

Теперь о необходимых ручных доработках.

Чтобы компилятор мог нормально работать, ему нужно несколько переменных окружения и один каталог. Я просто создал каталог "go" в домашнем для этого. А для переменных создал файл "/etc/profile.d/golang.sh" с таким содержанием:
# Каталог с файлами компилятора
export GOROOT=/usr/local/go

# Каталог для исходников и собранных программ
export GOPATH=$HOME/go

# Добавление пути с компилятором в PATH
export PATH=${PATH}:${GOROOT}/bin

# Добавление пути с собранными программами в PATH
export PATH=${PATH}:${GOPATH}/bin

export CGO_ENABLED=1
После создания этого файла его надо запустить или перезапустить сессию.

Для проверки работоспособности установленного компилятора можно собрать "godeb" и убедиться, что по указанным путям появилась собранная программа.

-->