DBD::InterBase

MySQL/PostgreSQL/SQLite/Oracle/M$SQL/....

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Felliks
проходил мимо
Сообщения: 1
Зарегистрирован: 2014-02-21 8:14:45

DBD::InterBase

Непрочитанное сообщение Felliks » 2014-02-21 10:47:21

Доброго времени суток!

Имеется сервер с FreeBSD 8.2 amd64, с пересобраным ядром (ядерный ipfw,nat). Больше из конфигурации GENERIC ничего не менялось.
Firebird-client 2.0.7
Firebird-server 2.0.7_1
DBD-Interbase-0.48
Так получилось, что система 2 года не обновлялась и хорошо в принципе работала, но хотелось русский UTF8 в консоли и mc. Поправил локаль, решил поставить новую версию MC.
После

Код: Выделить всё

 portsnap fetch update

мне сказали что куча софта устарело, ну и обновленный mc отказался ставиться. Решил обновить все разом (portupgrade -a), что и было роковой ошибкой.
Обновился perl, apache, php, firebird.
На сервере крутятся сайты, написанные на php и perl. И все бы ничего, конфиги подхватились, базы подхватились, на php все работает, с перловкой проблемы.
Раньше был порт p5-DBD-Interbase, сейчас его удалили из портов и пишут что ставить надо через CPAN.

Далее опишу примерный порядок действий и свои мысли:
1. ставим cpan, конфигаем его, заходим в shell
2. ставим DBI (install DBI) - встает без вопросов.
2. ставим DBD::InterBase (install DBD::InterBase) - в тесте просит указать путь к bin Firebird'а, по умолчанию стоит /usr/local/bin, файлы fb_inet_server и другие присутствуют, сервер запущен и даже клиентские приложения цепляются к базе и все корректно работает. Также указываем путь к lib (по умолчанию тоже верный), затем путь к базе, логин и пароль.
Результат - ошибка в Makefile.pl в строке 204, где происходит вызов процедуры gstat -user $user -password $password -h <путь_к_файлу>.
Начинаю копаться и выясняется что gstat нынче не в моде, сейчас он зовется fbstat. Как задать параметр при сборке в cpan так и не нашел, вытащил исходники, поправил руками в строке 202

Код: Выделить всё

gstat gstat.exe

на

Код: Выделить всё

fbstat fbstat.exe
Далее запускаем

Код: Выделить всё

perl Makefile.pl
Все корректно и без ошибок. Создался Makefile.
Ну думаю победа! А-н нет...
make валит кучу ошибок, начинаются они с того, что в файле dbdimp.h подключается <ibase.h>. Лежит он в /usr/local/include, никого не трогает лежит... Но при сборке не подхватывается. Пало подозрение что надо задать параметр для make типа

Код: Выделить всё

--with-ib...=/usr/local/include
но подходящего параметра так и не придумал (стыд и позор мне за это).
Костылем решил сделать так: скопировал в папку со скриптами ibase.h и в dbdimp.h в строке 68 указал

Код: Выделить всё

include "ibase.h"

вместо

Код: Выделить всё

include <ibase.h>
, ну типа он тут же и лежит и никуда ходить не надо. Он подхватился!
Следующими повалились ошибки в dbdimp.c. Undeclarated различных переменных... Т.к. после 2х суток беспрерывного ковыряния и попыток вылечить эту ересь разбираться в коде сильно уж не хотелось - стал комментить те условия, в которых были не объявленные переменные, а это строки: 114-116, 696-699, 1994-1995. В этих строках содержатся какие-то условия. В первом наборе определение чего-то и вывод на экран ( не критично как понимаю, ну не выведет он мне чем дальше займется - переживу). Во втором return result в зависимости от условия sv_yes или sv_no, а в третьем условие, касаемое perl_destruct_level. В общем комментирование помогло собраться модулю с парой warning и make install прошел нормально.

Сайт на перле заработал, есть коннект к базе и вроде даже все что нужно делается и правильно. Вопроса два:
1. Насколько критичны исправления в таком виде ( не просто же так этот код писали туда).
2. Что изначально было сделано не так, что отказался ставиться данный модуль? (ну кроме того, что было поставлено автоматическое обновление, которое наказало меня дополнительной работой)

p.s. локаль завелась после обновления mc :)

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35456
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: DBD::InterBase

Непрочитанное сообщение Alex Keda » 2014-03-16 0:04:44

если работает - значит вы выпилили ненужный функционал.
теперь даже лучше будет работать - меньше кода - быстрей пашет =)
Убей их всех! Бог потом рассортирует...