注:在自定义prefix时候Reusable-Cluster-Components-glue-1.0.6必须和Heartbeat-3-0-STABLE-3.0.3安装到相同目录,否则编译有冲突。假设要将Heartbeat安装到以下路径:/usr/local/heartbeat-3.0.3。
A.编译Reusable-Cluster-Components-glue-1.0.6:
1.编辑Reusable-Cluster-Components-glue-1.0.6目录下面的autogen.sh文件:
删除153行的以下内容:
rm -rf libltdl libltdl.tar
删除167-170行的以下内容:
# Emulate the old --ltdl-tar option...
# If the libltdl directory is required we will unpack it later
tar -cf libltdl.tar libltdl
rm -rf libltdl
2. 执行 autogen.sh。
3.继续 ./configure --prefix=/usr/local/heartbeat-3.0.3 && make && make install
make 过程中出现以下错误:
main.c:64: warning: function declaration isn't a prototype
main.c:78: warning: function declaration isn't a prototype
打开./lib/stonith/main.c文件。
找到其64行,将其注释掉。
找到其76到81行全部注释掉。
找到其390行,将其注释,或者换成
case 'V': printf("stonith: %s (%s)/n", GLUE_VERSION, GLUE_BUILD_VERSION);
B.编译Heartbeat-3-0-STABLE-3.0.3:
1.编辑Heartbeat-3-0-STABLE-3.0.3目录下面的configure.in文件:
在81行"*linux*) USE_MODULES=1"下面添加以下内容:
CPPFLAGS="$CPPFLAGS -I/usr/local/heartbeat-3.0.3/include/"
将399行"AC_CHECK_HEADERS(glue_config.h)"上面的一行替换为以下内容:
CFLAGS="$CFLAGS -I/usr/local/heartbeat-3.0.3/include/heartbeat"
修改1515行"( cd $srcdir ; $TAR -xvf libltdl.tar )"为以下内容:
( cd $srcdir )
2.编辑Heartbeat-3-0-STABLE-3.0.3目录下面的bootstrap文件:
删除247行的以下内容:
rm -rf libltdl libltdl.tar
删除260-263行以下内容:
# Emulate the old --ltdl-tar option...
# If the libltdl directory is required we will unpack it later
tar -cf libltdl.tar libltdl
rm -rf libltdl
3.执行./bootstrap。
4.继续./configure --prefix=/usr/local/heartbeat-3.0.3 && export LD_LIBRARY_PATH=/usr/local/heartbeat-3.0.3/lib && make && make install。
make 过程中如果出现重定义错误,则在include/config.h中删除重定义的宏。也可以暂时修改另一个头文件,这样避免每次重新configure后include/config.h被重写后原来删除的内容丢失。
C.编译Cluster-Resource-Agents-agents-1.0.3:
1.执行./autogen.sh。
2.执行./configure --prefix=/usr/local/cluster-agents-1.0.3 && make && make install。