![]() |
Datenbank: Firebird • Version: 2.5 • Zugriff über: dbexpress
Portierung Firebird von Win auf Linux: UDF Lib Fehler
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 ( ![]() 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:
Hier die Eckdaten der VM für den FB Server:
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 ![]() ![]() Am Ende haben wir es dann noch mit der 4er-Version probiert: ![]() 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:
Unsuccessful execution caused by a system error that precludes
Select f_abs(-1) from rdb$database;
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 |
AW: Portierung Firebird von Win auf Linux: UDF Lib Fehler
Hilft Dir eventuell ein Blick in die
![]() 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. |
AW: Portierung Firebird von Win auf Linux: UDF Lib Fehler
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 |
AW: Portierung Firebird von Win auf Linux: UDF Lib Fehler
Mit welcher Software setzt Du denn das
SQL-Code:
ab?
Select f_abs(-1) from rdb$database;
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
SQL-Code:
Sprich: Scheitert "nur" der Aufruf der Funktion f_abs(), aber andere Abfragen funktionieren?
Select * from rdb$database;
Mal die firebird.confs miteinander verglichen? Hilft die ![]() |
AW: Portierung Firebird von Win auf Linux: UDF Lib Fehler
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 ;-) ) |
AW: Portierung Firebird von Win auf Linux: UDF Lib Fehler
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 ... |
AW: Portierung Firebird von Win auf Linux: UDF Lib Fehler
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 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:49 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz