Application deployment

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
HB9FIH
Beiträge: 11
Registriert: Mi 20. Jul 2022, 10:45
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: 64Bit
Wohnort: 8222 Beringen (CH)
Kontaktdaten:

Application deployment

Beitrag von HB9FIH »

Hallo,
Habe unter Mint 20.3 ein kleines Programm geschrieben. Rechnungsstellung für das neue Schweizer Zahlungssystem QR.
Nun wollte ich dies auf einer anderen Linux Distribution testen.
Habe einen Ubuntu 22.04 LTS installiert.
T'ja - nicht ganz unerwartet: es fehlt was (vorerst): libsqlite3.so
Aber dasselbe SQLite3 ist auch auf Ubuntu installiert. Habe die und das versucht (symlinks anpassen etc pp) aber komm zu keinem Erfolgs-Ergebnis.

Unter Delphi / WIN.. habe ich immer alles was für die Applikation nötig ist in dessen Programmverzeichnis (3-4 dll) - und das Vorhandensein auch geprüft. Hatte damit 22 Jahre keinerlei Probleme.

Darf ich fragen wie Ihr so was löst ?

Erich

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

Re: Application deployment

Beitrag von theo »

Könntest du die Fehlermeldungen angeben?
"Es fehlt was" und "Komm zu keinem Erfolgs-Ergebnis" sagen nicht viel aus.
Vielleicht mal "libsqlite3-dev" o.ä. installieren. Weiss aber nicht, ob das hier das Problem ist.

Und Linux ist nicht Windows - Shared Objects liegen normalerweise nicht im Programmverzeichnis.

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

Re: Application deployment

Beitrag von fliegermichl »

Man kann unter Linux mit "file myexecutable" in Erfahrung bringen, welche Libs gebraucht werden und welche (falls gefunden) verwendet werden.

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

Re: Application deployment

Beitrag von theo »

fliegermichl hat geschrieben:
Mi 20. Jul 2022, 12:37
Man kann unter Linux mit "file myexecutable" in Erfahrung bringen, welche Libs gebraucht werden und welche (falls gefunden) verwendet werden.
"File" kenne ich nicht für diesen Zweck.

Code: Alles auswählen

ldd ./project1
oder

Code: Alles auswählen

readelf -d ./project
Das funzt aber afaik nur für statisch gelinkte SO. Das ist bei sqlite3 aber mMn nicht der Fall.

Wahrscheinlich fehlt "libsqlite3-dev"

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

Re: Application deployment

Beitrag von fliegermichl »

Richtig, ldd war das.

HB9FIH
Beiträge: 11
Registriert: Mi 20. Jul 2022, 10:45
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: 64Bit
Wohnort: 8222 Beringen (CH)
Kontaktdaten:

Re: Application deployment

Beitrag von HB9FIH »

Danke für die aufschlussreichen Antworten

missing libsqlite3.so war die Fehlermeldung.

Die Befehle ldd readlf und file kannte ich noch nicht
Bei ldd gab es keinen Eintrag über libsqlite3.so - dh es ist dynamisch (ich denke)

Nun habe ich das dev Paket installiert.
Ergebnis: dieser Fehler ist weg.
Jedoch nun kommt der nächste: SQLite3Connection1: Unable to open DatabaseFile (habe aber die funktionierende DB vom Entwicklungs PC rüberkopiert) nun denn :
Ich suche nun weiter (zB ändere den Programmstart und baue Fehlermeldungen ein)...denke da komm ich sukksessive hin (und lerne dabei)

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6208
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: Application deployment

Beitrag von af0815 »

HB9FIH hat geschrieben:
Do 21. Jul 2022, 08:58
Jedoch nun kommt der nächste: SQLite3Connection1: Unable to open DatabaseFile (habe aber die funktionierende DB vom Entwicklungs PC rüberkopiert) nun
Lass dir den Pfad mal ausgeben, unmittelbar vor dem Open. Ich wette, das die Pfade nicht stimmen. Die Pfade sollte man immer dynamisch erzeugen und nicht die aus dem OI verwenden, das geht sonst immer schief, wenn ein anderer Benutzer die verwendet. Ausserdem habe ich die Erfahrung gemacht, immer die Pfade absolut zu verwenden und keine Tilde etc. Auch relativ zur vermuteten aktuellen Position in der Dateistruktur ist fehlerbehaftet, die kann manchmal ganz anders sein als vermutet :-)
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

HB9FIH
Beiträge: 11
Registriert: Mi 20. Jul 2022, 10:45
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: 64Bit
Wohnort: 8222 Beringen (CH)
Kontaktdaten:

Re: Application deployment

Beitrag von HB9FIH »

Ja ist klar -
Verwende auch immer absolute Pfadangaben.
Hole den Pfad (getcurrentdir) und setze das für den run.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6208
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: Application deployment

Beitrag von af0815 »

HB9FIH hat geschrieben:
Do 21. Jul 2022, 11:50
Hole den Pfad (getcurrentdir) und setze das für den run.
Meiner Erfahrung nach muss das aktuelle Verzeichnis, nicht das sein, was man erwartet :-) Man kann Programme auch in anderen Verzeichnissen starten, als dem Aktuellen. Bin da schon mal böse überrascht worden. Deswegen das mit der vermuteten Position im Post vorher. Oder man hat es selbst geändert im Programm, aber vergessen, das das wo verwendet wird :shock:
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

shokwave
Beiträge: 470
Registriert: Do 15. Nov 2007, 16:58
OS, Lazarus, FPC: Win11/Ubuntu Budgie (L 3.0 FPC 3.2.2)
CPU-Target: i386, x64
Wohnort: Gera

Re: Application deployment

Beitrag von shokwave »

HB9FIH hat geschrieben:
Do 21. Jul 2022, 11:50
Ja ist klar -
Verwende auch immer absolute Pfadangaben.
Hole den Pfad (getcurrentdir) und setze das für den run.
Den Pfad von meinem Executeable hole ich mir, im OnCreate der MainForm, mit

Code: Alles auswählen

ExecPath := ExtractFilePath(ParamStr(0));
aber vielleicht kennt hier jemand noch eine bessere Methode.
mfg Ingo

Benutzeravatar
Ally
Beiträge: 263
Registriert: Do 11. Jun 2009, 09:25
OS, Lazarus, FPC: Win und Lazarus Stable release
CPU-Target: x64

Re: Application deployment

Beitrag von Ally »

So geht es auch:

Code: Alles auswählen

ExecPath := ExtractFilePath(Application.ExeName);
Gruß Roland

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: Application deployment

Beitrag von Winni »

Ally hat geschrieben:
Do 21. Jul 2022, 17:45
So geht es auch:

Code: Alles auswählen

ExecPath := ExtractFilePath(Application.ExeName);
Gruß Roland

Hi!

Das ist nicht falsch. Seit ein paar Versionen geht's aber noch einfacher:

Code: Alles auswählen

ExecPath := Application.Location;
Wenn man Langeweile hat, darf man die Release-Notes lesen ....


Winni

HB9FIH
Beiträge: 11
Registriert: Mi 20. Jul 2022, 10:45
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: 64Bit
Wohnort: 8222 Beringen (CH)
Kontaktdaten:

Re: Application deployment

Beitrag von HB9FIH »

Danke, man liest und lernt viel aus den Antworten heraus.

Ich habe es nun im Griff. Kann das Programm ohne Probleme in Ubuntu 22.04 laufen lassen.
Das Arbeitsverzeichnis und das Datenbankverzeichnis kann man separat machen wenn man will.
Nur noch ein minor Problem - eine Grafik erscheint im Ubuntu noch obgleich vorhanden - muss nachhaltiger nachsehen.

73 Erich

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1498
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: Application deployment

Beitrag von corpsman »

Mal so blöd gefragt, warum nutzt ihr nicht eine Variante der "GetAppConfig*"

Code: Alles auswählen


Function GetAppConfigDir(Global : Boolean) : String;
Function GetAppConfigFile(Global : Boolean) : String;
Function GetAppConfigFile(Global : Boolean; SubDir : Boolean) : String;    
          
Da kriegt ihr System unabhängig immer nen Pfad / ein File auf das ihr schreiben dürft und das dann passend abgelegt wird...
--
Just try it

HB9FIH
Beiträge: 11
Registriert: Mi 20. Jul 2022, 10:45
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: 64Bit
Wohnort: 8222 Beringen (CH)
Kontaktdaten:

Re: Application deployment

Beitrag von HB9FIH »

Ja, kenne ich.

Ich nehm für die Applikation das Current Dir, wenn ich in einem Parameter nicht was spezielles angebe.

Der Designer von LAzReport legt die config im AppConfig Dir ab, das lasse ich so.

Gute Zeit

Antworten