CentOS6にkeepalivedをインストール

RPMビルドしてインストールしようと思ったら少しハマったのでメモです。


必要そうなものをインストール。

yum install rpm-build make gcc openssl-devel popt-devel kernel-devel ipvsadm

RPMビルド環境の準備。

eval echo "%_topdir ~/rpm" > ~/.rpmmacros
mkdir -p ~/rpm/{BUILD,RPMS,SOURCES,SPECS,SRPMS}

ソースファイルをダウンロードして展開。

cd /usr/local/src
wget http://www.keepalived.org/software/keepalived-1.2.2.tar.gz
cp keepalived-1.2.2.tar.gz ~/rpm/SOURCES
tar xzvf keepalived-1.2.2.tar.gz
cd keepalived-1.2.2
chown -R root:root .

RPMビルド。

./configure --with-kernel-dir=/lib/modules/`uname -r`/build
make rpm

ここで次のようなエラーが発生してRPMの作成に失敗しました。

+ umask 022
+ cd /root/rpm/BUILD
+ cd keepalived-1.2.2
+ grep -q 'IPVS_SUPPORT='\''_WITH_LVS_'\''' config.log
+ echo 'ERROR: We do not want keeepalived lacking LVS support.'
ERROR: We do not want keeepalived lacking LVS support.
+ exit 1
エラー: /var/tmp/rpm-tmp.berVpR の不正な終了ステータス (%check)


RPM ビルドエラー:
    /var/tmp/rpm-tmp.berVpR の不正な終了ステータス (%check)
make: *** [rpm] エラー 1

specファイルを眺めてみた感じ、configure で --with-kernel-dir が上手く設定されていないことが原因な気がしたので・・・

cp keepalived.spec keepalived.spec.orig
vi keepalived.spec

「%define kernel」の行を次のように書き換え。

%define kernel %(uname -r)

差分は次の通り。

diff -u keepalived.spec.orig keepalived.spec
--- keepalived.spec.orig        2011-11-28 22:29:15.188033467 +0900
+++ keepalived.spec     2011-11-28 23:00:22.562539487 +0900
@@ -2,7 +2,7 @@
 # Authority: dag
 
 # Ugly, but we need headers from a kernel to rebuild against
-%define kernel %(rpm -q kernel-devel --qf '%{RPMTAG_VERSION}-%{RPMTAG_RELEASE}\\n' 2>/dev/null | head -1)
+%define kernel %(uname -r)
 
 Summary: HA monitor built upon LVS, VRRP and services poller
 Name: keepalived

もう一度ビルドしてみる。

make rpm

成功したっぽいです。

ls ~/rpm/RPMS/x86_64/
keepalived-1.2.2-5.x86_64.rpm