NetXMS Support Forum

Russian Support => Общие вопросы => Topic started by: Jerzy_Stuhr on April 13, 2017, 06:57:49 PM

Title: Ошибка при установке NetXMS + IBM DB2
Post by: Jerzy_Stuhr on April 13, 2017, 06:57:49 PM
здравствуйте!

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.

спасибо за внимание!
Title: Re: Ошибка при установке NetXMS + IBM DB2
Post by: Alex Kirhenshtein on April 14, 2017, 05:39:13 PM
./configure --with-db2=/opt/ibm/db2/V11.1 ...

Попробуйте так. Если не сработает – пришлите пожалуйста config.log.
Title: Re: Ошибка при установке NetXMS + IBM DB2
Post by: Jerzy_Stuhr on April 16, 2017, 05:29:40 AM
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 (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 (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"


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

спасибо за внимание!
Title: Re: Ошибка при установке NetXMS + IBM DB2
Post by: Victor Kirhenshtein on April 16, 2017, 12:19:27 PM
Попробуйте заменить

pResult->values

на

result

в строке 576.
Title: Re: Ошибка при установке NetXMS + IBM DB2
Post by: Jerzy_Stuhr on April 16, 2017, 05:04:51 PM
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.
пока откладываю проверку версий на пару дней
Title: Re: Ошибка при установке NetXMS + IBM DB2
Post by: Jerzy_Stuhr on July 27, 2017, 12:17:55 PM
Эксперимент с задействованием IBM DB2 решено отложить/прекратить, в виду сложности воспроизведения автоматической сборки и установки такой связки ПО, например с помощью скрипта на голой ОС.
Может быть кто то найдет данное обсуждение и сможет довести дело до конца  :)