LINUX.ORG.RU
решено ФорумAdmin

[gentoo] pacemaker


0

1

Столкнулся со странным.

Итак, пытаюсь поставить из официального дерева sys-cluster/pacemaker-1.1.4-r4 USE="(-heartbeat) -smtp -snmp -static-libs" на одну из нод будущего кластера. amd64. Получаю вот такое:

chmod a+x ../tools/crm_simulate
PATH=$PATH:../tools help2man --output crm_simulate.8 --no-info --section 8 --name "Part of the Pacemaker cluster resource manager" ../tools/crm_simulate
help2man: can't get `--help' info from ../tools/crm_simulate
Try `--no-discard-stderr' if option outputs to stderr
gmake[1]: *** [crm_simulate.8] Error 127
gmake[1]: *** Waiting for unfinished jobs....
libtool: link: x86_64-pc-linux-gnu-gcc -std=gnu99 -O2 -pipe -I/usr/include -I/usr/include/heartbeat -fgnu89-inline -fstack-protector-all -Wall -Waggregate-return -Wbad-function-cast -Wcast-align -Wdeclaration-after-statement -Wendif-labels -Wfloat-equal -Wformat=2 -Wformat-security -Wformat-nonliteral -Winline -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -Wno-long-long -Wno-strict-aliasing -Wpointer-arith -Wstrict-prototypes -Wwrite-strings -Wl,-O1 -o .libs/iso8601 test.iso8601.o  -Wl,--as-needed ../lib/common/.libs/libcrmcommon.so -L/usr/lib64 ../lib/cib/.libs/libcib.so /var/tmp/portage/sys-cluster/pacemaker-1.1.4-r4/work/Pacemaker-1-1-Pacemaker-1.1.4/lib/common/.libs/libcrmcommon.so -lcrypto -lncurses -lcoroipcc -lcpg -lquorum /usr/lib64/libgnutls.so /usr/lib64/libtasn1.so /usr/lib64/libgcrypt.so /usr/lib64/libgpg-error.so /usr/lib64/libplumb.so /usr/lib64/libpils.so -lbz2 /usr/lib64/libxslt.so /usr/lib64/libxml2.so -lz -lm -lc -luuid -lpam /usr/lib64/libglib-2.0.so -lrt /usr/lib64/libltdl.so -ldl
gmake[1]: Leaving directory `/var/tmp/portage/sys-cluster/pacemaker-1.1.4-r4/work/Pacemaker-1-1-Pacemaker-1.1.4/tools'
make: *** [all-recursive] Error 1
emake failed
 * ERROR: sys-cluster/pacemaker-1.1.4-r4 failed (compile phase):
 *   died running emake, base_src_make
 * 
 * Call stack:
 *     ebuild.sh, line   56:  Called src_compile
 *   environment, line 5452:  Called base_src_compile
 *   environment, line 1103:  Called base_src_make
 *   environment, line 1141:  Called die
 * The specific snippet of code:
 *           emake "$@" || die "died running emake, $FUNCNAME";
 * 
 * If you need support, post the output of 'emerge --info =sys-cluster/pacemaker-1.1.4-r4',
 * the complete build log and the output of 'emerge -pqv =sys-cluster/pacemaker-1.1.4-r4'.
 * The complete build log is located at '/var/tmp/portage/sys-cluster/pacemaker-1.1.4-r4/temp/build.log'.
 * The ebuild environment file is located at '/var/tmp/portage/sys-cluster/pacemaker-1.1.4-r4/temp/environment'.
 * S: '/var/tmp/portage/sys-cluster/pacemaker-1.1.4-r4/work/Pacemaker-1-1-Pacemaker-1.1.4'

Пытаюсь скомпилировать на другой ноде, полностью идентичной первой. Компилируется нормально. WTF? (да, я на первой пытался забороть по-всякому: и system пересобирал, и lafilefixer'ом пробегался) Но даже это ещё не всё.

Пробую из интереса поставить с тем же набором на x86. Все зависимости ставятся абсолютно с теми же флагами, что и на amd64. Устанавливается. Смотрю листинг в директории /usr/lib/ocf.

На x86:

# ls /usr/lib/ocf/ -R
/usr/lib/ocf/:
lib  resource.d

/usr/lib/ocf/lib:
heartbeat

/usr/lib/ocf/lib/heartbeat:
ocf-binaries  ocf-directories  ocf-returncodes  ocf-shellfuncs

/usr/lib/ocf/resource.d:
heartbeat  pacemaker

/usr/lib/ocf/resource.d/heartbeat:
anything      db2      exportfs    IPsrcaddr         LinuxSCSI    nfsserver  postfix      SAPInstance         Stateful       WAS
AoEtarget     Delay    Filesystem  IPv6addr          LVM          nginx      proftpd      scsi2reservation    SysInfo        WAS6
apache        drbd     fio         iscsi             MailTo       oracle     Pure-FTPd    SendArp             syslog-ng      WinPopup
AudibleAlarm  Dummy    ICP         iSCSILogicalUnit  ManageRAID   oralsnr    Raid1        ServeRAID           tomcat         Xen
ClusterMon    eDir88   ids         iSCSITarget       ManageVE     pgsql      Route        sfex                VIPArip        Xinetd
conntrackd    Evmsd    IPaddr      jboss             mysql        pingd      rsyncd       SphinxSearchDaemon  VirtualDomain
CTDB          EvmsSCC  IPaddr2     ldirectord        mysql-proxy  portblock  SAPDatabase  Squid               vmware

/usr/lib/ocf/resource.d/pacemaker:
ClusterMon  controld  Dummy  HealthCPU  HealthSMART  o2cb  ping  pingd  Stateful  SysInfo  SystemHealth

на amd64:

# ls -R /usr/lib/ocf/
/usr/lib/ocf/:
resource.d

/usr/lib/ocf/resource.d:
linbit  pacemaker

/usr/lib/ocf/resource.d/linbit:
drbd

/usr/lib/ocf/resource.d/pacemaker:
ClusterMon  Dummy  HealthCPU  HealthSMART  Stateful  SysInfo  SystemHealth  controld  o2cb  ping  pingd

WTF²? На ноде работает drbd, это понятно. Но куда делась директория heartbeat?

Что посоветуют гентоводы?

Ответ на: комментарий от Murcielago

Не похоже.

SMART ничего не показал плохого. Запустил badblocks.

HolyBoy ()
Ответ на: комментарий от Murcielago
# badblocks -v /dev/sda
Checking blocks 0 to 244198583
Checking for bad blocks (read-only test): done                                
Pass completed, 0 bad blocks found.
HolyBoy ()

Итак, я, кажется, нашёл, в чём проблема: в неверных путях, указанных в файле, принадлежащем sys-cluster/resource-agents

Пересобрал мир, после этого мне предложило поменять ссылки в файле /etc/ha.d/shellfuncs с

: ${HA_SBIN_DIR:=/usr/sbin}
: ${HA_NOARCHBIN:=/usr/share/heartbeat}
: ${OCF_AGENTS:=/resource.d//heartbeat/}
на
: ${HA_SBIN_DIR:=/usr/sbin}
: ${HA_NOARCHBIN:=/usr/share/heartbeat}
: ${OCF_AGENTS:=/usr/lib64/ocf/resource.d//heartbeat/}

После этой замены и ещё, кажется, одной, я не запомнил, pacemaker собрался как положено, а в /usr/lib64/ocf/resource.d/heartbeat/ оказались все нужные файлы.

Это всё очень странно, т.к. sys-cluster/resource-agents ставился в виде зависимости pacemaker'а и в его конфигах я не копался.

HolyBoy ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.