Как известно, Yggdrasil и Yggmail написаны на Go. Разработчики этих программ обычно используют возможности последней версии Go при написании кода, и такой код зачастую не компилируется на более ранних версиях Go. В связи с этим у некоторых пользователей могут возникнуть сложности с самостоятельной сборкой Yggdrasil, Yggmail и других программ, т.к., в репозиториях популярных дистрибутивов Linux обычно содержатся устаревшие версии Go.
Ниже кратко описано, как можно установить Go последней версии в Linux (установка под Windows, думаю, сложностей вызвать не должна).
Используем дистрибутив на базе Debian, в других дистрибутивах всё делается аналогично.
Во первых, стоит проверить, не установлена ли в системе уже какая-либо версия Go:
go version
Если установленная версия Go является устаревшей, удаляем её:
sudo apt remove golang
Если остались каталоги /usr/lib/go-1(x).* или /usr/lib/go, или /usr/local/go - их можно удалить. Например:
sudo rm-rf /usr/lib/go-1.13
Смотрим, какая версия Go присутствует в репозитории дистрибутива:
sudo apt update apt-cache search golang
или
sudo apt update apt-cache pkgnames golang
Информация о пакете:
apt-cache show golang-go
Если версия в репозитории дистрибутива устраивает, устанавливаем её:
sudo apt install golang-go
Если не устраивает, идем по адресу: https://golang.org/dl/, выбираем и скачиваем архив под свой дистрибутив. Например, для Raspbian 9.13 (RaspberryPi 3):
wget https://golang.org/dl/go1.17.1.linux-armv6l.tar.gz
Распаковываем каталог go и перемещаем его в /usr/local/
:
tar -xzf go1.17.1.linux-armv6l.tar.gz sudo mv go /usr/local/
Скачанный архив можно удалить:
rm go1.17.1.linux-armv6l.tar.gz
Далее, необходимо создать рабочий каталог go, в который вы будете собирать программы:
mkdir ~/go
И последнее: прописываем в профиль переменные среды окружения.
Открываем файл ~/.bashrc
или ~/.profile
и в конец файла дописываем:
export PATH=$PATH:/usr/local/go/bin export GOPATH=~/go
(если в файле уже были подобные строки, связанные с go, их можно удалить)
Далее, нужно перелогиниться в систему, чтобы отработали команды в .bashrc, либо выполнить:
source .bashrc
Проверяем:
go version
Должны увидеть установленную версию go.
go env
Должны увидеть все переменные среды окружения, связанные с go.
Всё, можно собирать пакеты из исходников самостоятельно.