Хочу установить демон Bitcoin, но не очень понимаю как

Автор epros, 07 октября 2013, 15:35:41

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

epros

Хочу поставить bitcoind (чтобы работать с кошельками bitcoin из своих программ). Поскольку в дистрибутиве сия вещь не выложена, как я понимаю, остаётся только собрать его из исходников, взятых с GitHub. Вот здесь выложено некое руководство для сборки под Unix. Проблема в том, что оно зависит от пакетов libdb4.8-dev и libdb4.8++-dev, кои в репозиториях отсутствуют. У меня сейчас стоит пакет libdb5.1-dev (а пакет libdb5.1++-dev можно доставить), но в данном руководстве написано, что эти пакеты "will break binary wallet compatibility".  :(

Как же быть? Снести libdb5.1-dev (а от него куча всего зависит) и откуда-то добыть вместо него libdb4.8-dev? Откуда?  ???


epros

#2
Цитата: ogost от 08 октября 2013, 11:55:49bitcoind есть в бэкпортах сквиза и в репах сида.
Хм, а как доставание bitcoind из бэкпортов сквиза поможет решить проблему? Как я понимаю, проблема не в bitcoind самом по себе (без разницы, откуда его брать), а в его зависимоси от libdb4.8. Я не могу поставить libdb4.8, потому что для этого надо было бы снести libdb5.1. А вот список того, что у меня зависит от libdb5.1:


  php5-fpm
  php5-cli
  php5-cgi
  libphp5-embed
  libapache2-mod-php5filter
  libapache2-mod-php5
  webdruid
  webalizer
  vacation
  tcpstat
  syrep
  libsvn1
  squidguard
  squid3
  squid
  spamprobe
  sks
  skktools
  skksearch
  sendmail-bin
  ruby-bdb
  librpm3
  reprepro
  redland-utils
  librdf0
  librdf-storage-sqlite
  librdf-storage-postgresql
  librdf-storage-mysql
  radiusd-livingston
  python3.2-dbg
  python3.2
  python2.7-dbg
  python2.7
  python2.6-dbg
  python2.6
  python3-bsddb3-dbg
  python3-bsddb3
  python-bsddb3-dbg
  python-bsddb3
  prayer-accountd
  prayer
  postfix
  poedit
  php5-fpm
  php5-cli
  php5-cgi
  libphp5-embed
  libapache2-mod-php5filter
  libapache2-mod-php5
  perdition-postgresql
  perdition-odbc
  perdition-mysql
  perdition-ldap
  perdition
  pavuk
  slapd
  opendkim-tools
  opendkim
  open-cobol
  libcob1
  onak
  nvi
  nss-updatedb
  nmh
  netatalk
  moc-ffmpeg-plugin
  moc
  mmorph
  memcachedb
  mailavenger
  libreoffice-core
  librcc0
  libqxt-berkeley0
  libpinyin0
  libpinyin-utils
  libpam-ccreds
  libpam-abl
  libnss-db
  libetpan15
  libberkeleydb-perl
  jigdo-file
  isync
  iproute
  inn2-lfs
  inn2
  hpsockd
  hotkeys
  libotp0-heimdal
  libkdc2-heimdal
  libhdb9-heimdal
  heimdal-servers
  heimdal-kdc
  heimdal-clients
  guile-db
  gridengine-master
  ggcov
  exim4-daemon-light
  exim4-daemon-heavy
  exim4-base
  evolution-exchange
  libedata-book-1.2-13
  libebackend-1.2-2
  evolution-data-server
  dsniff
  drac
  dnshistory
  libdb5.1-tcl
  libdb5.1-stl-dev
  libdb5.1-stl
  libdb5.1-sql-dev
  libdb5.1-sql
  libdb5.1-java-jni
  libdb5.1-java-gcj
  libdb5.1-java-dev
  libdb5.1-java
  libdb5.1-dev
  libdb5.1-dbg
  libdb5.1++-dev
  libdb5.1++
  db5.1-util
  db5.1-sql-util
  sasl2-bin
  libsasl2-2
  libcyrus-imap-perl24
  cyrus-replication-2.4
  cyrus-pop3d-2.4
  cyrus-nntpd-2.4
  cyrus-murder-2.4
  cyrus-imapd-2.4
  cyrus-common-2.4
  cyrus-clients-2.4
  clisp-module-berkeley-db
  claws-mail-trayicon
  claws-mail-spamassassin
  claws-mail-smime-plugin
  claws-mail-pgpmime
  claws-mail-pgpinline
  claws-mail-bogofilter
  citadel-server
  libchise1
  cfengine3
  cfengine2
  cairo-dock-mail-plug-in
  c-icap
  bogofilter-bdb
  bmf
  apt-utils
  libaprutil1
  libpam-modules
  perl


Кстати, я что-то не понял: этот список мне выдаёт apt-cache rdepends libdb5.1, а Synaptic при попытке удаления libdb5.1 выдаёт совсем другой список (но не менее внушительный). Это почему?

ferum

#3
Надо полагать у вас wheezy. На самом деле почти всегда есть способ разрулить зависимости. Они чаще всего не такие жёсткие как может показаться на первый взгляд.
Попытка №1 скачиваете ручками пакеты  libdb4.8-dev и libdb4.8++-dev а так же скорее всего бинарный пакет этой версии и пытаетесь подменить их через dpkg -i в 50% случаев срабатывает . К примеру в squeeze из коробки не работает флоппик , виной кривоватый пакет udisks от которого в сою очередь зависит почти весь гном, естественно удалить его не реально а через dpkg -i замена на более раннюю версию решает проблему.
Однако скорее всего придётся делать попытку № 2 Например в бунтах эту проблему решили пересборкой пакета исходного кода db4.8. Собственно и вам не кто не запрещает взять дебианизированные сырцы https://launchpad.net/~bitcoin/+archive/bitcoinи собрать пакеты для wheezy. Возможно конечно придётся поколдовать с зависимостями. Только не ставьте программу прямо из этого репозитория. В бунтах 20% пакетов всё же отличаются по этому прямая установка может создать проблем больше чем решить.
Можно конечно попробовать и из реп сида но тоже как повезёт, там версии пакетов наоборот новее.
Русские дебианщики против цифрового слабоумия !

epros

#4
Некоторое время я занимался другими проблемами, а теперь вернулся к этой. И вижу, что она пока никак не решается :(
Рассказываю о попытках решения:

1) Попытался поставить пакет bitcoind, вытащенный из нестабильного репозитория (а у меня wheezy). Зависимости от более новых версий пакетов, чем установлены у меня, не позволяют его поставить. Переходить на нестабильный дистрибутив я не готов.

2) Взял исходники отсюда: https://github.com/bitcoin/bitcoin (как вариант, отсюда: https://gitorious.org/bitcoin/bitcoind-stable ), после установки всех необходимых пакетов, описанных в разделе Dependencies в readme файлах, попытался выполнить "make -f makefile.unix". Получасовой процесс, сопровождающийся кучей непонятных сообщений, среди которых угрожающе мелькают "fatal error: not a Git repository" (или что-то в этом роде), завершается сообщением об ошибке (какой-то .h файл, вроде, не найден).

3) Здесь http://bitcoin.org/ru нашёл ссылку на "кошелёк для linux" - вот этот файл: http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.8.5/bitcoin-0.8.5-linux.tar.gz/download , вытащил из архива уже скомпилированный бинарник bitcoind (версия для 32-разрядной платформы). И после некоторого геморроя, ура: удалось запустить демон и даже добиться того, чтобы он отвечал на JSON запросы. Но:
а) Иногда по непонятной причине соединение JSON с демоном не хочет устанавливаться. Десятки попыток не спасают. Но через несколько минут вдруг всё проходит.
б) После рестарта демона иногда (увы, достаточно часто) счётчик, возвращаемый по запросу getblockcount, оказывается сброшенным в нуль, т.е. вся цепочка блоков, которая несколько часов перед этим грузилась в локальную базу, пропала  >:( и загрузка blockchain начинается сначала. Ужас. Так ни разу до конца все 272000 блоков и не загрузил.
в) Иногда по запросу getinfo возвращается предупреждение о каких-то несовместимых форматах транзакций с предложением сделать upgrade, после чего дальнейшая загрузка цепочки блоков останавливается.
В общем вывод таков: Продукт не работоспособен.

4) Написал в поддержку дебиан. Ответил Scott Howard. Суть ответа сводится к тому, что:
а) В стабильном релизе пакета bitcoind нет и не будет, поскольку есть какая-то проблема с поддержкой изменений в сетевых протоколах со стороны  разработчиков Биткоина, которая "very dangerous and potentially harmful to the bitcoin network (and could lose users lot of money)". Деталей я не понял. Понял только, что дело, оказывается, вовсе не в несовместимости версий 4.8 и 5.1 форматов Berkeley DB.
б) Пользователям стабильного релиза предлагается "build their own packages or use the version in unstable". Ни то, ни другое у меня, как видите, не получилось.
в) Относительно моих проблем с бинарником, который мне хоть как-то удалось запустить (см. п. 3) Scott написал, что это вопрос к upstream developers, хотя сам он ни с чем подобным не сталкивался. И что мне с этим делать? Не понимаю.

Самое печальное в том, что я не знаю, чем мне этот самый bitcoind заменить. Я бы поставил какого-нибудь альтернативного клиента Биткоин (multibit или electrum), но мне нужна локально загруженная цепочка блоков (а её грузит только родной клиент). Пусть не вся цепочка, а только заголовки последних нескольких тысяч блоков, но нужно, чтобы они обновлялись.

sandaksatru

#5
Цитата: epros от 25 ноября 2013, 18:07:13Некоторое время я занимался другими проблемами, а теперь вернулся к этой. И вижу, что она пока никак не решается
Можно загрузить с официального репозитория на лаунчпаде пакеты для Убунту. Сам не знаю насколько они работоспособны, но иногда использую подобные финты ушами. Если влом качать и ставить каждый пакет по отдельности, можно поступить следующим образом:

sudo nano /etc/apt/sources.list.d/bitcoin.list
- создаем и открываем файлик с отдельными репами биткоина, которые мы будем редактировать в случае обновления дистрибутива. Туда (если у нас wheezy, на других релизах нужно подбирать другие аналоги) вписываем:

deb http://ppa.launchpad.net/bitcoin/bitcoin/ubuntu precise main
deb-src http://ppa.launchpad.net/bitcoin/bitcoin/ubuntu precise main

deb http://ppa.launchpad.net/bitcoin/bitcoin/ubuntu raring main
deb-src http://ppa.launchpad.net/bitcoin/bitcoin/ubuntu raring main


Сохраняемся (ctrl+o), выходим (ctrl+x), обновляемся и ставим нужные нам пакеты (bitcoind - демон, bitcoin-qt - ГУИ):
sudo apt-get update && sudo apt-get install bitcoind bitcoin-qt

Я проверял, у меня проблем с зависимостями не возникает.

З.Ы.: разжевывал, т.к. на вашу тему может наткнуться новичек в linux, пожелавший установить bitcoin, дабы не задавалось лишних вопросов.

epros

Цитата: sandaksatru от 26 ноября 2013, 09:47:33З.Ы.: разжевывал, т.к. на вашу тему может наткнуться новичек в linux, пожелавший установить bitcoin, дабы не задавалось лишних вопросов.
Спасибо, я и есть новичок в линуксах. ;)

Репозитории на http://ppa.launchpad.net/bitcoin/bitcoin/ubuntu я уже пробовал, подключал через sources.list. Только я не знал, какую версию убунты брать и выбрал, кажется, saucy. Synaptic ругается: выделяет нужный мне пакет (bitcoind) красным квадратиком (т.е. "с ошибками"). Соответственно, при попытке нажать кнопочку "применить" выдаёт: "Невозможно выполнить изменения, сначала необходимо исправить ошибки в пакетах".

Сейчас попробовал в точности сделать как Вы написали, вот что говорит apt-get на попытку установить bitcoind:

root@home-desktop:/home/epros# apt-get install bitcoind
Чтение списков пакетов... Готово
Построение дерева зависимостей       
Чтение информации о состоянии... Готово
Некоторые пакеты невозможно установить. Возможно, вы просите невозможного,
или же используете нестабильную версию дистрибутива, где запрошенные вами
пакеты ещё не созданы или были удалены из Incoming.
Следующая информация, возможно, поможет вам:

Пакеты, имеющие неудовлетворённые зависимости:
bitcoind : Зависит: libc6 (>= 2.15) но 2.13-38 будет установлен
            Зависит: libdb4.8++ но он не будет установлен
E: Невозможно исправить ошибки, у вас отложены (held) битые пакеты.

ferum

sandaksatru, epros, Тысячу раз повторялось на форуме прямое подключение репозиториев ppa ubuntu категорически не рекомендуется. Можно использовать только сорцовые репозитории для пересборки пакетов под дебиан.
Русские дебианщики против цифрового слабоумия !

epros

#8
Мне Scott Howard посоветовал другое решение: Поставить версию пакета из репозитория сида. Судя по указанной им ссылке (http://www.imped.net/2007/07/20/apt-pinning-installing-unstable-packages-on-stable-debian/ ), это называется "pinning". Я сделал как указано по ссылке (только поменял сервера .de на .ru, а также непонятное мне etch/updates, на которое apt-get update ругается, заменил на wheezy/updates). И, ура, пакет bitcoind успешно установился. Правда при этом обновилась куча пакетов (от mysql до apache), а также при установке Synaptic теперь выдает длинный список того, что "без изменений". Это меня несколько пугает. Подозреваю, что при следующем apt-get upgrade всё это у меня обновится и то, что я получу в результате, будет уже совсем не wheezy...

Попробую теперь поработать с этим пакетом. Надеюсь, что такие-же ошибки не полезут...

sandaksatru

#9
Цитата: epros от 26 ноября 2013, 11:08:04Пакеты, имеющие неудовлетворённые зависимости:
bitcoind : Зависит: libc6 (>= 2.15) но 2.13-38 будет установлен
            Зависит: libdb4.8++ но он не будет установлен
Да, у меня libc6 версии 2.17. Ставил пару недель назад из jessie, т.к. некоторые новые пакеты, которых нет в репах Debian, требуют более новую версию этой библиотеки, и обновление не ломает систему.
Я просто ещё не связывался с биткоин по-нормальному, поэтому не мог протестировать работоспособность после установки. Но теперь я просто вынужден это сделать!  :)

Сообщение объединено: 26 ноября 2013, 18:41:35

Цитата: ferum от 26 ноября 2013, 11:43:01sandaksatru, epros, Тысячу раз повторялось на форуме прямое подключение репозиториев ppa ubuntu категорически не рекомендуется. Можно использовать только сорцовые репозитории для пересборки пакетов под дебиан.
ferum, не волнуйтесь, это не репозиторий убунту, это репозиторий bitcoin. Прежде чем что-то делать, я советую разобраться в будущих действиях, а не бездумно шарахаться от непонятного. Вот что установилось при выполнении указанных мною выше команд:
Открыть содержимое (спойлер)
Получено:1 http://mirror.yandex.ru/debian/ stable/main libboost-system1.49.0 i386 1.49.0-3.2 [33,3 kB]
Получено:2 http://mirror.yandex.ru/debian/ stable/main libboost-filesystem1.49.0 i386 1.49.0-3.2 [78,4 kB] 
Получено:3 http://ppa.launchpad.net/bitcoin/bitcoin/ubuntu/ raring/main libdb4.8++ i386 4.8.30-raring2 [765 kB]
Получено:4 http://mirror.yandex.ru/debian/ stable/main minissdpd i386 1.1.20120121-1 [17,9 kB]
Получено:5 http://ppa.launchpad.net/bitcoin/bitcoin/ubuntu/ precise/main libminiupnpc8 i386 1.6-precise2 [28,6 kB]
Получено:6 http://ppa.launchpad.net/bitcoin/bitcoin/ubuntu/ raring/main bitcoin-qt i386 0.8.5-raring1 [2 550 kB]
Получено:7 http://ppa.launchpad.net/bitcoin/bitcoin/ubuntu/ raring/main bitcoind i386 0.8.5-raring1 [1 130 kB]               
Получено 4 604 kБ за 15с (300 kБ/c)
[свернуть]
То есть, как мы видим, из репозитория биткоина поставилось всего несколько библиотек (с которыми будет работать только биткоин и которые не ломают остальные зависимости), мануалы, доки и два бинарника. Все они скомпилированы под i386 generic архитектуру. В случае выхода новых пакетов, у нас всё обновится в штатном режиме. У меня всё работает.

ferum

Цитата: sandaksatru от 26 ноября 2013, 17:25:22ferum, не волнуйтесь,
Это ваша головная боль, моё дело предупредить.
Русские дебианщики против цифрового слабоумия !

Brainey

[ot]
Цитата: sandaksatru от 26 ноября 2013, 17:25:22не волнуйтесь, это не репозиторий убунту, это репозиторий bitcoin.
А "ubuntu" там просто так в названии прописано, да-да. Шифруются просто авторы.  ;)
//Выше был сарказм, ага.[/ot]
Конференция форума в jabber: debianforum@conference.jabber.ru | Клуб кедоводов: kde@conference.jabber.ru

epros

#12
Народ, подскажите пожалуйста такую вещь: Вот мне не удалось найти работоспособный бинарник, ладно. Но почему я не могу скомпилировать ни одну версию исходников? Что я делаю неправильно? Вот я взял отсюда последнюю версию пакета. Строго вот по этой инструкции установил все пакеты, требуемые зависимостями, потом распаковал исходники в /usr/local/src, зашёл в ./bitcoin-0.8.5-linux/src/src, запустил make -f makefile.unix. И на выходе получил кучу сообщений об ошибках:
/usr/include/boost/thread/xtime.hpp:23:5: error: expected identifier before numeric constant
/usr/include/boost/thread/xtime.hpp:23:5: error: expected '}' before numeric constant
/usr/include/boost/thread/xtime.hpp:23:5: error: expected unqualified-id before numeric constant
/usr/include/boost/thread/xtime.hpp:46:14: error: expected type-specifier before 'system_time'
[skip]
/usr/include/boost/thread/xtime.hpp: In function 'int xtime_get(xtime*, int)':
/usr/include/boost/thread/xtime.hpp:73:40: error: 'get_system_time' was not declared in this scope
/usr/include/boost/thread/xtime.hpp:73:40: note: suggested alternative:
[skip]
/usr/include/boost/thread/xtime.hpp: At global scope:
/usr/include/boost/thread/xtime.hpp:88:1: error: expected declaration before '}' token
make: *** [obj/alert.o] Ошибка 1


Я посмотрел что это за файл /usr/include/boost/thread/xtime.hpp, оказалось - часть пакета libboost1.49-dev, который есть последняя версия библиотеки, предлагаемая для wheezy. Что делать-то теперь?

Сообщение объединено: 27 ноября 2013, 15:20:40

Я сделал так:
- добавил в sources.list строку:
deb http://ftp.ru.debian.org/debian/ testing main contrib non-free
- выполнил apt-get update
- в Synaptic у пакета libboost1.49-dev появилась возможность выбрать версию. Я выбрал ту, что из testing, нажал "применить".
- после этого повторил попытку скомпилировать пакет биткоина, выполнив make -f makefile.unix.

И, ура, в результате создался бинарник bitcoind. Буду теперь его пробовать и надеяться, что он не такой глюкавый.
Хотя вот эта строчка в выводе команды make -f makefile.unix меня настораживает:
fatal: Not a git repository (or any of the parent directories): .git


Сообщение объединено: 27 ноября 2013, 15:27:32

P.S. И что это за интересная практика: Выкладывать в стабильный репозиторий версию пакета с заведомо битой библиотекой? При том, что пригодная версия всё ещё остаётся в тестовом релизе...

Сообщение объединено: 27 ноября 2013, 16:59:17

Народ на bitcointalk.org уже советует снести Дебиан и поставить  убунту либо центос. Офигеть. Если бы знать, что проблема именно в Дебиане ..., но пока я в этом совсем не уверен.

qupl

Цитата: epros от 27 ноября 2013, 13:58:03P.S. И что это за интересная практика: Выкладывать в стабильный репозиторий версию пакета с заведомо битой библиотекой? При том, что пригодная версия всё ещё остаётся в тестовом релизе...
То, что у Вас что-то не собирается не говорит о том, что библиотека битая.

epros


Цитата: qupl от 27 ноября 2013, 18:17:45То, что у Вас что-то не собирается не говорит о том, что библиотека битая.
А о чём говорят сообщения типа:
/usr/include/boost/thread/xtime.hpp:23:5: error: expected identifier before numeric constant
?
По-моему, о том, что программер, который писал xtime.hpp, напортачил в коде. Я заглядывал в этот файл, сообщения об ошибках, вроде бы, вполне соответствуют его содержимому в указанной строчке и в указанной позиции. Тем более, что поставив версию из тестового репозитория, я от всех этих ошибок разом избавился.