Hamachi on x64

x64 で Hamachi を動かすの巻。

メイン環境が 64bit な Ubuntu なのですが、README に従って Hamachi をインストールしようとすると

hamachi@ubuntu:~/hamachi-0.9.9.9-20-lnx$ hamachi start
17 02:10:55.828 [   0] [ 6625] tap: bad response 06000000
17 02:10:55.828 [   0] [ 6625] Failed to configure tap device to use 5.0.0.0/0000000000

などと文句を言うわけですよ。

どう見ても tuncfg 絡みのエラーなので tuncfg -d してやると

root@ubuntu:~/hamachi-0.9.9.9-20-lnx# /sbin/tuncfg -d
tuncfg: accept() 5 0
tuncfg: open() 6 0
tuncfg: ioctl() 0 ham0
tuncfg: recv() 8 0
tuncfg: config() 06000000tuncfg: recv() 0 0
tuncfg: removing ham0

などと明らかにエラーが、っていうか ham0 が即削除されてるし。

で、原因はやっぱり tuncfg.c にまつわるエラーで、Hamachi 付属の tuncfg のコードが 64bit に対応していないから、らしい。 archlinux からパッチを引用。

--- tuncfg.c.orig	2007-03-05 16:29:32.000000000 +1100
+++ tuncfg.c	2007-03-05 16:29:50.000000000 +1100
@@ -272,7 +272,7 @@
 skip:
 		for (i=0; i<ctx_n; i++)
 		{
-			unsigned long v[2];
+			unsigned int v[2];
 			char cmd[256];
 			
 			if (! FD_ISSET(ctx[i].fd, &fdr))

これでパッチ適用してやれば、 upx 解凍は不要。 ia32-libs はどっちにしても要るみたい。libcrypto はエラーが出たら入れれば良いんじゃないかな。あと AMD だと Pentium 向けバイナリじゃないと駄目とかいう書き込みもあるけど、現状 Athlon で動かしてるけど普通のバイナリで特に問題はない模様。

あとは closed binary なのでこういうエラーが出たときに気持ち悪い、という一部の方向けに n2n とかを挙げておきます。