Ошибка при установке NetXMS + IBM DB2

Started by Jerzy_Stuhr, April 13, 2017, 06:57:49 PM

Previous topic - Next topic

Jerzy_Stuhr

здравствуйте!

OC - Oracle Linux 6.9
БД - IBM 11.1 Express
NetXMS 2.0.8

попытка настроить NetXMS 2.0.8 перед компиляцией с следующими параметрами
sh ./configure --with-server --with-db2 --with-agent --with-client --with-snmp --with-openssl --enable-unicode --disable-ldap --disable-silent-rules
прерывается сообщением
checking sql.h usability... yes
checking sql.h presence... yes
checking for sql.h... yes
checking for SQLAllocHandle in -ldb2... no
configure: error: libdb2 is required for DB2 support


как понимаю, это относится к совместно используемой библиотеке libdb2.so в каталогах /opt/ibm/db2/V11.1/lib64 и /opt/ibm/db2/V11.1/lib32. библиотека является частью установленного ПО IBM DB2.
дополнительно (в качестве меры предосторожности) установлен IBM Data Server Driver Package,также содержащий необходимую библиотеку.

просьба подсказать какие имеются возможности для решения этого вопроса? официальная документация не раскрывает в полной мере вопрос и методы установки связки NetXMS + DB2.

спасибо за внимание!

Alex Kirhenshtein

./configure --with-db2=/opt/ibm/db2/V11.1 ...

Попробуйте так. Если не сработает – пришлите пожалуйста config.log.

Jerzy_Stuhr

Quote from: Alex Kirhenshtein on April 14, 2017, 05:39:13 PM
./configure --with-db2=/opt/ibm/db2/V11.1 ...

Попробуйте так. Если не сработает – пришлите пожалуйста config.log.

это решило проблему с конфигурацией, но компиляция завершается ошибкой:

Making install in db2
make[5]: Entering directory `/home/m-matveev/Загрузки/netxms-2.0.8/src/db/dbdrv/db2'
/bin/sh ../../../../libtool  --tag=CXX   --mode=compile g++ -DHAVE_CONFIG_H -I. -I../../../..  -I../../../../include -I../../../../src/server/include  -D_THREAD_SAFE -DTRE_WCHAR=1 -I/opt/ibm/db2/V11.1/include -I/opt/openssl/include -DUNICODE -D_GNU_SOURCE -O2 -Wformat -Wno-unused-result -Werror=return-type -I/usr/local/include -DPREFIX=L\"/usr/local\" -DDATADIR=L\"/usr/local/share/netxms\" -DBINDIR=L\"/usr/local/bin\" -DLIBDIR=L\"/usr/local/lib\" -DPKGLIBDIR=L\"/usr/local/lib/netxms\" -DSTATEDIR=L\"/usr/local/var/lib/netxms\" -DNDEBUG  -g -O2 -fno-rtti -fno-exceptions -MT db2_la-db2.lo -MD -MP -MF .deps/db2_la-db2.Tpo -c -o db2_la-db2.lo `test -f 'db2.cpp' || echo './'`db2.cpp
libtool: compile:  g++ -DHAVE_CONFIG_H -I. -I../../../.. -I../../../../include -I../../../../src/server/include -D_THREAD_SAFE -DTRE_WCHAR=1 -I/opt/ibm/db2/V11.1/include -I/opt/openssl/include -DUNICODE -D_GNU_SOURCE -O2 -Wformat -Wno-unused-result -Werror=return-type -I/usr/local/include -DPREFIX=L\"/usr/local\" -DDATADIR=L\"/usr/local/share/netxms\" -DBINDIR=L\"/usr/local/bin\" -DLIBDIR=L\"/usr/local/lib\" -DPKGLIBDIR=L\"/usr/local/lib/netxms\" -DSTATEDIR=L\"/usr/local/var/lib/netxms\" -DNDEBUG -g -O2 -fno-rtti -fno-exceptions -MT db2_la-db2.lo -MD -MP -MF .deps/db2_la-db2.Tpo -c db2.cpp  -fPIC -DPIC -o .libs/db2_la-db2.o
In file included from ./sqlcli1.h:45,
                 from db2drv.h:54,
                 from db2.cpp:23:
./sqlcli.h:821: ошибка: conflicting declaration 'typedef unsigned int BOOL'
../../../../include/nms_common.h:583: ошибка: 'BOOL' has a previous declaration as 'typedef int BOOL'
db2.cpp: In function 'wchar_t* GetFieldData(SQLHSTMT, short int)':
db2.cpp:576: ошибка: нет декларации 'pResult' в этой области видимости
db2.cpp:576: ошибка: нет декларации 'i' в этой области видимости
At global scope:
cc1plus: предупреждение: некорректный ключ "-Wno-unused-result"
make[5]: *** [db2_la-db2.lo] Ошибка 1
make[5]: Leaving directory `/home/m-matveev/Загрузки/netxms-2.0.8/src/db/dbdrv/db2'
make[4]: *** [install-recursive] Ошибка 1
make[4]: Leaving directory `/home/m-matveev/Загрузки/netxms-2.0.8/src/db/dbdrv'
make[3]: *** [install-recursive] Ошибка 1
make[3]: Leaving directory `/home/m-matveev/Загрузки/netxms-2.0.8/src/db'
make[2]: *** [install-recursive] Ошибка 1
make[2]: Leaving directory `/home/m-matveev/Загрузки/netxms-2.0.8/src'
make[1]: *** [install-recursive] Ошибка 1
make[1]: Leaving directory `/home/m-matveev/Загрузки/netxms-2.0.8'
make: *** [install] Ошибка 2
[1]+  Exit 2                  make


некоторые необходимые исходные тексты для компиляции с DB2 были взяты из https://github.com/theRocket/mixanalytics/tree/master/lib/db2include.

для решения "sqlcli.h:821: ошибка: conflicting declaration 'typedef unsigned int BOOL'" был найдена актуальная версия sqlcli.h -
https://github.com/strongloop-forks/node-ibm_db/tree/master/deps/db2cli/include

после этого остается только ошибка:

db2.cpp: In function 'wchar_t* GetFieldData(SQLHSTMT, short int)':
db2.cpp:576: ошибка: нет декларации 'pResult' в этой области видимости
db2.cpp:576: ошибка: нет декларации 'i' в этой области видимости
At global scope:
cc1plus: предупреждение: некорректный ключ "-Wno-unused-result"


Алекс, подскажите пожалуйста что означает данный тип ошибки и возможно ли эту ошибку исправить?

спасибо за внимание!

Victor Kirhenshtein

Попробуйте заменить

pResult->values

на

result

в строке 576.

Jerzy_Stuhr

#4
Quote from: Victor Kirhenshtein on April 16, 2017, 12:19:27 PM
Попробуйте заменить

pResult->values

на

result

в строке 576.

спасибо за помощь! ваши советы помогли решить проблему!

UPD!
[root@db2-netxms log]# nxdbmgr check
NetXMS Database Manager Version 2.0.8 Build 8078 (2.0.8-RELEASE) (UNICODE)

Unable to load and initialize database driver "db2.ddr"


далее попытка что конкретно не нравится:
[root@db2-netxms log]# /usr/local/bin/netxmsd -D 9
Using configuration file "/etc/netxmsd.conf"
[16-Apr-2017 17:32:11.102] [DEBUG] LIB directory set to /usr/local/lib/netxms
[16-Apr-2017 17:32:11.103] [DEBUG] Code page set to ASCII
[16-Apr-2017 17:32:11.147] [INFO ] Platform subagent "/usr/local/lib/netxms/linux.nsm" successfully loaded
[16-Apr-2017 17:32:11.148] [ERROR] Unable to load database driver module "db2.ddr": libdb2.so.1: cannot open shared object file: No such file or directory


тут необходимо создать символическую ссылку из /opt/ibm/db2/V11.1/lib64/libdb2.so.1 в /usr/local/lib, тогда эта ошибка исчезает, но для подключения требуется название схемы БД. ее указание произведено в файле настроек как "DBSchema=db2inst1":
[16-Apr-2017 17:39:33.380] [DEBUG] DBConnect: server=db2-netxms db=SAMPLE login=db2inst1 schema=db2inst1
[16-Apr-2017 17:39:33.381] [ERROR] Unable to establish connection with database ([IBM][CLI Driver] CLI0124E  Недопустимое значение аргумента. SQLSTATE=HY009)


db2inst1 или DB2INST1 это схема в которую были импортированы таблицы для NetXMS.
пока откладываю проверку версий на пару дней

Jerzy_Stuhr

Эксперимент с задействованием IBM DB2 решено отложить/прекратить, в виду сложности воспроизведения автоматической сборки и установки такой связки ПО, например с помощью скрипта на голой ОС.
Может быть кто то найдет данное обсуждение и сможет довести дело до конца  :)