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を寄付してもらえるとうれしい 😉
2つのバージョンがある。1つは標準コードからビルドしたもの、もう1つは最大1,000ノードを受け入れるよう改造したもの(だからスーパーノードという名前だ)。
1000ノード接続版のビルドを公開しないでほしい。それを実行する人が少しでも増えると、着信接続を制限するためだけに別のリリースを出さなければならなくなる。
Kknightmbの投稿(2010年8月3日23:46 UTC)2つのバージョンがある。1つは標準コードからビルドしたもの、もう1つは最大1,000ノードを受け入れるよう改造したもの(だからスーパーノードという名前だ)。
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でこちらに直接接続して試してみるといい。ビルドの問題かどうかを切り分けられる。