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