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

Re: Lazarus Prog weitergeben

Beitrag von hobbyprog »

Mann ist das kompliziert. Das letzte mal das ich mit Pascal programmiert hatte, war mit Delphi 2 glaube ich. Damals konnte ich mithilfe eines Programms, dessen Namen mir leider entfallen ist, unter Windows ein super Installationsimage erstellen. Programm war bei Delphi als Zusatz dabei. Die Weitergabe war da vollkommen einfach. Das Programm hatte alle benötigten Daten abgefragt und dann alle DLL's und anderen Kram zu einem Installationsimage automatisch zusammengebaut. Danach nur die Diskette / CD weitergeben, Setup.exe ausführen und auf dem Zielrechner lief mein Programm dann ohne Fehler.
Mal ganz ehrlich gefragt, warum gibt es so etwas unter Linux nicht? Ich finde Linux Klasse und nutze es privat nur. Doch wieso ist es so wahnsinnig kompliziert mal eben ein kleines Programm weitergeben zu wollen? Hier sehe ich echt noch einen Markt für Lazarus. Eben ein Tool das für meine Zielplattform aus meinem Programm mir ein RPM / DEB Datei baut und dabei alles reinpackt was später benötigt wird. Ist dass den für die Profis so schwer zu programmieren? Ich wäre auf jeden Fall ein dankbarer Abnehmer davon.
Privat nutze ich OpenSuse und bin damit echt zufrieden. Ich glaube aber auch, dass solange solche Kleinigkeiten nicht einfach und leicht zu bedienen funktionieren, Linux niemals aus dem Geek Stadium heraus kommen wird. :-(

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

Re: Lazarus Prog weitergeben

Beitrag von Lemmy »

Dann verwende einfach eine Komponentenlib, die ohne den jeweiligen Datenbankclient auskommt (z.B. von DevArt), dann ist alles in einer Anwendung drin.

Und bzgl. Libs und Linux: das ist halt dort der Stand. Man muss da etwas drauf achten, aber am Ende ist ein "ldd exe" halt Teil des Buildprozesses der unter Linux notwendig ist...


[Edit]: Kann natürlich sein, dass deine Anwendung (aus welchem Grund auch immer) eine Abhängigkeit mit bringt, die in einer bestimmten Linuxdistribution nicht standardmäßig installiert ist.

Benutzeravatar
kralle
Lazarusforum e. V.
Beiträge: 712
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,
hobbyprog hat geschrieben:
Fr 30. Okt 2020, 20:36
Das letzte mal das ich mit Pascal programmiert hatte, war mit Delphi 2 glaube ich. Damals konnte ich mithilfe eines Programms, dessen Namen mir leider entfallen ist, unter Windows ein super Installationsimage erstellen.
Meinst Du so etwas wie "Inno Setup" (https://jrsoftware.org/ishelp/)?

Gruß HEiko
Linux Mint 20, FPC-Version: 3.3.1 , Lazarus 2.1.0
+ Delphi XE7SP1

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

Re: Lazarus Prog weitergeben

Beitrag von hobbyprog »

Ja, so etwas in der Art.
Im Moment tue ich mich einfach nur sehr schwer mit Linux um mein Programm zum laufen zu bringen.

Benutzeravatar
kralle
Lazarusforum e. V.
Beiträge: 712
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 »

Wenn es um das erstellen des Installers geht, gibt es laut "https://alternativeto.net/software/inno ... form=linux" ein paar Programme für Linux, die das machen was "Inno Setup" macht.

Gruß HEiko
Linux Mint 20, FPC-Version: 3.3.1 , Lazarus 2.1.0
+ Delphi XE7SP1

PascalDragon
Beiträge: 179
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 »

hobbyprog hat geschrieben:
Fr 30. Okt 2020, 20:36
Mann ist das kompliziert. Das letzte mal das ich mit Pascal programmiert hatte, war mit Delphi 2 glaube ich. Damals konnte ich mithilfe eines Programms, dessen Namen mir leider entfallen ist, unter Windows ein super Installationsimage erstellen. Programm war bei Delphi als Zusatz dabei. Die Weitergabe war da vollkommen einfach. Das Programm hatte alle benötigten Daten abgefragt und dann alle DLL's und anderen Kram zu einem Installationsimage automatisch zusammengebaut. Danach nur die Diskette / CD weitergeben, Setup.exe ausführen und auf dem Zielrechner lief mein Programm dann ohne Fehler.
Das ist eben Windows gewesen. Es gibt so gesehen nur ein einziges Windows (man kann für den Punkt hier sowohl die verschiedenen Versionen und Varianten als auch die Alternative ReactOS ignorieren) an das man sich richten muss und noch dazu war es da schon immer üblich, dass Anwendungen ihre eigenen Abhängigkeiten mitbringen, eben weil es keine zentrale Paketverwaltung oder sowas in der Art gibt.
hobbyprog hat geschrieben:
Fr 30. Okt 2020, 20:36
Mal ganz ehrlich gefragt, warum gibt es so etwas unter Linux nicht? Ich finde Linux Klasse und nutze es privat nur. Doch wieso ist es so wahnsinnig kompliziert mal eben ein kleines Programm weitergeben zu wollen? Hier sehe ich echt noch einen Markt für Lazarus. Eben ein Tool das für meine Zielplattform aus meinem Programm mir ein RPM / DEB Datei baut und dabei alles reinpackt was später benötigt wird. Ist dass den für die Profis so schwer zu programmieren? Ich wäre auf jeden Fall ein dankbarer Abnehmer davon.
Doch, gibt es, es ist nur so, dass es eben nicht das eine Linux gibt. Jede Linux Distribution hat ihre eigene Paketverwaltung mit ihrem eigenen Paketformat (auch wenn manche Distributionen hier gleiche Formate nutzen wie zum Beispiel Debian und Ubuntu, die beide APT nutzen). Und ein Programm das brav sein möchte stellt eben Pakete für diese Distributionen bereit (oder wenn dein Programm populär genug ist, gibt es Leute, die sich darum kümmern; es gibt zum Beispiel Pakete für FPC in ArchLinux, die von Leuten gepflegt werden, die FPC eben dort im Zusammenspiel mit der Paketverwaltung (pacman) nutzen möchten).

Alternativ gibt es seit einigen Jahren das sogenannte AppImage Format (oder ähnliche Containerformate), welche alle Abhängigkeiten enthalten und so gesehen unabhängig von der Distribution sind. Dies hat für den Ersteller den Vorteil, dass dieser sich nur einmal darum kümmern braucht, für den Anwender aber eventuell den Nachteil, dass er schauen muss, ob alle Programme ihre Bibliotheken auch korrekt aktualisieren. Gutes Beispiel für sowas ist eine Abhängigkeit auf OpenSSL: wenn mal wieder eine Sicherheitslücke gefunden ist, aktualisiert man im Normalfall die Pakete der Distro und fertig ist der Lack. Mit AppImage Anwendungen muss ich nachschauen, ob der Hersteller eventuell ein neues Image bereitstellt in dem diese Lücke ebenfalls behoben ist (quasi wie in Windows, wo alle Anwendungen auch ihre eigenen Abhängigkeiten mitbringen). Das macht die Sache schon viel schwieriger und mich persönlich gegenüber AppImage und Co. mehr als skeptisch.
Lemmy hat geschrieben:
Fr 30. Okt 2020, 20:56
Und bzgl. Libs und Linux: das ist halt dort der Stand. Man muss da etwas drauf achten, aber am Ende ist ein "ldd exe" halt Teil des Buildprozesses der unter Linux notwendig ist...
Das funktioniert aber nur, wenn die Anwendung diese auch wirklich zur Linkzeit referenziert. Die ganzen Datenbanktreiber, die in FPC enthalten sind, sind auf dynamisches Laden ausgelegt. Andernfalls müssten für Projekte wie LazDataDesktop immer die Bibliotheken für alle unterstützten Datenbanken vorhanden sein anstatt nur die, für welche man eine Verbindung aufbaut.
FPC Compiler Entwickler

Warf
Beiträge: 1524
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: MacOS | Win 10 | Linux
CPU-Target: x86_64
Wohnort: Aachen

Re: Lazarus Prog weitergeben

Beitrag von Warf »

hobbyprog hat geschrieben:
Fr 30. Okt 2020, 20:36
Mal ganz ehrlich gefragt, warum gibt es so etwas unter Linux nicht? Ich finde Linux Klasse und nutze es privat nur. Doch wieso ist es so wahnsinnig kompliziert mal eben ein kleines Programm weitergeben zu wollen? Hier sehe ich echt noch einen Markt für Lazarus. Eben ein Tool das für meine Zielplattform aus meinem Programm mir ein RPM / DEB Datei baut und dabei alles reinpackt was später benötigt wird. Ist dass den für die Profis so schwer zu programmieren? Ich wäre auf jeden Fall ein dankbarer Abnehmer davon.
Das ist ganz einfach das resultat aus zentraler paketverwaltung + verschiedene distributionen. Linux benutzt eine zentrale paketverwaltung, die Idee dabei ist, viele programme teilen sich verschiedene Bibliotheken, wär also doof die für jedes programm mitliefern zu müssen, jedes programm muss die einzeln up to date halten, etc. Die so genannte DLL Hell. Linus Systeme lösen das in dem du deine Software und Bibliotheken über die Paketverwaltung installierst. Eine software hat dabei Dependencies und beim Installieren schaut der Paketmanager ob die bereits installiert sind und wenn nicht kann er sie aus den Repositories runterladen.

An sich eine tolle Lösung, zum vergleich zu Windows, sagen wir mal ich will SQLite verwenden, erst mal in Lazarus das SQLite Package installieren und neukompilieren. Jetzt braucht Lazarus die SQLite.dll, also kopier ich die in das Lazarus Verzeichnis. Jetzt mach ich ein Projekt was SQLite verwenden soll, also muss ich die DLL in dieses Verzeichnis kopieren. Ich hab ein separates Verzeichnis für Debug und Release, dann muss die DLL wohl in beide rein. Jetzt hab ich die selbe DLL bereits schon an 3 verschiedenen orten, wenn ein update kommt muss ich alle 3 ersetzen, und das manuell.
Auf Linux installier ich mir einmal libsqlite3-dev und es funktioniert einfach.

Das Problem das mit Linux dazu kommt ist, Linux ist kein Betriebsystem sondern nur ein Kernel. OpenSuse, Debian, Arch, Fedora, etc. das sind alles eigene Betriebsysteme. Klar funktionieren sie sehr ähnlich weil sie sich an diverse standards wie den POSIX standard halten, aber es sind dennoch verschiedene Betriebsysteme die verschiedene design entscheidungen treffen können. Eine dieser Entscheidungen ist wie die paketverwaltung implementiert werden soll, und da gibt es heftige Debatten. Zwar verwenden die meisten einen zentralen Paketmanager, allerdings sind die entwickler von nahezu jeder großen Distribution der Meinung sie könnten es besser als die anderen und machen daher ein eigenes produkt. Arch hat pacman, Debian hat apt und dpkg, suse hat zypper und rpm, alpine hat apk und Fedora hat dnf und rpm. Und richtig bescheuert wirds erst wenn man sieht das zypper und apt so ähnlich von der funktionalität sind das es wrapper scripts gibt die das eine auf das andere mappen sodass du apt befehele auf suse machen kannst und das resultat sich exakt so verhält wie sich apt auf debian verhalten würde.
Würde mich nicht wundern wenn es irgendwo auch eine sehr exotische Linux distro existiert die einfach keinen paketmanager verwendet sondern den Windows approach nutzt. Ubuntu ist mittlerweile auch dabei alles auf Snap umzustellen, was ein container format ist ähnlich wie AppImage, welche über einen von Canonical moderierten Store installiert wird, und damit mehr und mehr Richtung MacOS geht.

Die Tatsache das jede Distribution seine eigenen Sache macht ist zwar toll was Auswahlmöglichkeit betrifft, macht aber leider auch sowohl die Entwicklung für diese systeme sowie auch die benutzung manchmal zum verzweifeln. Paketmanager sind da aber auch nur eins von vielen Problemen

Antworten