Lazarus Prog weitergeben

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
hobbyprog
Beiträge: 6
Registriert: Mi 28. Okt 2020, 20:17

Lazarus Prog weitergeben

Beitrag von hobbyprog »

Hallo,
ich habe ein kleines Programm mit Lazarus geschrieben, welches auf eine mariaDB auf einem anderen Rechner zugreift. Wenn ich nun das Binary weitergebe, kann ich von dem anderen Rechner aus keine Verbindung zur Datenbank aufbauen. Der Server ist aber voll erreichbar von dem Rechner aus. Eine Fehlermeldung anhand der ich sehen könnte, welche Bibliothek oder so fehlt, bekomme ich nicht.
Beide Rechner laufen unter der gleichen Linux Version (OpenSuse Leap 15.2) und sind absolut identische Rechner.
Wie sehe ich, welche Bibliotheken oder sonstige Dateien ich mit meinem Programm mitgeben muss bzw. welche Pakete / Treiber / Bibliotheken auf dem anderen Rechner ebenfalls installiert sein müssen?
Im Moment versuche ich das durch Try and Error raus zu finden, doch das kann ja wohl nicht die Lösung sein.

Lemmy
Beiträge: 57
Registriert: Do 23. Feb 2017, 06:18

Re: Lazarus Prog weitergeben

Beitrag von Lemmy »

dann wäre sicherlich mal ne wichtige Information mit welchen Clientkomponenten du die Anwendung gebaut hast.
Meine Glaskugel meint noch dazu: ist auf dem "anderen" Rechner der MariaDB Client installiert?

Grüße

hobbyprog
Beiträge: 6
Registriert: Mi 28. Okt 2020, 20:17

Re: Lazarus Prog weitergeben

Beitrag von hobbyprog »

Oh sorry, mein Fehler
Ich nutze die ganz normalen Standard Komponenten von Lazarus. Also MySQL56Connection, SQLQuery und SQLTransaction.
Wie gesagt, auf dem Entwicklungsrechner läuft alles super, auf dem anderen Rechner scheint irgendwelche Dateien für die Datenbankverbindung zu fehlen.

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1430
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Lazarus Prog weitergeben

Beitrag von fliegermichl »

Der Befehl
ldd executable

zeigt die Abhängigkeiten und ob bzw. wo diese gefunden wurden

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Lazarus Prog weitergeben

Beitrag von af0815 »

hobbyprog hat geschrieben:
Mi 28. Okt 2020, 21:28
Oh sorry, mein Fehler
Ich nutze die ganz normalen Standard Komponenten von Lazarus. Also MySQL56Connection, SQLQuery und SQLTransaction.
Wie gesagt, auf dem Entwicklungsrechner läuft alles super, auf dem anderen Rechner scheint irgendwelche Dateien für die Datenbankverbindung zu fehlen.
Ganz einfach da müssen auch auf dem Zielrechner die Pakete für die MySQLverbindung installiert sein. Meist auch die -dev Pakete.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

PascalDragon
Beiträge: 825
Registriert: Mi 3. Jun 2020, 07:18
OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
CPU-Target: Aarch64 bis Z80 ;)
Wohnort: München

Re: Lazarus Prog weitergeben

Beitrag von PascalDragon »

af0815 hat geschrieben:
Do 29. Okt 2020, 13:21
Ganz einfach da müssen auch auf dem Zielrechner die Pakete für die MySQLverbindung installiert sein. Meist auch die -dev Pakete.
Die -dev Pakete sollten rein für die Laufzeit nicht nötig sein, da der Linker den symbolischen Link der Bibliothek auf deren versionierten Namen auflöst.
FPC Compiler Entwickler

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: Lazarus Prog weitergeben

Beitrag von theo »

Hmm, ich glaube libmariadb-devel sollte auf OpenSuse schon auch für den Client installiert sein.
Bei der Firewall alles klar?

hobbyprog
Beiträge: 6
Registriert: Mi 28. Okt 2020, 20:17

Re: Lazarus Prog weitergeben

Beitrag von hobbyprog »

fliegermichl hat geschrieben:
Do 29. Okt 2020, 09:40
Der Befehl
ldd executable

zeigt die Abhängigkeiten und ob bzw. wo diese gefunden wurden
Die Ausgabe von meinem kleinen Tool ergibt nun folgendes:

Code: Alles auswählen

ldd pWm 
        linux-vdso.so.1 (0x00007ffc7f977000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007fe61426d000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fe61404e000)
        libgdk-x11-2.0.so.0 => /usr/lib64/libgdk-x11-2.0.so.0 (0x00007fe613d98000)
        libX11.so.6 => /usr/lib64/libX11.so.6 (0x00007fe613a57000)
        libgdk_pixbuf-2.0.so.0 => /usr/lib64/libgdk_pixbuf-2.0.so.0 (0x00007fe613832000)
        libgtk-x11-2.0.so.0 => /usr/lib64/libgtk-x11-2.0.so.0 (0x00007fe6131f5000)
        libgobject-2.0.so.0 => /usr/lib64/libgobject-2.0.so.0 (0x00007fe612f99000)
        libglib-2.0.so.0 => /usr/lib64/libglib-2.0.so.0 (0x00007fe612c75000)
        libgthread-2.0.so.0 => /usr/lib64/libgthread-2.0.so.0 (0x00007fe612a73000)
        libgmodule-2.0.so.0 => /usr/lib64/libgmodule-2.0.so.0 (0x00007fe61286f000)
        libpango-1.0.so.0 => /usr/lib64/libpango-1.0.so.0 (0x00007fe612623000)
        libcairo.so.2 => /usr/lib64/libcairo.so.2 (0x00007fe6122ec000)
        libatk-1.0.so.0 => /usr/lib64/libatk-1.0.so.0 (0x00007fe6120c5000)
        libc.so.6 => /lib64/libc.so.6 (0x00007fe611d0a000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fe614471000)
        libpangocairo-1.0.so.0 => /usr/lib64/libpangocairo-1.0.so.0 (0x00007fe611afb000)
        libgio-2.0.so.0 => /usr/lib64/libgio-2.0.so.0 (0x00007fe61172b000)
        libfontconfig.so.1 => /usr/lib64/libfontconfig.so.1 (0x00007fe6114e6000)
        libXrender.so.1 => /usr/lib64/libXrender.so.1 (0x00007fe6112dc000)
        libXinerama.so.1 => /usr/lib64/libXinerama.so.1 (0x00007fe6110d9000)
        libXi.so.6 => /usr/lib64/libXi.so.6 (0x00007fe610ec8000)
        libXrandr.so.2 => /usr/lib64/libXrandr.so.2 (0x00007fe610cbd000)
        libXcursor.so.1 => /usr/lib64/libXcursor.so.1 (0x00007fe610ab2000)
        libXcomposite.so.1 => /usr/lib64/libXcomposite.so.1 (0x00007fe6108af000)
        libXdamage.so.1 => /usr/lib64/libXdamage.so.1 (0x00007fe6106ac000)
        libXfixes.so.3 => /usr/lib64/libXfixes.so.3 (0x00007fe6104a6000)
        libXext.so.6 => /usr/lib64/libXext.so.6 (0x00007fe610294000)
        libxcb.so.1 => /usr/lib64/libxcb.so.1 (0x00007fe61006b000)
        libm.so.6 => /lib64/libm.so.6 (0x00007fe60fd33000)
        libpangoft2-1.0.so.0 => /usr/lib64/libpangoft2-1.0.so.0 (0x00007fe60fb1d000)
        libffi.so.7 => /usr/lib64/libffi.so.7 (0x00007fe60f913000)
        libpcre.so.1 => /usr/lib64/libpcre.so.1 (0x00007fe60f688000)
        libfribidi.so.0 => /usr/lib64/libfribidi.so.0 (0x00007fe60f46c000)
        libthai.so.0 => /usr/lib64/libthai.so.0 (0x00007fe60f262000)
        libharfbuzz.so.0 => /usr/lib64/libharfbuzz.so.0 (0x00007fe60ef59000)
        libpixman-1.so.0 => /usr/lib64/libpixman-1.so.0 (0x00007fe60ecb3000)
        libfreetype.so.6 => /usr/lib64/libfreetype.so.6 (0x00007fe60e9f9000)
        libEGL.so.1 => /usr/lib64/libEGL.so.1 (0x00007fe60e7e5000)
        libpng16.so.16 => /usr/lib64/libpng16.so.16 (0x00007fe60e5a2000)
        libxcb-shm.so.0 => /usr/lib64/libxcb-shm.so.0 (0x00007fe60e39e000)
        libxcb-render.so.0 => /usr/lib64/libxcb-render.so.0 (0x00007fe60e190000)
        libz.so.1 => /lib64/libz.so.1 (0x00007fe60df79000)
        libGL.so.1 => /usr/lib64/libGL.so.1 (0x00007fe60dce1000)
        librt.so.1 => /lib64/librt.so.1 (0x00007fe60dad9000)
        libmount.so.1 => /usr/lib64/libmount.so.1 (0x00007fe60d87c000)
        libselinux.so.1 => /lib64/libselinux.so.1 (0x00007fe60d653000)
        libresolv.so.2 => /lib64/libresolv.so.2 (0x00007fe60d43c000)
        libexpat.so.1 => /usr/lib64/libexpat.so.1 (0x00007fe60d20a000)
        libXau.so.6 => /usr/lib64/libXau.so.6 (0x00007fe60d006000)
        libdatrie.so.1 => /usr/lib64/libdatrie.so.1 (0x00007fe60cdff000)
        libgraphite2.so.3 => /usr/lib64/libgraphite2.so.3 (0x00007fe60cbd9000)
        libbz2.so.1 => /usr/lib64/libbz2.so.1 (0x00007fe60c9bc000)
        libGLdispatch.so.0 => /usr/lib64/libGLdispatch.so.0 (0x00007fe60c700000)
        libGLX.so.0 => /usr/lib64/libGLX.so.0 (0x00007fe60c4ce000)
        libblkid.so.1 => /usr/lib64/libblkid.so.1 (0x00007fe60c27b000)
        libuuid.so.1 => /usr/lib64/libuuid.so.1 (0x00007fe60c073000)
Ich kann ja nun alles möglich sehen, doch etwas für die Datenbank finde ich nicht.

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Lazarus Prog weitergeben

Beitrag von Socke »

hobbyprog hat geschrieben:
Fr 30. Okt 2020, 13:23
Ich kann ja nun alles möglich sehen, doch etwas für die Datenbank finde ich nicht.
Hast du den Befehl auf dem Zielrechner ausgeführt? Falls die Ausgabe dort abweicht, siehst du, welche Bibliotheken dort noch fehlen.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

hobbyprog
Beiträge: 6
Registriert: Mi 28. Okt 2020, 20:17

Re: Lazarus Prog weitergeben

Beitrag von hobbyprog »

OK, verstanden, doch kann dies doch nicht die Lösung sein.
Wenn ich zum Beispiel mein Programm weitergeben will, so kann ich doch nicht jedes Mal händisch schauen welche Unterschiede zwischen meinem Entwicklungsrechner und dem Zielrechner sind. Es muss doch da eine einfachere und vor allen Dingen zuverlässigere Lösung geben, die benötigten Bibliotheken zu identifizieren und ggf mitzugeben bzw dann auf dem Zielrechner mit zu installieren.

PascalDragon
Beiträge: 825
Registriert: Mi 3. Jun 2020, 07:18
OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
CPU-Target: Aarch64 bis Z80 ;)
Wohnort: München

Re: Lazarus Prog weitergeben

Beitrag von PascalDragon »

Die korrekte Variante ist es ein Paket für die jeweilige Distribution zu generieren. Diese enthalten dann Abhängigkeiten zu den benötigten Paketen und die Paketverwaltung installiert dann diese Abhängigkeiten.

Alternativ kannst du dich mal mit Konzepten wie AppImage auseinandersetzen (da hatten wir erst kürzlich einen Thread dazu), da musst du aber selbst schauen, dass alle nötigen Bibliotheken enthalten sind.

Und die SQL Bibliothek wird deshalb nicht angezeigt, weil die MySQL Unit diese dynamisch lädt.
FPC Compiler Entwickler

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: Lazarus Prog weitergeben

Beitrag von Winni »

Hi!

@ theo

Bei der aktuellenSuse Tumbleweed ist libmaria-devel nicht installiert, gehört aber zur Distro.

Kann installiert werden mittels

Code: Alles auswählen

su zypper in libmariadb-devel
Achtung! Wenn man das mittels fpc ausführt auf jeden Fall synchron ausführen!
Je nach Anzahl der Repos kann das schon mal 30 Sekunden dauern, bis er alle
abgeklappert hat, Cache aufgebaut hat etc.

Oder ein script ausführen. Braucht root Rechte.
Kann auch bedenkenlos ausgeführt werden, wenn das Paket schon vorhanden ist.
Dann gibt zypper auf.

@Pascal Dragon:
Das mit den Devel-Paketen ist wie Radio Eriwan:
Im Prinzip ja, aber ....
Ich hab schnon diverse Male erlebt, dass ich Devel-Pakete installiert habe.
Weil es nirgendwo ne Antwort auf mein Problem gab.
Und Zack war es erledigt.
Einmal erinner ich, dass zwischen gtk und X-11 nix funzte ohne Devel-Paket von gtk.

Ich denk mal, dass die Devel-Pakete bei den Entwicklern installiert sind -
wie auch sonst. Und dann werden sie vergessen in den Abhängigkeiten.

Winni

Benutzeravatar
kralle
Lazarusforum e. V.
Beiträge: 988
Registriert: Mi 17. Mär 2010, 14:50
OS, Lazarus, FPC: Linux Mint 20 , FPC 3.3.1 , Lazarus 2.1.0 -Win10 & XE7Pro
CPU-Target: 64Bit
Wohnort: Bremerhaven
Kontaktdaten:

Re: Lazarus Prog weitergeben

Beitrag von kralle »

Moin,

mal ganz doof gefragt:"Kam Lazarus nicht so einstellen, dass Alles was man braucht, in die ausführbare Datei gepackt wird.
Also, nicht schauen ob das was ich brauche irgendwo auf dem System vorhanden ist, sondern "Ich habe alles dabei, was ich brauche".
Oder gibt es dann wieder Stress wegen Copyright, OpenSource usw.?

Gruß HEiko
OS: Manjaro Linux, Debian und Windows 10
FPC-Version: 3.2.2 , Lazarus 3.0
+ Delphi XE7SP1

Warf
Beiträge: 1908
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: Win10 | Linux
CPU-Target: x86_64

Re: Lazarus Prog weitergeben

Beitrag von Warf »

kralle hat geschrieben:
Fr 30. Okt 2020, 16:29
Kam Lazarus nicht so einstellen, dass Alles was man braucht, in die ausführbare Datei gepackt wird.
Theoretisch ja, du kannst alle bibliotheken in die resourcen packen und dann zur laufzeit entpacken, ist aber trozdem manueller aufwand und dann willst du wahrscheinlich lieber ein Container format benutzen, z.B. AppImage. Das ist praktisch ein archiv was alle Daten für die Anwendung enthält und per doppelklick (oder shell) ausgeführt werden kann.
kralle hat geschrieben:
Fr 30. Okt 2020, 16:29
Oder gibt es dann wieder Stress wegen Copyright, OpenSource usw.?
Der kommt natürlich immer dazu. Du musst dir natürlich immer wenn du bibliotheken mitlieferst dir vorher deren Lizenzen durchlesen und schauen was du darfst und was nicht. MariaDB libraries sind unter LGPL v2.1. Du musst also dem nutzer zugang zu den MariaDB library sources sowie der original lizenz gewähren. Im Klartext heißt das du musst irgendwo nen link auf deren webseite einbetten
Zuletzt geändert von Warf am Fr 30. Okt 2020, 19:17, insgesamt 1-mal geändert.

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: Lazarus Prog weitergeben

Beitrag von theo »

Winni hat geschrieben:
Fr 30. Okt 2020, 14:56
@ theo
Bei der aktuellenSuse Tumbleweed ist libmaria-devel nicht installiert, gehört aber zur Distro.
Ja klar, da habe ich mich wohl missverständlich ausgedrückt.
Ich meinte, dass libmariadb-devel auch auf dem anderen Rechner installiert werden sollte.
Wir meinen also das Gleiche.

Antworten