Настройка нод майнера и делегата для работы в Голосе: рабочие конфиги и пояснения по установке

в прошлом году
71 в голос

Во время прошедших тестовых запусков сети Голоса у некоторых возникали проблемы с конфигурированием нод делегатов и нод для майнинга Голоса, поэтому делюсь своими рабочими конфигами для настройки нод (по отдельности для работы делегата и майнера) и небольшой инструкцией по сборке нод.

Компиляция программ из исходных кодов

Разработчики постарались максимально упростить процесс установки рабочей ноды, подготовив скрипт, автоматизирующий этот процесс. Но если у вас по какой-то причине появляются ошибки во время работы этого скрипта, можете попробовать установить ноду вручную, это не сложно.

Прежде всего, проверьте, что у вас подходящее серверное оборудование. Оптимальным вариантом будет Ubuntu 16.04 и 4 Gb оперативной памяти (больше - лучше, но и четырёх гигабайт вам должно хватить на несколько месяцев поддержки работы сети Голоса).

Я компилировал и на сервере всего с 2Gb оперативной памяти - в этом случае используйте опцию -DLOW_MEMORY_NODE=ON.

Устанавливаем необходимые библиотеки и зависимости:

sudo apt-get update
sudo apt-get install git cmake g++ python-dev autotools-dev libicu-dev build-essential libbz2-dev libboost-all-dev libssl-dev libncurses5-dev doxygen libreadline-dev dh-autoreconf screen
sudo

Скачиваем исходный код Голоса из официального репозитория:

git clone https://github.com/GolosChain/golos.git golos-14.2
cd golos-14.2
git submodule update --init --recursive

Генерируем файлы для управления сборкой:

cmake -DCMAKE_BUILD_TYPE=Release .

Если у вас мало памяти, как я уже писал, укажите это:

cmake -DCMAKE_BUILD_TYPE=Release -DLOW_MEMORY_NODE=ON .

И завершаем компиляцию (придётся подождать некоторое время):

make

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

cd
mkdir golos
cd golos

Запуск ноды прозводится командой:

/path/to/golos-14.2/programs/golosd/golosd

где /path/to/ - это путь в системе до папки golos-14.2 созданной на этапе скачивания исходного кода Голоса из официального репозитория.

Прежде чем запускать Голос, скопируйте в эту папку файл со снэпшотом сети:

cp /path/to/golos-14.2/programs/golosd/golosd/snapshot5392323.json .

И теперь можно запускать golosd:

/path/to/golos-14.2/programs/golosd/golosd

При первом запуске golosd создаст директорию witness_node_data_dir для хранения блокчейна. Прервите работу golosd и создайте (в любом текстовом редакторе, я использую nano) конфигурационный файл в этой директории:

nano witness_node_data_dir/config.ini

Конфигурационный файл для ноды майнера:

# Endpoint for P2P node to listen on
# p2p-endpoint = 

# Maxmimum number of incoming connections on P2P endpoint
# p2p-max-connections = 

# P2P nodes to connect to on startup (may specify multiple times)
# seed-node = 

seed-node = 95.85.13.229:4243
seed-node = 95.85.13.229:4243
seed-node = 95.85.33.35:4243
seed-node = 88.99.13.48:4243

# Pairs of [BLOCK_NUM,BLOCK_ID] that should be enforced as checkpoints.
# checkpoint = 

# Endpoint for websocket RPC to listen on
# rpc-endpoint = 

rpc-endpoint = 127.0.0.1:9090

# Endpoint for TLS websocket RPC to listen on
# rpc-tls-endpoint = 

# The TLS certificate file for this server
# server-pem = 

# Password for this certificate
# server-pem-password = 

# Block signing key to use for init witnesses, overrides genesis file
# dbg-init-key = 

# API user specification, may be specified multiple times
# api-user = 

# Set an API to be publicly available, may be specified multiple times
public-api = database_api login_api

# Plugin(s) to enable, may be specified multiple times
enable-plugin = witness account_history

# Defines a range of accounts to track as a json pair ["from","to"] [from,to)
# track-account-range = 

# RPC endpoint of a trusted validating node (required)
# trusted-node = 

# Track market history by grouping orders into buckets of equal size measured in seconds specified as a JSON array of numbers
bucket-size = [15,60,300,3600,86400]

# How far back in time to track history for each bucket size, measured in the number of buckets (default: 5760)
history-per-size = 5760

# Defines a range of accounts to private messages to/from as a json pair ["from","to"] [from,to)

# Enable block production, even if the chain is stale.
enable-stale-production = false

# Percent of witnesses (0-99) that must be participating in order to produce blocks
required-participation = false

# name of witness controlled by this node (e.g. initwitness )
# witness = 

witness = "alcotester"

# name of miner and its private key (e.g. ["account","WIF PRIVATE KEY"] )
# miner = 

miner = ["alcotester","5JGyvx65iLqRgX77Yzr2kDYqEoEwG3PhnxDJ2Nb97SbVb5CbGKs"]

# Number of threads to use for proof of work mining
# mining-threads = 

mining-threads = 2

# WIF PRIVATE KEY to be used by one or more witnesses or miners
# private-key = 

# Account creation fee to be voted on upon successful POW - Minimum fee is 100.000 STEEM (written as 100000)

miner-account-creation-fee = 3000

# Maximum block size (in bytes) to be voted on upon successful POW - Max block size must be between 128 KB and 750 MB
# miner-maximum-block-size = 

# SBD interest rate to be vote on upon successful POW - Default interest rate is 10% (written as 1000)
# miner-sbd-interest-rate = 

# declare an appender named "stderr" that writes messages to the console
[log.console_appender.stderr]
stream=std_error

# declare an appender named "p2p" that writes messages to p2p.log
[log.file_appender.p2p]
filename=logs/p2p/p2p.log
# filename can be absolute or relative to this config file

# route any messages logged to the default logger to the "stderr" logger we
# declared above, if they are info level are higher
[logger.default]
level=warn
appenders=stderr

# route messages sent to the "p2p" logger to the p2p appender declared above
[logger.p2p]
level=warn
appenders=p2p

mining-threads = 2 - количество ядер вашего CPU

Конфигурационный файл для ноды делегата:

# Endpoint for P2P node to listen on
# p2p-endpoint = 

# Maxmimum number of incoming connections on P2P endpoint
# p2p-max-connections = 

# P2P nodes to connect to on startup (may specify multiple times)
# seed-node = 

seed-node = 95.85.13.229:4243
seed-node = 146.185.148.114:4243
seed-node = 95.85.33.35:4243
seed-node = 88.99.13.48:4243

# Pairs of [BLOCK_NUM,BLOCK_ID] that should be enforced as checkpoints.
# checkpoint = 

# Endpoint for websocket RPC to listen on
rpc-endpoint =  127.0.0.1:9090

# Endpoint for TLS websocket RPC to listen on
# rpc-tls-endpoint = 

# The TLS certificate file for this server
# server-pem = 

# Password for this certificate
# server-pem-password = 

# Block signing key to use for init witnesses, overrides genesis file
# dbg-init-key = 

# API user specification, may be specified multiple times
# api-user = 

# Set an API to be publicly available, may be specified multiple times
# public-api = database_api login_api

# Plugin(s) to enable, may be specified multiple times

enable-plugin = witness
enable-plugin = account_history
enable-plugin = follow
enable-plugin = market_history
enable-plugin = private_message
enable-plugin = tags
public-api = database_api login_api market_history_api tags_api follow_api

# Defines a range of accounts to track as a json pair ["from","to"] [from,to)
# track-account-range = 

# RPC endpoint of a trusted validating node (required)
# trusted-node = 

# Track market history by grouping orders into buckets of equal size measured in seconds specified as a JSON array of numbers
bucket-size = [15,60,300,3600,86400]

# How far back in time to track history for each bucket size, measured in the number of buckets (default: 1000)
history-per-size = 1000

# Defines a range of accounts to private messages to/from as a json pair ["from","to"] [from,to)
# pm-account-range = 

# Enable block production, even if the chain is stale.
enable-stale-production = false

# Percent of witnesses (0-99) that must be participating in order to produce blocks
required-participation = false

# name of witness controlled by this node (e.g. initwitness )

witness = "primus"

# name of miner and its private key (e.g. ["account","WIF PRIVATE KEY"] )
# miner = 

# Number of threads to use for proof of work mining
# mining-threads = 

# WIF PRIVATE KEY to be used by one or more witnesses or miners

private-key = 5KeVwZewUmGsP8UzowRJdUNh1dCq7McweYJrPgokVsJiyRTCm6W

# Account creation fee to be voted on upon successful POW - Minimum fee is 100.000 STEEM (written as 100000)

miner-account-creation-fee = 3000

# Maximum block size (in bytes) to be voted on upon successful POW - Max block size must be between 128 KB and 750 MB
# miner-maximum-block-size = 

# SBD interest rate to be vote on upon successful POW - Default interest rate is 10% (written as 1000)
# miner-sbd-interest-rate = 

# declare an appender named "stderr" that writes messages to the console
[log.console_appender.stderr]
stream=std_error

# declare an appender named "p2p" that writes messages to p2p.log
[log.file_appender.p2p]
filename=logs/p2p/p2p.log
# filename can be absolute or relative to this config file

# route any messages logged to the default logger to the "stderr" logger we
# declared above, if they are info level are higher
[logger.default]
level=warn
appenders=stderr

# route messages sent to the "p2p" logger to the p2p appender declared above
[logger.p2p]
level=warn
appenders=p2p

Обратите внимание, что прежде, чем ваша нода делегата заработат и начнёт подписывать блоки, вам необходимо объявить себя делегатом в сети, если это не произошло автоматически, когда ваш аккаунт работал как PoW майнер.

Если вы хотите работать делегатом с аккаунта, перенесённого из снэпшота, вам нужно обявить себя делегатом (через cli_wallet):

update_witness primus " " "GLS7NHcdAPHKA7kBLoWXz4HTrJAnTGyAdNHRAtjzSLSykHHQ8Jxwq" {} true 
vote_for_witness primus primus true true

При этом указывается публичный ключ, соответсвующий приватному WIF, прописанному в конфигурационном файле ноды делегата.

И еще один момент - для объявления себя делегатом необходимо, чтобы у вас на аккаунте было достаточное количество GP. Если у вас еще нет GP на счету - подождите, когда они вам начислятся по результатам снэпшота (от полутора до 6 часов после старта сети).

Конфигурационные файлы готовы, используйте screen чтобы старовать Голос

Окончательно запускать golosd лучше через screen, чтобы он работал в фоновом режиме с возможностью в любой момент подключится к экрану вывода программы:

screen -dmS golosd /path/to/golos-14.2/programs/golosd/golosd

Подключение к экрану вывода программы

screen -x golosd

Выход из screen обратно в консоль сервера: Ctrl^A D

Запуск cli_wallet

Если использовать приведённые выше конфиги, то с запуском cli_wallet не должно быть проблем. Если же вы получаете ошибку:

2337101ms th_a       main.cpp:154                  main                 ] wdata.ws_server: ws://127.0.0.1:9090 
0 exception: unspecified
Underlying Transport Error
    {"message":"Underlying Transport Error"}
    asio  websocket.cpp:444 operator()

    {"uri":"ws://127.0.0.1:9090"}
    th_a  websocket.cpp:673 connect

проверьте, что в конфиге ноды (witness_node_data_dir/config.ini) у вас установлено rpc-endpoint = 127.0.0.1:9090

Для уверенности что клиент пытается содиниться с сервером golosd по правильному порту, стартуйте его с параметром командной строки:

cli_wallet --server-rpc-endpoint="ws://127.0.0.1:9090"

Полезные ссылки

Essential Guide to Becoming a Steem Witness

Список всех команд cli_wallet и их формат

API golosd с примерами команд

Надеюсь, у вас всё получилось по моей инструкции. Если есть дополнения, замечания или вопросы - спрашивайте в комментариях.

Удачной работы в Голосе!

Авторы получают вознаграждение, когда пользователи голосуют за их посты.
Голосующие читатели также получают вознаграждение за свой голос.
Порядок сортировки:  Популярное

Спасибо большое за подробную инструкцию, мне как раз не хватало информации

WOW! Спасибо за такую подробную инструкцию! ;)
Ребята! Наконец-то можно писать по-русски! Ура! Спасибо вам! :)

Спасибо Вам за проделанную работу!

Впечатляющая оперативность! :)

А есть возможность майнинга на виндовой машине?

·

Есть, только если бинарники самому собрать. Под Unix тоже не было готовых бинарников для продуктива - все сами собирали.

·
·

То есть только линуксоидам такое доступно? Или вам не выгодно чтобы было больше народа для майнинга и делегатов? Я думаю вы вкурсе какой процент пользователей виндовс. Так что рекомендую собрать бинарники для виндоусятников.

пrimus как всегда на высоте, жаль не видно тебя у нас в postcoin.

·

Публично обещаю вернуться - тем более что я на 100к+ вложился в PostCoin.

·
·

нескромный вопрос - а 100к это рублей?

41
  ·  в прошлом году

Удачной работы, @primus

Наконец то, Я очень рад! Добавляйтесь в друзья! Рами Малек особый привет!

60
  ·  в прошлом году

У меня проблема до сих пор, пост не могу отправить.
UPD: отправился с 4й попытки.

добро пожаловать к платформе @primus!

майнер пишет: "Exception binding outgoing connection to desired local endpoint 0.0.0.0:53494: bind: Address already in use" Что может быть?

·

Я так понимаю, что это не ошибка, а предупреждение (warning), т.е. не критическая проблема и всё должно работать. У меня было такое на одном тестовом сервере - на работоспособность майнера не влияло. Я поэтому не стал разбираться, в чём причина - подозреваю, что нужный порт был занят другим процессом.

Здорово что вы с нами, @primus
Спасибо за проделанную работу!

51
  ·  в прошлом году

На удивление уже активно майнят судя по очереди =)

А планируется или возможно где-то уже запущено нечто подобное https://steemd.com/ ?

·

Просто GPU майнеры со своим личным кодом и тут уже успели подсуетиться =(
Так что как и в steem тема майнига по сути закрыта - весь доход с него получает один человек.
Вот текущая очередь:
"penguin-08",
"gtx-1080-sc-0003",
"gtx-1080-sc-0062",
"penguin-15",
"gtx-1080-sc-0063",
"gtx-1080-sc-0064",
"gtx-1080-sc-0004",
"gtx-1080-sc-0005",
"penguin-16",
"gtx-1080-sc-0006",
"gtx-1080-sc-0007",
"gtx-1080-sc-0008",
"gtx-1080-sc-0009",
"gtx-1080-sc-0019",
"gtx-1080-sc-0020",
"penguin-17",
"gtx-1080-sc-0021",
"penguin-18",
"gtx-1080-sc-0022",
"gtx-1080-sc-0065",
"gtx-1080-sc-0010",
"gtx-1080-sc-0067",
"gtx-1080-sc-0011",
"gtx-1080-sc-0068",
"gtx-1080-sc-0066",
"gtx-1080-sc-0069",
"penguin",
"gtx-1080-sc-0070",
"gtx-1080-sc-0071",
"gtx-1080-sc-0012",
"gtx-1080-sc-0072",
"gtx-1080-sc-0013",
"gtx-1080-sc-0073",
"penguin-00",
"gtx-1080-sc-0014",
"gtx-1080-sc-0074",
"gtx-1080-sc-0015",
"gtx-1080-sc-0075",
"gtx-1080-sc-0023",
"penguin-01",
"gtx-1080-sc-0024",
"gtx-1080-sc-0025",
"gtx-1080-sc-0026",
"gtx-1080-sc-0027",
"gtx-1080-sc-0079",
"gtx-1080-sc-0028",
"gtx-1080-sc-0029",
"gtx-1080-sc-0030",
"gtx-1080-sc-0031",
"gtx-1080-sc-0080",
"gtx-1080-sc-0032",
"gtx-1080-sc-0033",
"gtx-1080-sc-0034",
"gtx-1080-sc-0035",
"gtx-1080-sc-0036",
"gtx-1080-sc-0076",
"gtx-1080-sc-0037",
"penguin-02",
"gtx-1080-sc-0038",
"penguin-03",
"gtx-1080-sc-0039",
"gtx-1080-sc-0040",
"penguin-09",
"gtx-1080-sc-0041",
"gtx-1080-sc-0042",
"gtx-1080-sc-0043",
"penguin-10",
"gtx-1080-sc-0044",
"gtx-1080-sc-0045",
"gtx-1080-sc-0046",
"gtx-1080-sc-0047",
"gtx-1080-sc-0048",
"penguin-04",
"penguin-05",
"gtx-1080-sc-0077",
"gtx-1080-sc-0049",
"gtx-1080-sc-0050",
"gtx-1080-sc-0051",
"penguin-06",
"gtx-1080-sc-0052",
"penguin-07",
"gtx-1080-sc-0053",
"gtx-1080-sc-0054",
"gtx-1080-sc-0055",
"gtx-1080-sc-0016",
"gtx-1080-sc-0056",
"gtx-1080-sc-0017",
"gtx-1080-sc-0057",
"gtx-1080-sc-0001",
"gtx-1080-sc-0018",
"gtx-1080-sc-0058",
"gtx-1080-sc-0059",
"gtx-1080-sc-0002"

55
  ·  в прошлом году

Спасибо, я действительно нуждался в этом раньше. Всем не объяснял мне это правильно. Это хорошо для тех, кто не очень с программированием.

@primus, чтобы поднять ноду надо иметь стационарный ip? Мне сеть выдает динамический внешний ip, это не годится?

·

Можно использовать динамический IP, с этим проблем нет.

Кто может подсказать - приватный ключ, который указывается в конфиге - может быть любой или он обязательно должен являться активным ключем (active key) соответствующего аккаунта?

·

для делегата может указываться ключ из cli_wallet сгенерированный brain key
для майнера нужен активный ключ

Спасибо за конфиг, но вопросы все равно остались.

  1. Можно ли запустить одновременно ноду витнеса и делегата? Если возможно, то куда класть второй конфигурационный файл?
  2. Где брать ключи? регистрировать через cli_wallet как указано тут https://wiki.golos.io/3-guides/generate_keys.html или брать из аккаунта на Голосе? Если из аккаунта, то какой конкретно?
  3. Какой командой запустить cli_wallet для регистрации витнеса? Из какой папки?
·

1. Одновременно запускать ноду делегата и майнера на одном аккаунте на разных серверах нельзя. Т.е. практически вы пока можете это сделать. Но теоретически (в коде такая фича присутсвует, но пока не активирована) при такой работе вы можете полностью лишиться средств на аккаунте из-за потенциального риска форка сети если один и тот же блок вы подпишите и как майнер и как делегат.

В общем, майнинг и делегирование нужно делать на разных аккаунтах.

2. Ключ для делегата должен быть тот, что вы задали командой update_witness. Обратите внимание, что в этой команде вы указываете публичный ключ, а в конфигурационном фале ноды прописываете соответствующий ему приватный ключ.

3. cli_wallet лежит в папке ./programs/cli_wallet/cli_wallet от корня дистрибутива исходного кода Голоса.

·
·
62
  ·  в прошлом году

Как запустить cli_wallet? Выдает ту самую ошибку что у вас в инструкции и советы не помогают... все равно ошибка:

подскажите, почему при майнинге постоянно пишет что "+1 SP found a block", но на балансе увеличение SP не происходит? Выходит, что блоки не засчитываются?

@primus не подскажете, как добыть signing key? 😬😊

·

Можно использовать любой ключ, сгенерённый командой suggest_brain_key - она выдаёт случайный публичный и приватный ключ.

Прописываете приватный ключ в конфиг ноды.

И обновляете публичный ключ (соответвующий приватному в конфиге) через консоль:

update_witness qqc " " "GLS7NHcdAPHKA7kBLoWXz4HTrJAnTGyAdNHRAtjzSLSykHHQ8Jxwq" {} true

(ключ свой вставьте вместо GLS7NHcdAPHKA7kBLoWXz4HTrJAnTGyAdNHRAtjzSLSykHHQ8Jxwq)

Все вышеприведённые команды - для cli_wallet

@primus - я не пойму как Вы вставляете скрипт "Конфигурационный файл для ноды майнера" и как запускать cli_wallet? У меня на этом все застряло и не получается дальше все настроить и запустить! Может еще раз Вы создадите пост с более подробным описанием настройки майнера на Linux?

·

Вот же, цитата из статьи:

При первом запуске golosd создаст директорию witness_node_data_dir для хранения блокчейна. Прервите работу golosd и создайте (в любом текстовом редакторе, я использую nano) конфигурационный файл в этой директории:

nano witness_node_data_dir/config.ini

Пример конфигурационного фала лежит тет же полностью - как для ноды майнера, так и для ноды делегата.

Конфиг - это просто файл, никакой не скрипт. Из этого файла демон golosd берёт настройки, с которыми нужно запускаться.

Если что-то всё ещё не понятно - спрашивайте.

·
·

@primus - да, я так и делал - создаю по описанным действиям "witness_node_data_dir":
Для запуска нод я использую отдельную директорию, в которой лежат конфигурационные файлы и сам блокчейн Голоса. Пусть это будет директория по имени golos, давайте создадим её:

cd
mkdir golos
cd golos
Появляется надпись на английском, что файл создан. Делаю дальше по описанию:
"Прежде чем запускать Голос, скопируйте в эту папку файл со снэпшотом сети:
cp /path/to/golos-14.2/programs/golosd/golosd/snapshot5392323.json ." - но появляется надпись на английском. ЧТО ФАЙЛ ИЛИ ДИРЕКТОРИЯ ОТСУТСТВУЕТ. И дальше нода не запускается( Перепробовал уже три раза переустанавливать все сначала - но на этом моменте все встает и не двигается. Использую VM и ubuntu-16.04-server-amd64.

·
·
·

Ну потому что /path/to/... это путь в файловой системе где у вас лежит демон golosd. На практике нужно указывать реальный путь - где он конкретно у вас лежит.

·
·
·
·

@primus - Спасибо большое! Но вот только теперь программа пишет что не может определить ключь )) Какой именно ключь нужно вставлять - я уже пробовал и окрытыйе и приватные ключи вставлять, но все никак. Что можно сделать?

·
·
·

Для ноды майнера нужно приватный ключ использовать.

В конфиге должны быть такие строчки:

witness = "alcotester"
miner = ["alcotester","5JGyvx65iLqRgX77Yzr2kDYqEoEwG3PhnxDJ2Nb97SbVb5CbGKs"]

Ключ, понятное дело - подставляйте свой (команда suggest_brain_key вам в помощь).

·
·
·
·

@primus - я вставил команду suggest_brain_key - программа написала: " command not found ". Что может быть не так? Заранее извиняюсь за надоедливость)) Команду вставлял в командную строку, может куда то зайти еще надо? В witness = я вставил свой логин poloz1843

·
·
·

suggest_brain_key это не для командной строки Линукса, это для cli_wallet

·
·
·
·

@primus - сейчас опять тупить буду! cli_wallet - это отдельная программа для линукса? Или её как то вызывают?

·
·
·

cli_wallet это программа управления кошельком Голоса, идёт в комплекте с демоном golosd.

У меня в этом посте (в комментариях к которому мы всё это осуждаем) есть целый раздел, который так прямо и называется: Запуск cli_wallet.

Вообще, рекомендую внимательно весь пост еще раз прочитать - там есть ответы на большинство вопросов, что вы задаёте.

сервер можно сделать с домашнего ПК установив на него Ubuntu 16.04 LTS ?

·

Да, конечно.

А для винды есть инструкция?

@primus a для винды есть инструкция по установке клиента?

57
  ·  8 месяцев назад

Охо-хо... Все тут конфиг обсуждают, а у меня почему-то не компилируется. Ошибка на тестах. Типа вот такого:

CMakeFiles/all_tests.dir/utf8_test.cpp.o: In function `_GLOBAL__sub_I__ZN2fc9utf8_test11test_methodEv':
utf8_test.cpp:(.text.startup+0x274): undefined reference to `boost::unit_test::ut_detail::auto_test_unit_registrar::auto_test_unit_registrar(boost::unit_test::basic_cstring<char const>)'
utf8_test.cpp:(.text.startup+0x2ea): undefined reference to `boost::unit_test::test_case::test_case(boost::unit_test::basic_cstring<char const>, boost::unit_test::callback0<boost::unit_test::ut_detail::unused> const&)'
utf8_test.cpp:(.text.startup+0x310): undefined reference to `boost::unit_test::ut_detail::auto_test_unit_registrar::auto_test_unit_registrar(boost::unit_test::test_case*, unsigned long)'
collect2: error: ld returned 1 exit status
make[2]: *** [libraries/fc/tests/all_tests] Ошибка 1
make[1]: *** [libraries/fc/tests/CMakeFiles/all_tests.dir/all] Ошибка 2
make: *** [all] Ошибка 2

Думал что в ветке проблема - поставил релиз v0.16.0, но проблема осталась. :( Кто-нибудь может подсказать что делать? Ubuntu 14.04.