AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Portierung Firebird von Win auf Linux: UDF Lib Fehler
Thema durchsuchen
Ansicht
Themen-Optionen

Portierung Firebird von Win auf Linux: UDF Lib Fehler

Ein Thema von ZOD · begonnen am 20. Apr 2023 · letzter Beitrag vom 24. Apr 2023
Antwort Antwort
ZOD

Registriert seit: 6. Mai 2009
97 Beiträge
 
#1

Portierung Firebird von Win auf Linux: UDF Lib Fehler

  Alt 20. Apr 2023, 10:34
Datenbank: Firebird • Version: 2.5 • Zugriff über: dbexpress
Hallo zusammen,

wir arbeiten derzeit daran, unseren FB Server auf Linux zu migrieren, unter Win verwenden wir derzeit FB2.5 (daher habe ich FB2.5 als ergänzende Angabe für den Thread hinterlegt).

Da ich selbst leider nahezu keine Erfahrung mit Linux habe, haben wir uns dafür Unterstützung geholt.
Die Installation der Virtualisierung auf dem Host, der VM und von FB hat gut geklappt, der FB Server läuft, Datenbanken können aus der Sicherung vom aktuellen FB2.5 Server (erzeugt mit dem FB CL Befehl "gback") importiert werden und angesprochen werden.

Leider bekommen wir eine notwendige UDF Library nicht zum laufen (FreeAdhocUDF (http://freeadhocudf.org) ), wir bekommen den Fehler

Use of UDF/BLOB-filter module at location FreeAdhocUDF is not allowed by server configuration.

Zuerst haben wir es mit FB3 versucht und sind an Fehlern beim UDF aufruf z.B. in selects gescheitert. Dann haben wir es mit FB4 versucht und sind ebenfalls gescheitert.
Uns ist nicht klar, welche Server Konfiguration (darauf verweist die Fehlermeldung) wir falsch eingestellt haben.

Kann mir jemand dazu Hilfe bzw. Tipps beben? Das wäre klasse. Dazu sind natürlich weitere Infos nötig, im Folgenden versuche ich die Details so gut wie möglich zu beschreiben.

Vorher noch eine Anmerkung zum Thema UDF Ablösung:
sicher werden in Zukunft auch bei uns die UDF durch aktuelle Konzepte ersetzt, derzeit möchten wir das aber aus pragmatischen Gründen (viele Abfragen müssen dafür geändert werden) derzeit noch nicht angehen .. wenn möglich.

Unten nun die Detais zu unserem Problem.

Danke und Gruß
Markus

Was wir aktuell erledigt haben:
  1. Aufbau Linux Host (HP DL380 Gen9) -> erledigt
  2. Installation Virtualisierung Proxmox 7.4.3 -> erledigt
  3. Aufsetzen einer Linux VM (Debian 11) -> erledigt
  4. Installation Firebird 4.0 -> erledigt

Hier die Eckdaten der VM für den FB Server:
  • Debian 11 64bit
  • uname -a sagt: Linux RMVM18 5.10.0-21-amd64 #1 SMP Debian 5.10.162-1 (2023-01-21) x86_64 GNU/Linux

Firebird haben wir sowohl über apt installiert...
firebird3.0-common 3.0.7.33374.ds
firebird3.0-server 3.0.7.33374.ds
firebird3.0-server-core q3.0.7.33374.ds
firebird3.0-utils q3.0.7.33374.ds

... als auch alternativ direkt mit den Installations-Paketen von
https://firebirdsql.org/en/firebird-3-0/#Linux_AMD64:

https://github.com/FirebirdSQL/fireb...0.amd64.tar.gz

Am Ende haben wir es dann noch mit der 4er-Version probiert:

https://github.com/FirebirdSQL/fireb...0.amd64.tar.gz

Die Abhängigkeiten von den zusätzlich zu installierenden lib-Dateien
haben wir erfolgreich geprüft mit...

ldd FreeAdhocUDF.so

Ergebnis:
cd.1 (0x00007fff557da000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fae5a559000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fae5a384000)
libib_util.so => /lib/x86_64-linux-gnu/libib_util.so (0x00007fae5a37f000)
libicudataFAU.so.44 => /lib/x86_64-linux-gnu/libicudataFAU.so.44
(0x00007fae5933f000)
libicui18nFAU.so.44 => /lib/x86_64-linux-gnu/libicui18nFAU.so.44
(0x00007fae58f65000)
libicuucFAU.so.44 => /lib/x86_64-linux-gnu/libicuucFAU.so.44
(0x00007fae58c12000)
libfbclient.so.2 => /lib/x86_64-linux-gnu/libfbclient.so.2
(0x00007fae58a6e000)
/lib64/ld-linux-x86-64.so.2 (0x00007fae5a8d3000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0
(0x00007fae58a4c000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fae58a46000)
libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fae58879000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fae5885f000)
libtommath.so.1 => /lib/x86_64-linux-gnu/libtommath.so.1
(0x00007fae5883d000)

Einstellung in der firebird.conf:

UdfAccess = Restrict (mit/ohne Pfadangaben, alle möglichen Pfade probiert, auch Full)

Das Ergebnis ist leider aber identisch: die Einbindung von FreeAdhocUDF gelingt NICHT, es kommt beim Aufruf

Code:
Select f_abs(-1) from rdb$database;
Unsuccessful execution caused by a system error that precludes
successful execution of subsequent statements.
Use of UDF/BLOB-filter module at location FreeAdhocUDF is not
allowed by server configuration.
-------------------------------------------------------------------------------------------------------------
SQLCODE: -902
SQLSTATE: 28000
GDSCODE: 335544831

Geändert von ZOD (20. Apr 2023 um 10:40 Uhr)
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.490 Beiträge
 
Delphi 7 Professional
 
#2

AW: Portierung Firebird von Win auf Linux: UDF Lib Fehler

  Alt 20. Apr 2023, 11:55
Hilft Dir eventuell ein Blick in die Firebird-2.1-ErrorCodes weiter?

Dort steht zum angegebenen Fehlercode: -902 335544831 conf_access_denied Access to @1 "@2" is denied by server administrator

SQLSTATE: 28000 bedeutet: Invalid authorization specification

Eventuell ein Rechteproblem?

Keine Ahnung, ob das nun eine Rechteproblem auf Datenbank- oder auf Betriebssystemebene sein könnte.
  Mit Zitat antworten Zitat
ZOD

Registriert seit: 6. Mai 2009
97 Beiträge
 
#3

AW: Portierung Firebird von Win auf Linux: UDF Lib Fehler

  Alt 20. Apr 2023, 12:42
Hi, danke für den Tipp.

mhm .. dann müsste im Bereich des FB Server nach dieser Meldung

"..Invalid authorization specification"

eingestellt werden? Aber wo nur? Ich habe dazu nichts gefunden.

Auf OS Ebene sind die Rechte alle da (lesen, schreiben, ausführen)

Markus
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.490 Beiträge
 
Delphi 7 Professional
 
#4

AW: Portierung Firebird von Win auf Linux: UDF Lib Fehler

  Alt 20. Apr 2023, 13:13
Mit welcher Software setzt Du denn das Select f_abs(-1) from rdb$database; ab?

ISQL, FlameRobin, eigene Software?

Gibt es in den neuen Datenbanken die gleichen User mit identischen Passwörtern, wie im "Original"?
Sind irgendwelche Rollen vergeben, stimmen die überein?

Funktioniert der Aufbau einer Verbindung zur Datenbank?

Funktioniert ein Select * from rdb$database; Sprich: Scheitert "nur" der Aufruf der Funktion f_abs(), aber andere Abfragen funktionieren?

Mal die firebird.confs miteinander verglichen?

Hilft die FAQ 203 weiter?
  Mit Zitat antworten Zitat
lowmax_5

Registriert seit: 9. Mai 2003
Ort: Münster, NRW
258 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Portierung Firebird von Win auf Linux: UDF Lib Fehler

  Alt 20. Apr 2023, 14:02
Ggf. ist es möglich, dass unter Linux die UDFLib noch spezielle Rechte des Firebird Dienstes benötigt, damit dieser darauf zugreifen kann. Dieses mal prüfen und schauen unter welchem User der fbserver läuft.
Nach dem Kopieren hat die UDFLib definitiv nicht die benötigen Rechte (Linux )

Geändert von lowmax_5 (20. Apr 2023 um 14:08 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von IBExpert
IBExpert
Online

Registriert seit: 15. Mär 2005
672 Beiträge
 
FreePascal / Lazarus
 
#6

AW: Portierung Firebird von Win auf Linux: UDF Lib Fehler

  Alt 20. Apr 2023, 21:01
mit fb25 haben wir die freeadhoc udf bei einigen Kunden auch mit linux am laufen, mit fb30
haben wir das nicht mehr ernsthaft weiterprobiert, weil die compilate von der freeadhoc
mit irgendwelchen libs von linux laufen müssen, die aber per default nicht von fb3 benutzt
werden und teilweise kompliziert in neuere Linux versionen eingebaut werden müssen.

Es kann tausend gründe haben, die extrem versions abhängig sind oder ganz banal
fehlende chmod auf relevanten files. Wie schon woanders angedeutet, ich würde mir bei fb3
mit linux aber auch mit windows freeadhoc sowieso nicht mehr freiwillig antun, weil die so
schlecht programmiert ist, das man mit diversen befehlen und unpassenden parametern
den kompletten firebird server dienst für alle user zum absturz bringen kann.

Die alternative die wir dafür bei Kunden nutzen, ist die ibexpert function lib, in der fast
alles drin ist was sinnvoll ist und man braucht dafür auch nix neues im sql anpassen, weil
die gleichen Funktionen (mit ausnahme von zB F_ROSENMONTAG oder ähnlicher unsinn, die sind
zwar drin aber nicht 100% sinnvoll implementiert, ca 95% der Funktionen sind aber komplett und natürlich
erweiterbar, weil wir das produkt als Firebird stored function Quellcode ausliefern) genau
so aufgerufen werden könne, aber mit source als stored function implementiert sind.

Um das in der datenbank umzustellen, würde man mit ibexpert tools-extract metadata mit daten
in seperate files machen und dann vor dem einspielen den teil in der ibe$start.sql , in dem
die bisherigen udfs deklariert sind, durch das neue stored function script ersetzen. Danach
ist eure db auf jeder windows oder linux fb3/fb4/fb5 benutzbar ohne irgendwelche dll/so
basteleien und auch ab fb4 brauchst du nicht die dann eh erst mal per conf deaktivierten
UDFs reaktivieren. Und wenn du das bei dutzenden oder hunderten oder ... Kunden automatisiert
mahen musst, geht auch das mit ibeblock und ibec_extractmetadata in unsere ibescript
script engine auch per batch laufen kann.

Muss aber ja jeder selbst wissen, womit er seine Zeit verbringt ...
Holger Klemt
www.ibexpert.com - IBExpert GmbH
Oldenburger Str 233 - 26203 Wardenburg - Germany
IBExpert and Firebird Power Workshops jederzeit auch als Firmenschulung
  Mit Zitat antworten Zitat
ZOD

Registriert seit: 6. Mai 2009
97 Beiträge
 
#7

AW: Portierung Firebird von Win auf Linux: UDF Lib Fehler

  Alt 24. Apr 2023, 07:21
Guten Morgen zusammen!

wir haben das Problem lösen können:

Wir arbeiteten mit symbolischen Links an allen denkbaren
Stellen (das ist die übliche Strategie), aber am Ende mußten wir die
FreeAdhocUDF_FB2x_amd64.so nach FreeAdhocUDF.so explizit KOPIEREN, dann
funktionierte es plötzlich!

Weitere Info: wir verwendeten das Verzeichnis /UDF/ als Speicherort für
die UDF und hatten
UdfAccess=Restrict /UDF in der firebird.conf eingetragen.

Nochmals Dank an alle für die Antworten.

Markus
  Mit Zitat antworten Zitat
Alt 12. Mai 2023, 10:46     Erstellt von dordle12
Dieser Beitrag wurde von TBx gelöscht. - Grund: Verdacht auf SPAM und den damit verbundenen verschwenderischen Umgang von wertvollen Bits und Bytes
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz