Was sind die Bitcoin-Abhängigkeiten für Red Hat Linux? Bitcoin lässt sich nicht kompilieren

Ich verwende CentOS auf meinem Server, und wenn ich versuche, Bitcoin aus der Github-Quelle mit zu kompilieren make -f makefile.unix, erhalte ich eine Menge Fehler. Ich gehe davon aus, dass sie durch Abhängigkeitsfehler verursacht werden?

Ich habe eine Reihe von Abhängigkeitslisten für Debian-basierte Linux-Distributionen gesehen, die apt-get verwenden, aber ich würde gerne wissen, was ich für CentOS benötige. Die Installation der Abhängigkeiten aus den Debian-Listen mit yum zeigt die Pakete als nicht verfügbar an.

Hier ist die riesige Fehlerliste, falls jemand sie haben möchte: http://pastebin.com/1y2wCH5N

Antworten (4)

Wenn Sie Bitcoin auf CentOS 6 kompilieren möchten, benötigen Sie mehr als nur Bitcoin; mehrere andere Abhängigkeiten fehlen oder sind zu alt.

Die Einzelheiten:

  • Boost ist zu alt. CentOS 6 hat Version 1.41, aber Bitcoin erfordert Funktionen, die erstmals in Boost 1.47 eingeführt wurden.
  • Berkeley DB ist zu alt. CentOS 6 hat Version 4.7, aber Bitcoin will Version 4.8 (aber siehe unten für mehr dazu).
  • OpenSSL fehlen möglicherweise einige Elliptische-Kurven-Algorithmen, die für Bitcoin erforderlich sind, aufgrund der äußerst konservativen rechtlichen Haltung von Red Hat in Bezug auf ECC. (Siehe unter anderem die Fehler 319901 und 1020292 .)
  • Die qrencode- und miniupnpc-Bibliotheken, die für die Bitcoin-GUI erforderlich sind, um QR-Codes bzw. UPnP zu unterstützen, fehlen vollständig. (Ein reiner Server-Build benötigt sie jedoch nicht.)
  • Ältere Versionen der Bitcoin-Codebasis funktionierten nicht mit Qt 4.6, der mit CentOS 6 gelieferten Version, erforderten jedoch Qt 4.7. Ich habe dies mit einem Einzeiler behoben und es wurde stromaufwärts gepatcht. Dies wird Sie jedoch wahrscheinlich nicht betreffen, es sei denn, Sie erstellen aus irgendeinem Grund alten Code.

Sie benötigen auch diese Pakete, die in CentOS 6 vorhanden sind:

  • db4-devel
  • autoconf automake libtool

Und Sie brauchen auch dieses Paket von EPEL:

  • protobuf-Entwicklung

Für einen Build mit GUI benötigen Sie außerdem:

  • qt-devel Desktop-Datei-Dienstprogramme

Dann müssen Sie Bitcoin patchen, um die Verwendung von Berkeley DB 4.7 zu akzeptieren; standardmäßig stürzt das configure-Skript ab, wenn BDB 4.8 nicht vorhanden ist, selbst wenn Sie die configure-Option übergeben, die dies überschreiben soll. Und seien Sie gewarnt, dass Wallets, die mit diesem Build erstellt wurden, möglicherweise mit Bitcoin funktionieren, das mit BDB 4.8 kompiliert wurde.

Dann müssen Sie es erneut patchen, damit es auf den älteren Versionen von gcc und glibc kompiliert wird, die mit EL6 geliefert werden, da der aktuelle Bitcoin-Code davon ausgeht, dass ein Compiler verwendet wird, der C++11 unterstützt. Es ist ein einzeiliger Patch, aber ich brauchte eine halbe Stunde, um ihn aufzuspüren.

Wie Sie sehen können, ist dies ziemlich schmerzhaft, und allein die fehlenden Bibliotheken führen dazu, dass die meisten Menschen aufgeben.

Die meisten dieser Pakete (außer miniupnpc) sind in CentOS 7 enthalten, wenn Sie also diesen Weg einschlagen, ist das wahrscheinlich ein besserer Ausgangspunkt.

Ich betreue seit einigen Jahren Versionen dieser Bibliotheken zusammen mit einem SELinux-erweiterten Bitcoin-Build. Es ist viel einfacher, einfach das Repo zu nehmen und die vorhandenen RPM-Pakete zu installieren, da ich all diese Arbeit für Sie erledigt habe. Aber wenn Sie diesen Bereich wirklich noch einmal abdecken möchten, gibt es Ihre Roadmap.

Ich verwende Red Hat nicht, aber ich habe diese Anleitung erst kürzlich gefunden: http://www.ripplex.biz/blog/compiling-bitcoin-on-centos-v6-4

Dort finden Sie die Dep-Liste.

Ich kopiere hier im Fall von 404 von der ursprünglichen Website:

Installieren Sie die QT-, Boost-, db4- und zlib-Entwicklungspakete:

yum installiere qt-devel boost-devel db4-devel zlib-devel

Super, danke! Bevor Sie geantwortet haben, habe ich die Binärdatei von Sourceforge heruntergeladen. Ist es sicher, dies zu kompilieren und stattdessen die neue Binärdatei zu verwenden? Solange es dasselbe Datenverzeichnis verwendet, sollte es immer noch dieselben Daten behalten, richtig?
Ich denke, es ist sicher. Wahrscheinlich könnten Sie beim Kompilieren die Binärdatei für Ihren PC optimieren, aber ich weiß nicht, ob es einen vernünftigen Unterschied geben würde. Das Datenverzeichnis ist eher ein Konfigurationsproblem als ein anderes. Also ich würde sagen es ist ok
Interessant. Wie läuft die Optimierung der Binärdatei ab? Wie wird das gemacht?
Ich denke, das wäre auf anderen SE-Sites mehr zum Thema, übrigens würde ich vorschlagen, diese Wikipedia-Seite Compiler optimieren zu lesen , um zu verstehen, was es bedeutet.
Danke für den Link. Ich bin ausschließlich Webentwickler, weiß also nicht viel über Entwicklung und Kompilierung außerhalb des Webs. Vielen Dank.

Sie müssen QT-, Boost-, db4- und zlib-Entwicklungspakete installieren, versuchen Sie dies auf der Cent-OS-Befehlszeile.

yum install qt-devel boost-devel db4-devel zlib-devel

Danach können Sie das Bitcoin-Archiv von http://bitcoin.org/en/download herunterladen und extrahieren

Folgendes habe ich erfolgreich auf Fedora 20 verwendet:

$ sudo yum groupinstall -y "Development Tools" "Development Libraries"
$ sudo yum install -y gcc-c++ libtool swig pyqt4-devel python-psutil python-twisted wget protobuf-devel

Siehe https://bitcoin.stackexchange.com/a/30106/19021