Установку Geth и Swarm в ОС Debian нужно выполнять из исходных текстов. При этом вначале нужно будет установить Go, а затем уже собственно Geth и Swarm.

На момент создания нашей книги была доступна версия Go 1.12.1. Заметим, что Geth и Swarm находятся в состоянии постоянного совершенствования. Не исключено, что к моменту, когда вы начнете работу над этой книгой, для них придется устанавливать новую версию Go.

Предварительная подготовка

Прежде всего обновите пакеты и установите необходимые утилиты:


>$ sudo apt-get update

>$ sudo apt-get upgrade

>$ apt-get install vim sudo git curl gcc mc


Если вы при установке ОС не добавили пользователю book возможность работы с командой sudo, сделайте это аналогично тому, как это было описано ранее для Ubuntu.

После этого можно переходить к установке Go и Geth.

Загрузка дистрибутива Go

Дистрибутивы Go различных версий и для различных платформ можно найти здесь: https://golang.org/dl/.

Прежде всего подключимся к нашему серверу (физическому или виртуальному) пользователем book и загрузим архив Go нужной версии:


>$ curl -O https://dl.google.com/go/go1.12.1.linux-amd64.tar.gz


Теперь, находясь в консоли с правами пользователя book, распаковываем загруженный архив в каталог /usr/local:


>$ sudo tar -C /usr/local -xzf go1.12.1.linux-amd64.tar.gz


У вас будет запрошен пароль пользователя book. Команда sudo необходима, так как обычному пользователю запрещена запись файлов в каталог /usr/local.

Установка переменных окружения

Далее мы создаем в домашнем каталоге пользователя book каталог go и устанавливаем переменные окружения:


>$ mkdir -p ~/go; echo "export GOPATH=$HOME/go" >> ~/.bashrc

>$ echo "export PATH=$PATH:$HOME/go/bin:/usr/local/go/bin" >> ~/.bashrc

>$ source ~/.bashrc


Проверяем, что переменные окружения установлены:


>$ printenv | grep go


>GOPATH=/root/go

>PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/root/go/bin:/usr/local/go/bin

Проверка версии Go

Прежде чем перейти собственно к установке Geth и Swarm, нужно проверить версию go:


>$ go version

>go version go1.12.1 linux/amd64


Если у вас версия 1.12.1, то все нормально. Но если ранее по каким-то причинам на вашем сервере была установлена старая версия go из репозитория, удаляем ее так:


>sudo apt-get remove golang-go

>sudo apt-get remove –auto-remove golang-go

Установка Geth и Swarm

Первым шагом загрузите исходный код Geth из репозитория на GitHub:


>$ mkdir -p $GOPATH/src/github.com/ethereum

>$ cd $GOPATH/src/github.com/ethereum

>$ git clone https://github.com/ethereum/go-ethereum

>$ cd go-ethereum

>$ git checkout master


>$ go get github.com/ethereum/go-ethereum


Далее запустите компиляцию клиента Geth и Swarm:


>go install -v ./cmd/geth

>go install -v ./cmd/swarm


Если при компиляции появились ошибки, попробуйте установить Go другой версии. Перед этим удалите все каталоги, созданные в процессе предыдущей установки.

Если же все хорошо, то осталось только проверить версию установленной Geth и Swarm:


>$ geth version

>Geth

>Version: 1.9.0-unstable

>Architecture: amd64

>Protocol Versions: [63 62]

>Network Id: 1

>Go Version: go1.12.1

>Operating System: linux

>GOPATH=/home/book/go

>GOROOT=/usr/local/go


>$ swarm version

>Swarm

>Version: 0.3.12-unstable

>Go Version: go1.12.1

>OS: linux


Как видите, были установлены нестабильные версии Geth и Swarm. С помощью whereis вы можете определить, в какой каталог была выполнена установка:


>$ whereis geth

>geth: /home/book/go/bin/geth


Чтобы установить стабильную версию, загрузите ее бинарный код с сайта https://geth.ethereum.org/downloads/. Затем извлеките из архива программу geth и скопируйте в отдельный каталог.