CentOS 用 Bitcoind x86 バイナリ
最初の障害はecdsa.h(楕円曲線デジタル署名アルゴリズム)ファイルが見つからないことだ。CentOS の man ページには載っているのに、パッケージには入っていない。なんだこれは?
とにかく、どこか別の場所からコピーすればいいだろう。うまくいけば、みんな向けのバイナリをすぐに用意できるはずだ。
4.8 では正常にビルドできた。4.7 ではだめだったが、4.8 では bitcoind が初期ブロックダウンロードをディスクにダンプする際にハングする。😐
試しに DB4.8 でコンパイルしてみたが同じエラーだった、笑(行番号は少し違ったが、同じクラスだ)
他のディストロではこのエラーは出なかった。CentOS 特有のエラーかもしれないが、理由は分からない。
最初の障害はecdsa.h(楕円曲線デジタル署名アルゴリズム)ファイルが見つからないことだ。CentOSのmanページには載っているのに、パッケージには入っていない。なんだこれは?
とにかく、どこか別の場所からコピーすればいいだろう。うまくいけば、みんな向けのバイナリをすぐに用意できるはずだ。
はい、ecdsa.h は特許の問題があるとされ、Red Hat などのディストロは ec-dsa を無効にしている。
はい、つまり bitcoin には特許の問題がある可能性があるということだ。
4.8では正常にビルドできた。4.7ではだめだったが、4.8ではbitcoindが初期ブロックダウンロードをディスクにダンプする際にハングする。😐
おそらく CentOS 5.5 の仮想マシンを立ち上げてそちらで作業する。実験で使っていたサーバーはバイナリをビルドしようとしてめちゃくちゃにしてしまった、笑。
4.8では正常にビルドできた。4.7ではだめだったが、4.8ではbitcoindが初期ブロックダウンロードをディスクにダンプする際にハングする。😐
BDB 4.8 を使わないよう強く勧める。あなたのビルドを使った人が公式ビルドに戻った場合、database/log0000*ファイルに互換性がなくなる。
よし、Oracle の開発者を一日中つつき回した末に、DB の問題を片付けた 😛
DB 4.7.25 をコンパイルするときには、追加の config コマンドを使わないと、コンパイル成果物に重要なヘッダーファイルが含まれない(なぜだ???)
ともあれ、必要なのはこれだった
../dist/configure --enable-cxx
make
ソースをコンパイルする際にこれを実行すれば、DBコンパイル関連のエラーは解消する。 ああ、しまった。あの追加フラグのことをすっかり忘れていた。ラズロの Linux Build Document で前に知っていたのに。すまない。動作するビルドを作ってくれたら、間違いなく BTC を送る。😄
ああ、まだあるぞ!😲
それをやった後でも、リンクエラーのためコンパイルできなかった。ただし、bitcoind の確実なコンパイルには成功した。追加で必要だった手順は以下だ。
BerkeleyDB4.7 をコンパイル・インストールした後、そのインクルードパスを makefile.unix に追加する必要がある
-I”/usr/local/BerkeleyDB.4.7/include” を追加
次に、/usr/local/BerkeleyDB.4.7/lib のすべてのライブラリを /usr/lib にコピーする必要がある だが待て、まだあるぞ!😕
そう、それでもまだ十分に面倒ではないかのように、今度は OpenSSL エラーでコンパイルに失敗する、Grrrrr……
今度は /usr/local/ssl/lib から libcrypto.a と libssl.a を /usr/lib にコピーしなければならない
確かにリンクできるが、コンパイラーエラーを追いかけるのに疲れたので、コピーする方が簡単だった。🙄
それをすべてやった後、ようやく bitcoind バイナリをコンパイルできるはずだ。
今テスト中で、問題なく動いているようだ。ブロックのダウンロードなどができている。完了したら、コイン生成とコイン転送を試してみる。
GUI クライアントのコンパイルはまだ詰まっている。現在は以下で止まっている:
/usr/bin/ld: cannot find -lSM
Googleに詳しい人がいれば教えてほしい。😉 バイナリをここにアップロードした(32 ビットのみ - bitcoind): Click Here
2 つのバージョンがある。1 つは標準コードからビルドしたもの、もう 1 つは最大 1,000 ノードを受け入れるよう改造したもの(だからスーパーノードという名前だ)。
GUI クライアントのビルドはまた別の日にやるだろう。今回で疲れ果てた。気前がよければ、署名欄のアドレスに BTC を寄付してくれ 😉
バイナリをここにアップロードした(32ビットのみ - bitcoind):
1000 ノード接続版のビルドを公開しないでほしい。それを実行する人が少しでも増えると、着信接続を制限するためだけに別のリリースを出さなければならなくなる。
knightmbの投稿(2010年8月3日 23:46 UTC)2つのバージョンがある。1つはストックのコードからビルドしたもの、もう1つは最大1,000ノードまで受け入れるように改造したものだ(だから「super node」という名前にした)
1000ノードに接続するバージョンのビルドは公開しないでほしい。それを動かす人間が大勢になる前から、受信接続を制限するためだけにもう一度リリースを出さないといけなくなる。
懸念は理解できる。現行のリリース版はすでに接続数を 8 に制限している。こちらのバイナリは単一のクライアントやノードに対して何百もの接続を張りに行くわけではなく、独立したクライアントからの何百もの接続を受け付けるように改造しただけだ。CPU と帯域に余裕があるのだから、Bitcoin のために有効活用するのが筋ではないか、と思ったんだ。
自分の CentOS 5.5 マシンを本当にめちゃくちゃにしてしまったらしい。trunk からビルドした自分のものでも、君のビルドでも、こうなる:
Tue Aug 3 15:24:07 CDT 2010
[myles@kappa ~]$ ./bitcoind getinfo
{
"balance" : 0.000000000000000,
"blocks" : 3095,
"connections" : 5,
"proxy" : "",
"generate" : true,
"genproclimit" : -1,
"difficulty" : 1.000000000000000
}
[myles@kappa ~]$ date
Tue Aug 3 15:28:53 CDT 2010
[myles@kappa ~]$ ./bitcoind getinfo
{
"balance" : 0.000000000000000,
"blocks" : 3095,
"connections" : 5,
"proxy" : "",
"generate" : true,
"genproclimit" : -1,
"difficulty" : 1.000000000000000
}
何か心当たりはあるか?
ダウンロード先について最初に投稿して以来、こちらでもずっと動かしている。
すべて問題ないようで、top で確認したところ、bitcoind は最低プライオリティでコイン生成に CPU を 100%使っている
knightmb@serverfarm528 32]$ ./bitcoind getinfo
{
"balance" : 0.000000000000000,
"blocks" : 72169,
"connections" : 329,
"proxy" : "",
"generate" : true,
"genproclimit" : -1,
"difficulty" : 244.2132230923753
}
君の出力を見る限り、何らかの理由でそのブロックでハングしているようだ。デーモンを停止してから再起動すると、その後は進むのか?
よければ、./bitcoind -server -connect=12.53.130.10 でこちらに直接接続して試してみるといい。ビルド側の問題かどうかを切り分けられる。