Страница 1 из 1

FB2.1 и UDF

Добавлено: 19 июн 2009, 02:44
SeventhSon
не понимаю что происходит.сервер Linux Ubuntu,если ставлю FB из deb то не могу прикрутить UDF-не найдена.а если ставлю из исходников то всё работает.всё делаю одинаково,меняю владельца файла и права после копирования.не помогает.сама UDF не моя.может быть какая-то маленькая ошибка в самой UDF которая приводит к такому результату?или всё-таки что-то не так с правами?а может быть такое что при вызове UDF FB вызывает какие-то ещё библиотеки и вот именно их недоступность и приводит к ошибке а сама UDF не при чём?

Re: FB2.1 и UDF

Добавлено: 19 июн 2009, 11:49
Attid
в чем вопрос ? где текст ошибки ?

Re: FB2.1 и UDF

Добавлено: 19 июн 2009, 16:18
SeventhSon
разобрался.некоторые проблемы с подключением сторонних UDF могут быть связаны с отсутствием файла /usr/lib/libgds.so.он был в старых версиях интербейза.в FB его заменяет libfbclient.so.2.виндовый инсталятор FB предлагает скопировать в %systemroot% fbclient.dll под именем GDS.dll.возможно если ставить FB из исходников там делается симлинк,а если из пакетов то увы нет.решается проблема одной командой ln -s /usr/lib/libfbclient.so.2 /usr/lib/libgds.so.жаль что разработчики пакетов не добавляют её в постинстолл скрипт.возможно это является причиной многих глюков.

ну вот.сам спросил,сам и ответил:)

Re: FB2.1 и UDF

Добавлено: 19 июн 2009, 17:17
hvlad
С какой радости инсталлятор FB должен штатно (!) ломать (!) существующую библиотеку от другого (!) продукта ???

Re: FB2.1 и UDF

Добавлено: 19 июн 2009, 19:37
SeventhSon
виндовый инсталятор FB предлагает скопировать в %systemroot% fbclient.dll под именем GDS.dll
ничто не мешает сделать это в линуксе

Re: FB2.1 и UDF

Добавлено: 20 июн 2009, 01:08
hvlad
Ничто не мешает думать головой, а не...

Re: FB2.1 и UDF

Добавлено: 20 июн 2009, 01:09
hvlad
Добавлю. Если UDF требует gds32, то она написана для IB и нехрен её класть под FB.
Так понятнее ?

Re: FB2.1 и UDF

Добавлено: 21 июн 2009, 04:25
SeventhSon
ничто не мешает быть повежливее.может написана для IB но под FB работает прекрасно.тогда объясните зачем виндовый инсталятор предлагает скопировать fbclient под именем gds?
так для интереса,у меня программа написанная под IB56 работает на FB21.правда пришлось кое-что в базе подправить.но причина по которой пришлось править базу-банальные ошибки которые IB56 прощал

Re: FB2.1 и UDF

Добавлено: 21 июн 2009, 12:22
kdv
программа и udf - разные вещи. Программа может быть хоть под ИБ4 написана, и при успешном переносе базы может работать и с IB 2009 и с FB 2.5.
А вот UDF... есть несколько критериев, когда могут быть глюки
- в udf есть функции требующие декларации с FREE_IT, но при этом функции используют malloc вместо модуля ib_utul.dll. Тут север просто будет падать.
- udf использует функции из клиентской библиотеки (gds32.dll, fbclient.dll). Если используемые функции отличаются по реализации между FB и IB - возможны глюки и падения сервера

Основная проблема в том, что udf при некорректной работе валит сервер. Некорректная клиентская программа такого сделать не может в принципе.
тогда объясните зачем виндовый инсталятор предлагает скопировать fbclient под именем gds?
потому что у ФБ начиная с 1.5 клиент называется fbclient.dll. и если в вашу программу вкомпилировано использование gds32.dll (например, если используется IBX), то без создания gds32.dll из fbclient.dll программа не будет работать, т.е. попросту не найдет gds32.dll.
Если же подсунуть клиенту gds32.dll от InterBase, а сервер будет Firebird, то могут быть проблемы с работой приложения (вылезут несовместимости), или может сервер или клиентская часть падать - несовместимость протокола клиента и сервера.

Странно, что все это приходится объяснять, если Вы писали программы еще под IB 5.6. Как бы, IB 5 существует с 1997 года. А IB 6 - с 2000. Как минимум 9-10 лет минуло.

Re: FB2.1 и UDF

Добавлено: 21 июн 2009, 13:00
hvlad
SeventhSon писал(а):тогда объясните зачем виндовый инсталятор предлагает скопировать fbclient под именем gds?
А он не тупо копирует. Он ещё и номер версии правит при этом. Для чего ? RTFM

Re: FB2.1 и UDF

Добавлено: 22 июн 2009, 03:45
SeventhSon
я может не так выразился или меня не так поняли.под IB56 я не писал ничего.программа написана другими, я сопровождаю.
так вот по UDF.как я понял прежде чем задекларировать UDF с FREE_IT её нужно соответствующим образом написать и скомпилировать.а если она написана в допотопные времена то и никакого FREE_IT в декларации быть не может.во всяком случае у меня так и есть.и сервер не падает.
зачем UDF требует libgds.so не знаю.но после того как я сделал симлинк всё работает.это факт.
собственно всё это я написал для тех кто попадёт в похожую ситуацию.может кому-то поможет

Re: FB2.1 и UDF

Добавлено: 22 июн 2009, 11:19
kdv
как я понял прежде чем задекларировать UDF с FREE_IT её нужно соответствующим образом написать и скомпилировать.а если она написана в допотопные времена то и никакого FREE_IT в декларации быть не может
не совсем так, правда я уже достоверно не помню - возможно 5.0 была без этой самой ib_utul.dll, но впоследствии она появилась, и использовать вызов ib_util_malloc вместо malloc в udf с FREE_IT стало обязательным. Но на тот момент разработчики этим особо не парились, т.к. в перспективе про Firebird и даже IB 6 (компилируемые другими компиляторами, и с другим менеджером памяти для malloc) никто не думал.
зачем UDF требует libgds.so не знаю.
могут еще использоваться функции конвертации дат, которые по всем версиям IB/FB совместимы.