CentOS5 にKeepalived をインストール

# yum -y install keepalived

したが、見つからない。
http://rpmfind.net/ で探したが、CentOS5用はまだない。仕方がないので、ソースからインストールする。http://www.keepalived.org/download.html から1.1.13 をダウンロードした。
以下に、ソースからのインストールとRPMの作成を示す。
出来上がったRPMは、ここにおいておきます。
http://www.rukatan.com/keepalived-1.1.13-6.i386.rpm
リンク切れやうまくいかないなどありましたらコメントいただけると幸いです。

  • ソースからのインストール
# wget http://www.keepalived.org/software/keepalived-1.1.13.tar.gz
# tar zxvf keepalived-1.1.13.tar.gz
# cd keepalived-1.1.13
# ./configure

中略
configure: WARNING: Cannot determine Linux Kernel version.
checking for /usr/src/linux/net/core/link_watch.c... no
中略

Keepalived configuration
------------------------
Keepalived version       : 1.1.13
Compiler                 : gcc
Compiler flags           : -g -O2
Extra Lib                : -lpopt -lssl -lcrypto
Use IPVS Framework       : No
IPVS sync daemon support : No
Use VRRP Framework       : Yes
Use LinkWatch            : No
Use Debug flags          : No

いろいろソースが無いのが原因のよう。

# yum -y install kernel-devel

でソースを入れても、link_watch.c はやっぱり入らない。
いろいろ探してみたら以下にあった。

http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.18.8.tar.gz

これを展開して、その中の net/core/以下のソースを、/usr/src/kernels/2.6.18-8.el5-i686/net/core 以下にコピーしておく。

# ./configure --with-kernel-dir=/usr/src/kernels/2.6.18-8.el5-i686

中略

Keepalived configuration
------------------------
Keepalived version       : 1.1.13
Compiler                 : gcc
Compiler flags           : -g -O2
Extra Lib                : -lpopt -lssl -lcrypto
Use IPVS Framework       : Yes
IPVS sync daemon support : Yes
Use VRRP Framework       : Yes
Use LinkWatch            : Yes
Use Debug flags          : No

これでもコンパイルが通らない。
Fedora Core 6 用のsrc.rpmの中のパッチを見ると、keepalived-1.1.13/keepalived/vrrp/vrrp_arp.c を以下のように 修正すればコンパイルが通った。

-/* system includes */
-#include <linux/if_packet.h>
-
 /* local includes */
 #include "vrrp_arp.h"
 #include "memory.h"
 #include "utils.h"

+/* system includes */
+#include <linux/if_packet.h>
+
 /* global vars */
 char *garp_buffer;
 int garp_fd;

でもよくよく考えてみると、Fedora Core 6用のsrc.rpmから、CentOS5用のRPMを作成できそうなことが判明。

  • CentOS5 用のRPM作成
# wget http://ftp.iij.ad.jp/pub/linux/fedora/extras/6/SRPMS/keepalived-1.1.13-6.fc6.src.rpm
# tar zxvf keepalived-1.1.13-6.fc6.src.rpm
# rpm -i keepalived-1.1.13-6.fc6.src.rpm
# cd /usr/src/redhat/SPECS
# rpmbuild -bb ./keepalived.spec
# cd /usr/src/redhat/RPMS/i386

keepalived-1.1.13-6.i386.rpm ができました。
上で示したカーネルソース関連がうまくおいてあれば、rpmがすんなり作成されます。

追記 (2008/09/15)
keepalived-1.1.15 では、上記のパッチは不要。問題なくコンパイル通ります。

追記 (2009/02/06)
yum install openssl-devel も必要。