keepalived、RPMパッケージ作成

cntos5.6で、LVS環境を構築するにあたり、RPMパッケージとして提供されていない
keepalivedRPMパッケージを作成する。
管理面からソースからのインストールではなく、RPMパッケージを作成するようにしている。


build環境の準備

先にopenssl-develを入れておく。
$ yum install openssl-devel

ソースダウンロード&RPM作成

  • ソースダウンロード&configure


$ cd /usr/src/redhat/SOURCES/
$ wget http://www.keepalived.org/software/keepalived-1.2.2.tar.gz
$ tar zxvf keepalived-1.2.2.tar.gz
$./configure

Keepalived configuration

                                              • -

Keepalived version : 1.2.2
Compiler : gcc
Compiler flags : -g -O2 -DETHERTYPE_IPV6=0x86dd
Extra Lib : -lpopt -lssl -lcrypto
Use IPVS Framework : No
IPVS sync daemon support : No
Use VRRP Framework : Yes
Use Debug flags : No
$

IPVSがサポートされていない。
どうやらkernelディレクトリを指定する必要がある模様。
kernel-develをインストールし、--with-kernel-dirオプションでディレクトリ指定する。


# yum install kernel-devel
$./configure --with-kernel-dir=/usr/src/kernels/2.6.18-274.3.1.el5-x86_64/

Keepalived configuration

                                              • -

Keepalived version : 1.2.2
Compiler : gcc
Compiler flags : -g -O2 -DETHERTYPE_IPV6=0x86dd
Extra Lib : -lpopt -lssl -lcrypto
Use IPVS Framework : Yes
IPVS sync daemon support : Yes
IPVS use libnl : No
Use VRRP Framework : Yes
Use Debug flags : No
$

今度は、IPVS use libnl が認識されていない。
なので、libnl-develをインストール。


# yum install libnl-devel
$./configure --with-kernel-dir=/usr/src/kernels/2.6.18-274.3.1.el5-x86_64/

Keepalived configuration

                                              • -

Keepalived version : 1.2.2
Compiler : gcc
Compiler flags : -g -O2 -DETHERTYPE_IPV6=0x86dd
Extra Lib : -lpopt -lssl -lcrypto -lnl
Use IPVS Framework : Yes
IPVS sync daemon support : Yes
IPVS use libnl : Yes
Use VRRP Framework : Yes
Use Debug flags : No
$

ようやく認識された。

specファイルをSPECSディレクトリにコピーし、rpmbuild。


$ cp -p keepalived.spec ../../SPECS/
$ rpmbuild -ba ../../SPECS/keepalived.spec

                        • -
  1. cd keepalived-1.2.2
  2. grep -q 'IPVS_SUPPORT='\''_WITH_LVS_'\''' config.log
  3. echo 'ERROR: We do not want keeepalived lacking LVS support.'

ERROR: We do not want keeepalived lacking LVS support.

  1. exit 1

エラー: /var/tmp/rpm-tmp.80338 の不正な終了ステータス (%check)
RPM ビルドエラー:
/var/tmp/rpm-tmp.80338 の不正な終了ステータス (%check)

                        • -

buildエラー...。
kernelとkernel-develのバージョンに差異があるので、kernelのアップデートを行う。

  • アップデート前

kernel : 2.6.18-238
kernel-devel: 2.6.18-274.3.1

  • kernelアップデート&OS再起動


# yum update kernel
# shutdown -r now

OS再起動しアップデートしたkernelを認識したところで、改めてrpmbuild。
が、だめ。


$ rpmbuild -ba ../../SPECS/keepalived.spec

                        • -

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

                        • -

自分ではちゃんと調べてないが、この辺の記事内容が原因なのかな?
http://moriya.xrea.jp/tdiary/20110131.html

rpmbuild時のmakeログを見ると

    • -

ip_vs.h:19:31: error: netlink/genl/genl.h: そのようなファイルやディレクトリはありません
ip_vs.h:20:31: error: netlink/genl/ctrl.h: そのようなファイルやディレクトリはありません

    • -

とあるから、恐らくそうなのだろう。
build環境のバージョンは、下記になっていた。


$ rpm -qa | grep libnl
 libnl-1.0-0.10.pre5.5
 libnl-devel-1.0-0.10.pre5.5

なので、keepalived-1.2.1を利用することに。
すんなり作成できた。


$ wget http://www.keepalived.org/software/keepalived-1.2.1.tar.gz
$ tar zxvf keepalived-1.2.1.tar.gz
$ cd keepalived-1.2.1/
$ ./configure --with-kernel-dir=/usr/src/kernels/2.6.18-274.3.1.el5-x86_64/
$ cp -p keepalived.spec ../../SPECS/
$ rpmbuild -ba ../../SPECS/keepalived.spec