Lazarus Prog weitergeben
Lazarus Prog weitergeben
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.
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.
Re: Lazarus Prog weitergeben
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
Meine Glaskugel meint noch dazu: ist auf dem "anderen" Rechner der MariaDB Client installiert?
Grüße
Re: Lazarus Prog weitergeben
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.
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.
- fliegermichl
- Lazarusforum e. V.
- Beiträge: 1639
- Registriert: Do 9. Jun 2011, 09:42
- OS, Lazarus, FPC: Lazarus Fixes FPC Stable
- CPU-Target: 32/64Bit
- Wohnort: Echzell
Re: Lazarus Prog weitergeben
Der Befehl
ldd executable
zeigt die Abhängigkeiten und ob bzw. wo diese gefunden wurden
ldd executable
zeigt die Abhängigkeiten und ob bzw. wo diese gefunden wurden
- af0815
- Lazarusforum e. V.
- Beiträge: 6766
- 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
Ganz einfach da müssen auch auf dem Zielrechner die Pakete für die MySQLverbindung installiert sein. Meist auch die -dev Pakete.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.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- Beiträge: 950
- 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
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.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.
FPC Compiler Entwickler
Re: Lazarus Prog weitergeben
Hmm, ich glaube libmariadb-devel sollte auf OpenSuse schon auch für den Client installiert sein.
Bei der Firewall alles klar?
Bei der Firewall alles klar?
Re: Lazarus Prog weitergeben
Die Ausgabe von meinem kleinen Tool ergibt nun folgendes:fliegermichl hat geschrieben: Do 29. Okt 2020, 09:40 Der Befehl
ldd executable
zeigt die Abhängigkeiten und ob bzw. wo diese gefunden wurden
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)
-
- Lazarusforum e. V.
- Beiträge: 3177
- 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
Hast du den Befehl auf dem Zielrechner ausgeführt? Falls die Ausgabe dort abweicht, siehst du, welche Bibliotheken dort noch fehlen.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.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Re: Lazarus Prog weitergeben
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.
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.
-
- Beiträge: 950
- 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
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.
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
- 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
Hi!
@ theo
Bei der aktuellenSuse Tumbleweed ist libmaria-devel nicht installiert, gehört aber zur Distro.
Kann installiert werden mittels
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
@ 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
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
- kralle
- Lazarusforum e. V.
- Beiträge: 1193
- Registriert: Mi 17. Mär 2010, 14:50
- OS, Lazarus, FPC: Manjaro Linux, Mint und Windows 10 ,Lazarus 3.99, FPC-Version: 3.3.1
- CPU-Target: 64Bit
- Wohnort: Bremerhaven
- Kontaktdaten:
Re: Lazarus Prog weitergeben
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
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, Linux Mint und Windows 10
FPC-Version: 3.3.1 , Lazarus 3.99
+ Delphi XE7SP1
FPC-Version: 3.3.1 , Lazarus 3.99
+ Delphi XE7SP1
-
- Beiträge: 2118
- Registriert: Di 23. Sep 2014, 17:46
- OS, Lazarus, FPC: Win10 | Linux
- CPU-Target: x86_64
Re: Lazarus Prog weitergeben
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:29Kam Lazarus nicht so einstellen, dass Alles was man braucht, in die ausführbare Datei gepackt wird.
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 einbettenkralle hat geschrieben: Fr 30. Okt 2020, 16:29Oder gibt es dann wieder Stress wegen Copyright, OpenSource usw.?
Zuletzt geändert von Warf am Fr 30. Okt 2020, 19:17, insgesamt 1-mal geändert.
Re: Lazarus Prog weitergeben
Ja klar, da habe ich mich wohl missverständlich ausgedrückt.Winni hat geschrieben: Fr 30. Okt 2020, 14:56 @ theo
Bei der aktuellenSuse Tumbleweed ist libmaria-devel nicht installiert, gehört aber zur Distro.
Ich meinte, dass libmariadb-devel auch auf dem anderen Rechner installiert werden sollte.
Wir meinen also das Gleiche.