2012年3月9日金曜日

CentOS 5.6でheartbeatとpacemakerのコンパイルエラー

LPIC304の勉強の一環で、Linuxのpacemaker + heartbeatを試すことに。
環境は以下の通り。
  • OS:CentOS 5.6
  • heartbeat-3.0.7
  • pacemaker-1.1.6-1
  • autoconf-2.68
  • automake-1.11
とりあえず公式HP を参考にソースコードからコンパイル。
すると以下のエラーが出た。
Making all in doc
gmake[1]: ディレクトリ `/root/src/Heartbeat-3-0-7e3a82377fa8/doc' に入ります
\
        --xinclude \
        http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl heartbeat.xml
gmake[1]: --xinclude: コマンドが見つかりませんでした
gmake[1]: *** [heartbeat.8] エラー 127
gmake[1]: ディレクトリ `/root/src/Heartbeat-3-0-7e3a82377fa8/doc' から出ます
make: *** [all-recursive] エラー 1
どうやらドキュメントの生成中に、xincludeというxml関連のコマンドが無くて失敗している模様。別にドキュメントなんていらないんだけど、迷惑な話だ。
調べていると、Linux-HA mailing list でも同じエラーが話題になっている。
どうやら、libxsltのRPMを入れればよいらしいので、yumでいれて問題解消。
その後./bootstrapからやり直したらうまくいった。(ちなみに、その後のmakeめちゃ長いです)


続いてpacemaker。公式HPの手順通り進めていくと、以下のエラーが出た

autoreconf: running: /usr/local/bin/autoconf --force --warnings=no-portability
configure.ac:86: error: possibly undefined macro: AC_LIBTOOL_DLOPEN
      If this token and others are legitimate, please use m4_pattern_allow.
      See the Autoconf documentation.
configure.ac:87: error: possibly undefined macro: AC_LIBLTDL_CONVENIENCE
configure.ac:88: error: possibly undefined macro: AC_PROG_LIBTOOL
autoreconf: /usr/local/bin/autoconf failed with exit status: 1
Now run ./configure
configure: error: cannot find install-sh, install.sh, or shtool in . "."/.
これはlibtoolのバージョンが古かったために発生したようで、最新のlibtool-2.4をソースから入れたら解消した。

続いてこんなエラー
configure: error: The libxslt developement headers were not found
これはヘッダファイルがないとのことなので、libxlst-develを入れればよさそうな気がする。yumで入れたら解消した。

さらにこんなエラー
./configure: line 16612: syntax error near unexpected token `libqb,'
./configure: line 16612: `PKG_CHECK_MODULES(libqb, libqb, HAVE_libqb=1, HAVE_libqb=0)'
調べていると、どうやらpkg-configが悪さをしているようだ。
PRMのバージョンを調べてみると、pkgconfig-0.21-2.el5であり、2006年ぐらいのもの。
autoconfやautomakeは最新のものをソースからコンパイルして入れているので、pkg-configだけ古いが悪かったようだ。
ココから最新のpkg-config-0.26のソースコードを落としてきて、インストール。
これでうまくいった。

つづいて、こんなエラー

configure: error: Package requirements (libcpg) were not met:

No package 'libcpg' found

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

Alternatively, you may set the environment variables cpg_CFLAGS
and cpg_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.
PKG_CONFIG_PATHの環境変数が悪いかもとか言われているので、PKG_CONFIG_PATH=/usr/lib/pkgconfigと設定してみたが、効果なし。
完全に行き詰った。


もう最新のソースはあきらめて、RPMで入れることにした。。。
# rpm -Uvh http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm
# wget -O /etc/yum.repos.d/clusterlabs.repo  http://clusterlabs.org/rpm/epel-5/clusterlabs.repo
# yum install pacemaker.i386
嗚呼、なんて簡単なんだ。。。orz

2 件のコメント:

  1. Hi fetaro,

    Run install basic library for dependent

    yum -y install gcc-c++ libmhash-devel libmcrypt-devel libxml2-devel libxslt-devel openssl-devel openssl curl-devel libjpeg-devel libpng-devel freetype-devel gd gd-devel xpm-devel rpm rpm-devel rpm-build make automake imake bzip2-devel quota pcre pcre-devel flex flex-devel bison-devel libnet libnet-devel libpcap libpcap-devel apr-util apr-util-devel apr apr-devel libtool

    Then try again.

    返信削除
  2. Hi Ferato,

    After much digging I figured out that you need the corosynclib-devel package to get the missing library 'lib-cpg'.

    No need to set the environment variable PKG_CONFIG_PATH.

    CentOS (6.4).

    Regards,
    Brett

    返信削除