Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 Lazarus+FireBird+РЕД ОС Муром  [new]
zeon11
Member

Откуда: Сибирь, Кемерово
Сообщений: 1194
В рамках "импортозамещения" в контору привезли поделие с РЕД ОС МУРОМ. Из репозитория
установил Lazarus (установился 1.8.4) и Firebird (установился 2.5.9).
Запустил Lazarus, кинул на форму IBConnection, прописал HostName и DataBaseName.
Попытался установить соединение с сервером - пишет ошибку "Can not load default Firebird clients ("libfbclient.so.2.5.1" or "libgds.so" ...... "

По настройкам побегал, ничего не нашел.
Подскажите, где в Lazarus можно сменить библиотеку доступа?
19 мар 20, 05:51    [22101871]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus+FireBird+РЕД ОС Муром  [new]
fraks
Member

Откуда: Новосибирск
Сообщений: 1554
zeon11,

Не знаю кошерно это будет или нет, но раз известно по какому имени ищется либа, что мешает сделать симлинк ""libgds.so" который показывает на ту либу что есть?
19 мар 20, 08:27    [22101899]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus+FireBird+РЕД ОС Муром  [new]
fraks
Member

Откуда: Новосибирск
Сообщений: 1554
Запустил на винде стоящий у меня без дела Lazarus 2.0.2
Кинул на форму IBConnection.
В редакторе кода Ctrl+Click на объявлении
IBConnection1: TIBConnection;

procedure TIBConnection.ConnectFB;      
...
  if isc_attach_database(@FStatus[0], Length(ADatabaseName), @ADatabaseName[1],
    @FSQLDatabaseHandle,
         Length(DPB), @DPB[1]) <> 0 then
    CheckError('DoInternalConnect', FStatus);                                         


клик на isc_attach_database привел в ibase60.inc
Там и есть объявления имен либ.

{$IFDEF Unix}
  {$DEFINE extdecl:=cdecl}
  const
    gdslib = 'libgds.'+sharedsuffix; // Needs completion ?
    libfc  = 'libfbclient.'+sharedsuffix;
    libem  = 'libfbembed.'+sharedsuffix;
    v2  = {$ifndef darwin}'.2'{$else}''{$endif};
    v21 = {$ifndef darwin}'.2.1'{$else}''{$endif};
    v25 = {$ifndef darwin}'.2.5'{$else}''{$endif};
    v251 = {$ifndef darwin}'.2.5.1'{$else}''{$endif};
    fbclib2      = libfc+v2;
    fbembedlib2  = libem+v2;
    fbclib21     = libfc+v21;
    fbembedlib21 = libem+v21;
    fbclib25     = libfc+v25;
    fbembedlib25 = libem+v25;
    fbclib251    = libfc+v251;
    fbembedlib251 = libem+v25;
    // Set default here
    fbclib       = fbclib251;
    fbembedlib   = fbembedlib251;
{$ENDIF}
{$IFDEF Windows}
  {$DEFINE extdecl:=stdcall}
  const
    gdslib = 'gds32.dll';
    fbclib = 'fbclient.dll';
    fbembedlib = 'fbembed.dll';
    libfc  = fbclib;
    libem  = fbembedlib;
{$ENDIF}


Видимо версии выше 2.5.1 не предусмотрены, впрочем, может быть есть обновления.
А так - видимо или исходник подправить, на предмет объявления fbclib
или симлинк сделать.
19 мар 20, 08:52    [22101904]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus+FireBird+РЕД ОС Муром  [new]
fraks
Member

Откуда: Новосибирск
Сообщений: 1554
Может что-то сведущий сможет объяснить, зачем такая заморочка в коде, для объявления имени либы?

А для решения вопроса, можно наверное даже и ничего не править, а просто в модуле где лежит IBConnection
определить константу с таким же именем, с нужным значением:
const fbclib = 'libfbclient.so.2.5.9';
она должна перекрыть объявление из ibase60.inc
19 мар 20, 09:01    [22101905]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus+FireBird+РЕД ОС Муром  [new]
Василий 2
Member

Откуда:
Сообщений: 1016
[quot fraks#22101904]
// Set default here
fbclib = fbclib251;
fbembedlib = fbembedlib251;
[/src]
Скоро уже 4 выйдет, а у этих до сих пор дефолтный 2.5.1 ))
19 мар 20, 10:50    [22101949]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus+FireBird+РЕД ОС Муром  [new]
Kazantsev Alexey
Member

Откуда:
Сообщений: 4200
zeon11
Подскажите, где в Lazarus можно сменить библиотеку доступа?

Я сам не пользовался, но там же есть компонент TSQLDBLibraryLoader.
Картинка с другого сайта.

Сообщение было отредактировано: 19 мар 20, 10:56
19 мар 20, 10:54    [22101952]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus+FireBird+РЕД ОС Муром  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 61137
Василий 2 > у этих до сих пор дефолтный 2.5.1 ))

Шож ты хотел, этой версии Мурома лет 5, поди.
Хорошо, если контора не/для "военки" пишет -
тогда могут быть хоть альтернативы, обновления
версий и пр. Иначе - самому подсовывать файлики
и таскать всё что нужно.

Posted via ActualForum NNTP Server 1.5

19 мар 20, 11:46    [22102023]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus+FireBird+РЕД ОС Муром  [new]
Василий 2
Member

Откуда:
Сообщений: 1016
Гаджимурадов Рустам

Шож ты хотел, этой версии Мурома лет 5, поди.
Хорошо, если контора не/для "военки" пишет -
тогда могут быть хоть альтернативы, обновления
версий и пр. Иначе - самому подсовывать файлики
и таскать всё что нужно.

Да нет, я чекнул FPC с транка, то же самое
19 мар 20, 14:43    [22102216]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus+FireBird+РЕД ОС Муром  [new]
zeon11
Member

Откуда: Сибирь, Кемерово
Сообщений: 1194
Гаджимурадов Рустам
Василий 2 > у этих до сих пор дефолтный 2.5.1 ))

Шож ты хотел, этой версии Мурома лет 5, поди.
Хорошо, если контора не/для "военки" пишет -
тогда могут быть хоть альтернативы, обновления
версий и пр. Иначе - самому подсовывать файлики
и таскать всё что нужно.


Ничего подсовывать нельзя! Мне админы наши говорили, что там чуть-ли не уголовка за "левый" софт. Во что есть в репозитории, тем и пользуйся.
19 мар 20, 15:31    [22102263]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus+FireBird+РЕД ОС Муром  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 61137
Василий 2> Да нет, я чекнул FPC с транка, то же самое

Тогда я не понял проблему - имя библиотеки по
дефолту неправильное или не меняется или что?

zeon11> Ничего подсовывать нельзя! ... Во что есть в репозитории, тем и пользуйся.


Сочувствую. Это, видимо, из разряда очередных дуростей а-ля МСВС.

Posted via ActualForum NNTP Server 1.5

19 мар 20, 16:44    [22102365]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus+FireBird+РЕД ОС Муром  [new]
Kazantsev Alexey
Member

Откуда:
Сообщений: 4200
Гаджимурадов Рустам
или что?

Или что. Соседний компонент найти не могут.
19 мар 20, 16:59    [22102395]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus+FireBird+РЕД ОС Муром  [new]
Док
Member

Откуда: Казань
Сообщений: 6592
zeon11
Во что есть в репозитории, тем и пользуйся.

Помню-помню, на дебе 8-ом знатно потр@хался с либами и их линками от FB при попытке его установки инсталлятором из архива (при штатной установке из репов проблем не было).

Сообщение было отредактировано: 19 мар 20, 17:24
19 мар 20, 17:24    [22102458]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus+FireBird+РЕД ОС Муром  [new]
kealon(Ruslan)
Member

Откуда: Нижневартовск
Сообщений: 5798
zeon11
Ничего подсовывать нельзя! Мне админы наши говорили, что там чуть-ли не уголовка за "левый" софт. Во что есть в репозитории, тем и пользуйся.
если при таком раскладе можно ещё что-то компилировать (что по сути тоже сторонний софт), то скачай исходники и скомпиль как надо :-)

эт я так понимаю какой-то мохнатый клон мандривки, ох и заморочная же она была в настройке всего и вся
19 мар 20, 20:06    [22102563]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus+FireBird+РЕД ОС Муром  [new]
fraks
Member

Откуда: Новосибирск
Сообщений: 1554
Kazantsev Alexey
Гаджимурадов Рустам
или что?

Или что. Соседний компонент найти не могут.


Онлайн дока на IBConnection - пустая.
Кто бы знал что для указания имени библиотеки нужен аж целый отдельный компонент.

Заглянул в потроха этого TSQLDBLibraryLoader и непонял что мешало реализовать это внутри TIBConnection.
99% кода TSQLDBLibraryLoader - это самообслуживание, что бы он выглядел компонентом, не более того.

Все IMHO.
20 мар 20, 04:13    [22102639]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus+FireBird+РЕД ОС Муром  [new]
fraks
Member

Откуда: Новосибирск
Сообщений: 1554
fraks
Может что-то сведущий сможет объяснить, зачем такая заморочка в коде, для объявления имени либы?

Поковырялся, там TIBConnection = class (TSQLConnection) и все эти множественные пляски видимо от того что бы не ломать функциональность которую вынесли в родительский класс.

fraks
А для решения вопроса, можно наверное даже и ничего не править, а просто в модуле где лежит IBConnection
определить константу с таким же именем, с нужным значением:
const fbclib = 'libfbclient.so.2.5.9';
она должна перекрыть объявление из ibase60.inc

Нет, такой вариант не работает, все заметно сложнее :)
20 мар 20, 04:49    [22102640]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus+FireBird+РЕД ОС Муром  [new]
zeon11
Member

Откуда: Сибирь, Кемерово
Сообщений: 1194
Kazantsev Alexey
zeon11
Подскажите, где в Lazarus можно сменить библиотеку доступа?

Я сам не пользовался, но там же есть компонент TSQLDBLibraryLoader.
Картинка с другого сайта.


Да, этот вариант работает, только надо "плавно" войти в БД и "плавно" выйти, а то ошибки выскакивают.
Так вот работает нормально:
+
procedure TForm1.Button1Click(Sender: TObject);
begin
  SQLDBLibraryLoader1.LibraryName:='/usr/lib64/libfbclient.so.2.5.7';
  SQLDBLibraryLoader1.Enabled:=True;
  IBConnection1.Connected:=True;
  QPatient.Active:=True;
  QRec.Active:=True;

end;

procedure TForm1.FormClose(Sender: TObject; var CloseAction: TCloseAction);
begin
   QRec.Active:=False;
   QPatient.Active:=False;
   IBConnection1.Connected:=False;
   SQLDBLibraryLoader1.Enabled:=False;

end;    
20 мар 20, 04:58    [22102641]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus+FireBird+РЕД ОС Муром  [new]
zeon11
Member

Откуда: Сибирь, Кемерово
Сообщений: 1194
И всё равно, не понятно, почему в РЕД ОС в меню везде указано, что установился FB 2.5.9,
а библиотека на компьютере оказалась 2.5.7?

Это риторический вопрос.
20 мар 20, 05:07    [22102642]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus+FireBird+РЕД ОС Муром  [new]
fraks
Member

Откуда: Новосибирск
Сообщений: 1554
zeon11
И всё равно, не понятно, почему в РЕД ОС в меню везде указано, что установился FB 2.5.9,
а библиотека на компьютере оказалась 2.5.7?

В целях уменьшения энтропии вселенной, было бы наверное не вредно сообщить об этом разработчику.
Например вот что нашел на сайте РЕД ОС:

РЕД ОС
По вопросам сотрудничества или технической поддержки Вы можете обратиться: отправив сообщение на адрес электронной почты redos.support@red-soft.ru или позвонив на круглосуточный, многоканальный телефон 8 (800) 200 48 02 (Бесплатно на территории РФ)


Техподдержка у них платная, но вряд-ли они будут брать деньги на указание ошибки в инсталляторе.
Может быть и поправят.

Или можно сообщить туда черех разработчиков того поделия где это установлено.
Вполне вероятно что у них техподдержка РЕД ОС оплачена.

Сообщение было отредактировано: 20 мар 20, 08:00
20 мар 20, 07:52    [22102666]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus+FireBird+РЕД ОС Муром  [new]
fraks
Member

Откуда: Новосибирск
Сообщений: 1554
Для информации.

РЕД СОФТ является разработчиком РЕД БАЗА ДАННЫХ, которая является форком Firebird.

Кроме того, на сколько я в курсе, РЕД СОФТ свои доработки Firebird, видимо не все, передает для включения в Firebird.

Редсофт является членом Firebird Foundation со статусом "Платиновый".

IMHO, шансы что багрепорт дойдет по назначению - весьма высоки.
20 мар 20, 08:00    [22102668]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить